1
0
mirror of https://github.com/StackExchange/dnscontrol.git synced 2024-05-11 05:55:12 +00:00
Files
stackexchange-dnscontrol/docs/flattener/flattener.js
2017-09-29 15:30:36 -04:00

103445 lines
6.2 MiB

"use strict";
(function() {
Error.stackTraceLimit = Infinity;
var $global, $module;
if (typeof window !== "undefined") { /* web page */
$global = window;
} else if (typeof self !== "undefined") { /* web worker */
$global = self;
} else if (typeof global !== "undefined") { /* Node.js */
$global = global;
$global.require = require;
} else { /* others (e.g. Nashorn) */
$global = this;
}
if ($global === undefined || $global.Array === undefined) {
throw new Error("no global object found");
}
if (typeof module !== "undefined") {
$module = module;
}
var $packages = {}, $idCounter = 0;
var $keys = function(m) { return m ? Object.keys(m) : []; };
var $flushConsole = function() {};
var $throwRuntimeError; /* set by package "runtime" */
var $throwNilPointerError = function() { $throwRuntimeError("invalid memory address or nil pointer dereference"); };
var $call = function(fn, rcvr, args) { return fn.apply(rcvr, args); };
var $makeFunc = function(fn) { return function() { return $externalize(fn(this, new ($sliceType($jsObjectPtr))($global.Array.prototype.slice.call(arguments, []))), $emptyInterface); }; };
var $unused = function(v) {};
var $mapArray = function(array, f) {
var newArray = new array.constructor(array.length);
for (var i = 0; i < array.length; i++) {
newArray[i] = f(array[i]);
}
return newArray;
};
var $methodVal = function(recv, name) {
var vals = recv.$methodVals || {};
recv.$methodVals = vals; /* noop for primitives */
var f = vals[name];
if (f !== undefined) {
return f;
}
var method = recv[name];
f = function() {
$stackDepthOffset--;
try {
return method.apply(recv, arguments);
} finally {
$stackDepthOffset++;
}
};
vals[name] = f;
return f;
};
var $methodExpr = function(typ, name) {
var method = typ.prototype[name];
if (method.$expr === undefined) {
method.$expr = function() {
$stackDepthOffset--;
try {
if (typ.wrapped) {
arguments[0] = new typ(arguments[0]);
}
return Function.call.apply(method, arguments);
} finally {
$stackDepthOffset++;
}
};
}
return method.$expr;
};
var $ifaceMethodExprs = {};
var $ifaceMethodExpr = function(name) {
var expr = $ifaceMethodExprs["$" + name];
if (expr === undefined) {
expr = $ifaceMethodExprs["$" + name] = function() {
$stackDepthOffset--;
try {
return Function.call.apply(arguments[0][name], arguments);
} finally {
$stackDepthOffset++;
}
};
}
return expr;
};
var $subslice = function(slice, low, high, max) {
if (low < 0 || high < low || max < high || high > slice.$capacity || max > slice.$capacity) {
$throwRuntimeError("slice bounds out of range");
}
var s = new slice.constructor(slice.$array);
s.$offset = slice.$offset + low;
s.$length = slice.$length - low;
s.$capacity = slice.$capacity - low;
if (high !== undefined) {
s.$length = high - low;
}
if (max !== undefined) {
s.$capacity = max - low;
}
return s;
};
var $substring = function(str, low, high) {
if (low < 0 || high < low || high > str.length) {
$throwRuntimeError("slice bounds out of range");
}
return str.substring(low, high);
};
var $sliceToArray = function(slice) {
if (slice.$array.constructor !== Array) {
return slice.$array.subarray(slice.$offset, slice.$offset + slice.$length);
}
return slice.$array.slice(slice.$offset, slice.$offset + slice.$length);
};
var $decodeRune = function(str, pos) {
var c0 = str.charCodeAt(pos);
if (c0 < 0x80) {
return [c0, 1];
}
if (c0 !== c0 || c0 < 0xC0) {
return [0xFFFD, 1];
}
var c1 = str.charCodeAt(pos + 1);
if (c1 !== c1 || c1 < 0x80 || 0xC0 <= c1) {
return [0xFFFD, 1];
}
if (c0 < 0xE0) {
var r = (c0 & 0x1F) << 6 | (c1 & 0x3F);
if (r <= 0x7F) {
return [0xFFFD, 1];
}
return [r, 2];
}
var c2 = str.charCodeAt(pos + 2);
if (c2 !== c2 || c2 < 0x80 || 0xC0 <= c2) {
return [0xFFFD, 1];
}
if (c0 < 0xF0) {
var r = (c0 & 0x0F) << 12 | (c1 & 0x3F) << 6 | (c2 & 0x3F);
if (r <= 0x7FF) {
return [0xFFFD, 1];
}
if (0xD800 <= r && r <= 0xDFFF) {
return [0xFFFD, 1];
}
return [r, 3];
}
var c3 = str.charCodeAt(pos + 3);
if (c3 !== c3 || c3 < 0x80 || 0xC0 <= c3) {
return [0xFFFD, 1];
}
if (c0 < 0xF8) {
var r = (c0 & 0x07) << 18 | (c1 & 0x3F) << 12 | (c2 & 0x3F) << 6 | (c3 & 0x3F);
if (r <= 0xFFFF || 0x10FFFF < r) {
return [0xFFFD, 1];
}
return [r, 4];
}
return [0xFFFD, 1];
};
var $encodeRune = function(r) {
if (r < 0 || r > 0x10FFFF || (0xD800 <= r && r <= 0xDFFF)) {
r = 0xFFFD;
}
if (r <= 0x7F) {
return String.fromCharCode(r);
}
if (r <= 0x7FF) {
return String.fromCharCode(0xC0 | r >> 6, 0x80 | (r & 0x3F));
}
if (r <= 0xFFFF) {
return String.fromCharCode(0xE0 | r >> 12, 0x80 | (r >> 6 & 0x3F), 0x80 | (r & 0x3F));
}
return String.fromCharCode(0xF0 | r >> 18, 0x80 | (r >> 12 & 0x3F), 0x80 | (r >> 6 & 0x3F), 0x80 | (r & 0x3F));
};
var $stringToBytes = function(str) {
var array = new Uint8Array(str.length);
for (var i = 0; i < str.length; i++) {
array[i] = str.charCodeAt(i);
}
return array;
};
var $bytesToString = function(slice) {
if (slice.$length === 0) {
return "";
}
var str = "";
for (var i = 0; i < slice.$length; i += 10000) {
str += String.fromCharCode.apply(undefined, slice.$array.subarray(slice.$offset + i, slice.$offset + Math.min(slice.$length, i + 10000)));
}
return str;
};
var $stringToRunes = function(str) {
var array = new Int32Array(str.length);
var rune, j = 0;
for (var i = 0; i < str.length; i += rune[1], j++) {
rune = $decodeRune(str, i);
array[j] = rune[0];
}
return array.subarray(0, j);
};
var $runesToString = function(slice) {
if (slice.$length === 0) {
return "";
}
var str = "";
for (var i = 0; i < slice.$length; i++) {
str += $encodeRune(slice.$array[slice.$offset + i]);
}
return str;
};
var $copyString = function(dst, src) {
var n = Math.min(src.length, dst.$length);
for (var i = 0; i < n; i++) {
dst.$array[dst.$offset + i] = src.charCodeAt(i);
}
return n;
};
var $copySlice = function(dst, src) {
var n = Math.min(src.$length, dst.$length);
$copyArray(dst.$array, src.$array, dst.$offset, src.$offset, n, dst.constructor.elem);
return n;
};
var $copyArray = function(dst, src, dstOffset, srcOffset, n, elem) {
if (n === 0 || (dst === src && dstOffset === srcOffset)) {
return;
}
if (src.subarray) {
dst.set(src.subarray(srcOffset, srcOffset + n), dstOffset);
return;
}
switch (elem.kind) {
case $kindArray:
case $kindStruct:
if (dst === src && dstOffset > srcOffset) {
for (var i = n - 1; i >= 0; i--) {
elem.copy(dst[dstOffset + i], src[srcOffset + i]);
}
return;
}
for (var i = 0; i < n; i++) {
elem.copy(dst[dstOffset + i], src[srcOffset + i]);
}
return;
}
if (dst === src && dstOffset > srcOffset) {
for (var i = n - 1; i >= 0; i--) {
dst[dstOffset + i] = src[srcOffset + i];
}
return;
}
for (var i = 0; i < n; i++) {
dst[dstOffset + i] = src[srcOffset + i];
}
};
var $clone = function(src, type) {
var clone = type.zero();
type.copy(clone, src);
return clone;
};
var $pointerOfStructConversion = function(obj, type) {
if(obj.$proxies === undefined) {
obj.$proxies = {};
obj.$proxies[obj.constructor.string] = obj;
}
var proxy = obj.$proxies[type.string];
if (proxy === undefined) {
var properties = {};
for (var i = 0; i < type.elem.fields.length; i++) {
(function(fieldProp) {
properties[fieldProp] = {
get: function() { return obj[fieldProp]; },
set: function(value) { obj[fieldProp] = value; }
};
})(type.elem.fields[i].prop);
}
proxy = Object.create(type.prototype, properties);
proxy.$val = proxy;
obj.$proxies[type.string] = proxy;
proxy.$proxies = obj.$proxies;
}
return proxy;
};
var $append = function(slice) {
return $internalAppend(slice, arguments, 1, arguments.length - 1);
};
var $appendSlice = function(slice, toAppend) {
if (toAppend.constructor === String) {
var bytes = $stringToBytes(toAppend);
return $internalAppend(slice, bytes, 0, bytes.length);
}
return $internalAppend(slice, toAppend.$array, toAppend.$offset, toAppend.$length);
};
var $internalAppend = function(slice, array, offset, length) {
if (length === 0) {
return slice;
}
var newArray = slice.$array;
var newOffset = slice.$offset;
var newLength = slice.$length + length;
var newCapacity = slice.$capacity;
if (newLength > newCapacity) {
newOffset = 0;
newCapacity = Math.max(newLength, slice.$capacity < 1024 ? slice.$capacity * 2 : Math.floor(slice.$capacity * 5 / 4));
if (slice.$array.constructor === Array) {
newArray = slice.$array.slice(slice.$offset, slice.$offset + slice.$length);
newArray.length = newCapacity;
var zero = slice.constructor.elem.zero;
for (var i = slice.$length; i < newCapacity; i++) {
newArray[i] = zero();
}
} else {
newArray = new slice.$array.constructor(newCapacity);
newArray.set(slice.$array.subarray(slice.$offset, slice.$offset + slice.$length));
}
}
$copyArray(newArray, array, newOffset + slice.$length, offset, length, slice.constructor.elem);
var newSlice = new slice.constructor(newArray);
newSlice.$offset = newOffset;
newSlice.$length = newLength;
newSlice.$capacity = newCapacity;
return newSlice;
};
var $equal = function(a, b, type) {
if (type === $jsObjectPtr) {
return a === b;
}
switch (type.kind) {
case $kindComplex64:
case $kindComplex128:
return a.$real === b.$real && a.$imag === b.$imag;
case $kindInt64:
case $kindUint64:
return a.$high === b.$high && a.$low === b.$low;
case $kindArray:
if (a.length !== b.length) {
return false;
}
for (var i = 0; i < a.length; i++) {
if (!$equal(a[i], b[i], type.elem)) {
return false;
}
}
return true;
case $kindStruct:
for (var i = 0; i < type.fields.length; i++) {
var f = type.fields[i];
if (!$equal(a[f.prop], b[f.prop], f.typ)) {
return false;
}
}
return true;
case $kindInterface:
return $interfaceIsEqual(a, b);
default:
return a === b;
}
};
var $interfaceIsEqual = function(a, b) {
if (a === $ifaceNil || b === $ifaceNil) {
return a === b;
}
if (a.constructor !== b.constructor) {
return false;
}
if (a.constructor === $jsObjectPtr) {
return a.object === b.object;
}
if (!a.constructor.comparable) {
$throwRuntimeError("comparing uncomparable type " + a.constructor.string);
}
return $equal(a.$val, b.$val, a.constructor);
};
var $min = Math.min;
var $mod = function(x, y) { return x % y; };
var $parseInt = parseInt;
var $parseFloat = function(f) {
if (f !== undefined && f !== null && f.constructor === Number) {
return f;
}
return parseFloat(f);
};
var $froundBuf = new Float32Array(1);
var $fround = Math.fround || function(f) {
$froundBuf[0] = f;
return $froundBuf[0];
};
var $imul = Math.imul || function(a, b) {
var ah = (a >>> 16) & 0xffff;
var al = a & 0xffff;
var bh = (b >>> 16) & 0xffff;
var bl = b & 0xffff;
return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0) >> 0);
};
var $floatKey = function(f) {
if (f !== f) {
$idCounter++;
return "NaN$" + $idCounter;
}
return String(f);
};
var $flatten64 = function(x) {
return x.$high * 4294967296 + x.$low;
};
var $shiftLeft64 = function(x, y) {
if (y === 0) {
return x;
}
if (y < 32) {
return new x.constructor(x.$high << y | x.$low >>> (32 - y), (x.$low << y) >>> 0);
}
if (y < 64) {
return new x.constructor(x.$low << (y - 32), 0);
}
return new x.constructor(0, 0);
};
var $shiftRightInt64 = function(x, y) {
if (y === 0) {
return x;
}
if (y < 32) {
return new x.constructor(x.$high >> y, (x.$low >>> y | x.$high << (32 - y)) >>> 0);
}
if (y < 64) {
return new x.constructor(x.$high >> 31, (x.$high >> (y - 32)) >>> 0);
}
if (x.$high < 0) {
return new x.constructor(-1, 4294967295);
}
return new x.constructor(0, 0);
};
var $shiftRightUint64 = function(x, y) {
if (y === 0) {
return x;
}
if (y < 32) {
return new x.constructor(x.$high >>> y, (x.$low >>> y | x.$high << (32 - y)) >>> 0);
}
if (y < 64) {
return new x.constructor(0, x.$high >>> (y - 32));
}
return new x.constructor(0, 0);
};
var $mul64 = function(x, y) {
var high = 0, low = 0;
if ((y.$low & 1) !== 0) {
high = x.$high;
low = x.$low;
}
for (var i = 1; i < 32; i++) {
if ((y.$low & 1<<i) !== 0) {
high += x.$high << i | x.$low >>> (32 - i);
low += (x.$low << i) >>> 0;
}
}
for (var i = 0; i < 32; i++) {
if ((y.$high & 1<<i) !== 0) {
high += x.$low << i;
}
}
return new x.constructor(high, low);
};
var $div64 = function(x, y, returnRemainder) {
if (y.$high === 0 && y.$low === 0) {
$throwRuntimeError("integer divide by zero");
}
var s = 1;
var rs = 1;
var xHigh = x.$high;
var xLow = x.$low;
if (xHigh < 0) {
s = -1;
rs = -1;
xHigh = -xHigh;
if (xLow !== 0) {
xHigh--;
xLow = 4294967296 - xLow;
}
}
var yHigh = y.$high;
var yLow = y.$low;
if (y.$high < 0) {
s *= -1;
yHigh = -yHigh;
if (yLow !== 0) {
yHigh--;
yLow = 4294967296 - yLow;
}
}
var high = 0, low = 0, n = 0;
while (yHigh < 2147483648 && ((xHigh > yHigh) || (xHigh === yHigh && xLow > yLow))) {
yHigh = (yHigh << 1 | yLow >>> 31) >>> 0;
yLow = (yLow << 1) >>> 0;
n++;
}
for (var i = 0; i <= n; i++) {
high = high << 1 | low >>> 31;
low = (low << 1) >>> 0;
if ((xHigh > yHigh) || (xHigh === yHigh && xLow >= yLow)) {
xHigh = xHigh - yHigh;
xLow = xLow - yLow;
if (xLow < 0) {
xHigh--;
xLow += 4294967296;
}
low++;
if (low === 4294967296) {
high++;
low = 0;
}
}
yLow = (yLow >>> 1 | yHigh << (32 - 1)) >>> 0;
yHigh = yHigh >>> 1;
}
if (returnRemainder) {
return new x.constructor(xHigh * rs, xLow * rs);
}
return new x.constructor(high * s, low * s);
};
var $divComplex = function(n, d) {
var ninf = n.$real === Infinity || n.$real === -Infinity || n.$imag === Infinity || n.$imag === -Infinity;
var dinf = d.$real === Infinity || d.$real === -Infinity || d.$imag === Infinity || d.$imag === -Infinity;
var nnan = !ninf && (n.$real !== n.$real || n.$imag !== n.$imag);
var dnan = !dinf && (d.$real !== d.$real || d.$imag !== d.$imag);
if(nnan || dnan) {
return new n.constructor(NaN, NaN);
}
if (ninf && !dinf) {
return new n.constructor(Infinity, Infinity);
}
if (!ninf && dinf) {
return new n.constructor(0, 0);
}
if (d.$real === 0 && d.$imag === 0) {
if (n.$real === 0 && n.$imag === 0) {
return new n.constructor(NaN, NaN);
}
return new n.constructor(Infinity, Infinity);
}
var a = Math.abs(d.$real);
var b = Math.abs(d.$imag);
if (a <= b) {
var ratio = d.$real / d.$imag;
var denom = d.$real * ratio + d.$imag;
return new n.constructor((n.$real * ratio + n.$imag) / denom, (n.$imag * ratio - n.$real) / denom);
}
var ratio = d.$imag / d.$real;
var denom = d.$imag * ratio + d.$real;
return new n.constructor((n.$imag * ratio + n.$real) / denom, (n.$imag - n.$real * ratio) / denom);
};
var $kindBool = 1;
var $kindInt = 2;
var $kindInt8 = 3;
var $kindInt16 = 4;
var $kindInt32 = 5;
var $kindInt64 = 6;
var $kindUint = 7;
var $kindUint8 = 8;
var $kindUint16 = 9;
var $kindUint32 = 10;
var $kindUint64 = 11;
var $kindUintptr = 12;
var $kindFloat32 = 13;
var $kindFloat64 = 14;
var $kindComplex64 = 15;
var $kindComplex128 = 16;
var $kindArray = 17;
var $kindChan = 18;
var $kindFunc = 19;
var $kindInterface = 20;
var $kindMap = 21;
var $kindPtr = 22;
var $kindSlice = 23;
var $kindString = 24;
var $kindStruct = 25;
var $kindUnsafePointer = 26;
var $methodSynthesizers = [];
var $addMethodSynthesizer = function(f) {
if ($methodSynthesizers === null) {
f();
return;
}
$methodSynthesizers.push(f);
};
var $synthesizeMethods = function() {
$methodSynthesizers.forEach(function(f) { f(); });
$methodSynthesizers = null;
};
var $ifaceKeyFor = function(x) {
if (x === $ifaceNil) {
return 'nil';
}
var c = x.constructor;
return c.string + '$' + c.keyFor(x.$val);
};
var $identity = function(x) { return x; };
var $typeIDCounter = 0;
var $idKey = function(x) {
if (x.$id === undefined) {
$idCounter++;
x.$id = $idCounter;
}
return String(x.$id);
};
var $newType = function(size, kind, string, named, pkg, exported, constructor) {
var typ;
switch(kind) {
case $kindBool:
case $kindInt:
case $kindInt8:
case $kindInt16:
case $kindInt32:
case $kindUint:
case $kindUint8:
case $kindUint16:
case $kindUint32:
case $kindUintptr:
case $kindUnsafePointer:
typ = function(v) { this.$val = v; };
typ.wrapped = true;
typ.keyFor = $identity;
break;
case $kindString:
typ = function(v) { this.$val = v; };
typ.wrapped = true;
typ.keyFor = function(x) { return "$" + x; };
break;
case $kindFloat32:
case $kindFloat64:
typ = function(v) { this.$val = v; };
typ.wrapped = true;
typ.keyFor = function(x) { return $floatKey(x); };
break;
case $kindInt64:
typ = function(high, low) {
this.$high = (high + Math.floor(Math.ceil(low) / 4294967296)) >> 0;
this.$low = low >>> 0;
this.$val = this;
};
typ.keyFor = function(x) { return x.$high + "$" + x.$low; };
break;
case $kindUint64:
typ = function(high, low) {
this.$high = (high + Math.floor(Math.ceil(low) / 4294967296)) >>> 0;
this.$low = low >>> 0;
this.$val = this;
};
typ.keyFor = function(x) { return x.$high + "$" + x.$low; };
break;
case $kindComplex64:
typ = function(real, imag) {
this.$real = $fround(real);
this.$imag = $fround(imag);
this.$val = this;
};
typ.keyFor = function(x) { return x.$real + "$" + x.$imag; };
break;
case $kindComplex128:
typ = function(real, imag) {
this.$real = real;
this.$imag = imag;
this.$val = this;
};
typ.keyFor = function(x) { return x.$real + "$" + x.$imag; };
break;
case $kindArray:
typ = function(v) { this.$val = v; };
typ.wrapped = true;
typ.ptr = $newType(4, $kindPtr, "*" + string, false, "", false, function(array) {
this.$get = function() { return array; };
this.$set = function(v) { typ.copy(this, v); };
this.$val = array;
});
typ.init = function(elem, len) {
typ.elem = elem;
typ.len = len;
typ.comparable = elem.comparable;
typ.keyFor = function(x) {
return Array.prototype.join.call($mapArray(x, function(e) {
return String(elem.keyFor(e)).replace(/\\/g, "\\\\").replace(/\$/g, "\\$");
}), "$");
};
typ.copy = function(dst, src) {
$copyArray(dst, src, 0, 0, src.length, elem);
};
typ.ptr.init(typ);
Object.defineProperty(typ.ptr.nil, "nilCheck", { get: $throwNilPointerError });
};
break;
case $kindChan:
typ = function(v) { this.$val = v; };
typ.wrapped = true;
typ.keyFor = $idKey;
typ.init = function(elem, sendOnly, recvOnly) {
typ.elem = elem;
typ.sendOnly = sendOnly;
typ.recvOnly = recvOnly;
};
break;
case $kindFunc:
typ = function(v) { this.$val = v; };
typ.wrapped = true;
typ.init = function(params, results, variadic) {
typ.params = params;
typ.results = results;
typ.variadic = variadic;
typ.comparable = false;
};
break;
case $kindInterface:
typ = { implementedBy: {}, missingMethodFor: {} };
typ.keyFor = $ifaceKeyFor;
typ.init = function(methods) {
typ.methods = methods;
methods.forEach(function(m) {
$ifaceNil[m.prop] = $throwNilPointerError;
});
};
break;
case $kindMap:
typ = function(v) { this.$val = v; };
typ.wrapped = true;
typ.init = function(key, elem) {
typ.key = key;
typ.elem = elem;
typ.comparable = false;
};
break;
case $kindPtr:
typ = constructor || function(getter, setter, target) {
this.$get = getter;
this.$set = setter;
this.$target = target;
this.$val = this;
};
typ.keyFor = $idKey;
typ.init = function(elem) {
typ.elem = elem;
typ.wrapped = (elem.kind === $kindArray);
typ.nil = new typ($throwNilPointerError, $throwNilPointerError);
};
break;
case $kindSlice:
typ = function(array) {
if (array.constructor !== typ.nativeArray) {
array = new typ.nativeArray(array);
}
this.$array = array;
this.$offset = 0;
this.$length = array.length;
this.$capacity = array.length;
this.$val = this;
};
typ.init = function(elem) {
typ.elem = elem;
typ.comparable = false;
typ.nativeArray = $nativeArray(elem.kind);
typ.nil = new typ([]);
};
break;
case $kindStruct:
typ = function(v) { this.$val = v; };
typ.wrapped = true;
typ.ptr = $newType(4, $kindPtr, "*" + string, false, "", exported, constructor);
typ.ptr.elem = typ;
typ.ptr.prototype.$get = function() { return this; };
typ.ptr.prototype.$set = function(v) { typ.copy(this, v); };
typ.init = function(pkgPath, fields) {
typ.pkgPath = pkgPath;
typ.fields = fields;
fields.forEach(function(f) {
if (!f.typ.comparable) {
typ.comparable = false;
}
});
typ.keyFor = function(x) {
var val = x.$val;
return $mapArray(fields, function(f) {
return String(f.typ.keyFor(val[f.prop])).replace(/\\/g, "\\\\").replace(/\$/g, "\\$");
}).join("$");
};
typ.copy = function(dst, src) {
for (var i = 0; i < fields.length; i++) {
var f = fields[i];
switch (f.typ.kind) {
case $kindArray:
case $kindStruct:
f.typ.copy(dst[f.prop], src[f.prop]);
continue;
default:
dst[f.prop] = src[f.prop];
continue;
}
}
};
/* nil value */
var properties = {};
fields.forEach(function(f) {
properties[f.prop] = { get: $throwNilPointerError, set: $throwNilPointerError };
});
typ.ptr.nil = Object.create(constructor.prototype, properties);
typ.ptr.nil.$val = typ.ptr.nil;
/* methods for embedded fields */
$addMethodSynthesizer(function() {
var synthesizeMethod = function(target, m, f) {
if (target.prototype[m.prop] !== undefined) { return; }
target.prototype[m.prop] = function() {
var v = this.$val[f.prop];
if (f.typ === $jsObjectPtr) {
v = new $jsObjectPtr(v);
}
if (v.$val === undefined) {
v = new f.typ(v);
}
return v[m.prop].apply(v, arguments);
};
};
fields.forEach(function(f) {
if (f.name === "") {
$methodSet(f.typ).forEach(function(m) {
synthesizeMethod(typ, m, f);
synthesizeMethod(typ.ptr, m, f);
});
$methodSet($ptrType(f.typ)).forEach(function(m) {
synthesizeMethod(typ.ptr, m, f);
});
}
});
});
};
break;
default:
$panic(new $String("invalid kind: " + kind));
}
switch (kind) {
case $kindBool:
case $kindMap:
typ.zero = function() { return false; };
break;
case $kindInt:
case $kindInt8:
case $kindInt16:
case $kindInt32:
case $kindUint:
case $kindUint8 :
case $kindUint16:
case $kindUint32:
case $kindUintptr:
case $kindUnsafePointer:
case $kindFloat32:
case $kindFloat64:
typ.zero = function() { return 0; };
break;
case $kindString:
typ.zero = function() { return ""; };
break;
case $kindInt64:
case $kindUint64:
case $kindComplex64:
case $kindComplex128:
var zero = new typ(0, 0);
typ.zero = function() { return zero; };
break;
case $kindPtr:
case $kindSlice:
typ.zero = function() { return typ.nil; };
break;
case $kindChan:
typ.zero = function() { return $chanNil; };
break;
case $kindFunc:
typ.zero = function() { return $throwNilPointerError; };
break;
case $kindInterface:
typ.zero = function() { return $ifaceNil; };
break;
case $kindArray:
typ.zero = function() {
var arrayClass = $nativeArray(typ.elem.kind);
if (arrayClass !== Array) {
return new arrayClass(typ.len);
}
var array = new Array(typ.len);
for (var i = 0; i < typ.len; i++) {
array[i] = typ.elem.zero();
}
return array;
};
break;
case $kindStruct:
typ.zero = function() { return new typ.ptr(); };
break;
default:
$panic(new $String("invalid kind: " + kind));
}
typ.id = $typeIDCounter;
$typeIDCounter++;
typ.size = size;
typ.kind = kind;
typ.string = string;
typ.named = named;
typ.pkg = pkg;
typ.exported = exported;
typ.methods = [];
typ.methodSetCache = null;
typ.comparable = true;
return typ;
};
var $methodSet = function(typ) {
if (typ.methodSetCache !== null) {
return typ.methodSetCache;
}
var base = {};
var isPtr = (typ.kind === $kindPtr);
if (isPtr && typ.elem.kind === $kindInterface) {
typ.methodSetCache = [];
return [];
}
var current = [{typ: isPtr ? typ.elem : typ, indirect: isPtr}];
var seen = {};
while (current.length > 0) {
var next = [];
var mset = [];
current.forEach(function(e) {
if (seen[e.typ.string]) {
return;
}
seen[e.typ.string] = true;
if (e.typ.named) {
mset = mset.concat(e.typ.methods);
if (e.indirect) {
mset = mset.concat($ptrType(e.typ).methods);
}
}
switch (e.typ.kind) {
case $kindStruct:
e.typ.fields.forEach(function(f) {
if (f.name === "") {
var fTyp = f.typ;
var fIsPtr = (fTyp.kind === $kindPtr);
next.push({typ: fIsPtr ? fTyp.elem : fTyp, indirect: e.indirect || fIsPtr});
}
});
break;
case $kindInterface:
mset = mset.concat(e.typ.methods);
break;
}
});
mset.forEach(function(m) {
if (base[m.name] === undefined) {
base[m.name] = m;
}
});
current = next;
}
typ.methodSetCache = [];
Object.keys(base).sort().forEach(function(name) {
typ.methodSetCache.push(base[name]);
});
return typ.methodSetCache;
};
var $Bool = $newType( 1, $kindBool, "bool", true, "", false, null);
var $Int = $newType( 4, $kindInt, "int", true, "", false, null);
var $Int8 = $newType( 1, $kindInt8, "int8", true, "", false, null);
var $Int16 = $newType( 2, $kindInt16, "int16", true, "", false, null);
var $Int32 = $newType( 4, $kindInt32, "int32", true, "", false, null);
var $Int64 = $newType( 8, $kindInt64, "int64", true, "", false, null);
var $Uint = $newType( 4, $kindUint, "uint", true, "", false, null);
var $Uint8 = $newType( 1, $kindUint8, "uint8", true, "", false, null);
var $Uint16 = $newType( 2, $kindUint16, "uint16", true, "", false, null);
var $Uint32 = $newType( 4, $kindUint32, "uint32", true, "", false, null);
var $Uint64 = $newType( 8, $kindUint64, "uint64", true, "", false, null);
var $Uintptr = $newType( 4, $kindUintptr, "uintptr", true, "", false, null);
var $Float32 = $newType( 4, $kindFloat32, "float32", true, "", false, null);
var $Float64 = $newType( 8, $kindFloat64, "float64", true, "", false, null);
var $Complex64 = $newType( 8, $kindComplex64, "complex64", true, "", false, null);
var $Complex128 = $newType(16, $kindComplex128, "complex128", true, "", false, null);
var $String = $newType( 8, $kindString, "string", true, "", false, null);
var $UnsafePointer = $newType( 4, $kindUnsafePointer, "unsafe.Pointer", true, "", false, null);
var $nativeArray = function(elemKind) {
switch (elemKind) {
case $kindInt:
return Int32Array;
case $kindInt8:
return Int8Array;
case $kindInt16:
return Int16Array;
case $kindInt32:
return Int32Array;
case $kindUint:
return Uint32Array;
case $kindUint8:
return Uint8Array;
case $kindUint16:
return Uint16Array;
case $kindUint32:
return Uint32Array;
case $kindUintptr:
return Uint32Array;
case $kindFloat32:
return Float32Array;
case $kindFloat64:
return Float64Array;
default:
return Array;
}
};
var $toNativeArray = function(elemKind, array) {
var nativeArray = $nativeArray(elemKind);
if (nativeArray === Array) {
return array;
}
return new nativeArray(array);
};
var $arrayTypes = {};
var $arrayType = function(elem, len) {
var typeKey = elem.id + "$" + len;
var typ = $arrayTypes[typeKey];
if (typ === undefined) {
typ = $newType(12, $kindArray, "[" + len + "]" + elem.string, false, "", false, null);
$arrayTypes[typeKey] = typ;
typ.init(elem, len);
}
return typ;
};
var $chanType = function(elem, sendOnly, recvOnly) {
var string = (recvOnly ? "<-" : "") + "chan" + (sendOnly ? "<- " : " ") + elem.string;
var field = sendOnly ? "SendChan" : (recvOnly ? "RecvChan" : "Chan");
var typ = elem[field];
if (typ === undefined) {
typ = $newType(4, $kindChan, string, false, "", false, null);
elem[field] = typ;
typ.init(elem, sendOnly, recvOnly);
}
return typ;
};
var $Chan = function(elem, capacity) {
if (capacity < 0 || capacity > 2147483647) {
$throwRuntimeError("makechan: size out of range");
}
this.$elem = elem;
this.$capacity = capacity;
this.$buffer = [];
this.$sendQueue = [];
this.$recvQueue = [];
this.$closed = false;
};
var $chanNil = new $Chan(null, 0);
$chanNil.$sendQueue = $chanNil.$recvQueue = { length: 0, push: function() {}, shift: function() { return undefined; }, indexOf: function() { return -1; } };
var $funcTypes = {};
var $funcType = function(params, results, variadic) {
var typeKey = $mapArray(params, function(p) { return p.id; }).join(",") + "$" + $mapArray(results, function(r) { return r.id; }).join(",") + "$" + variadic;
var typ = $funcTypes[typeKey];
if (typ === undefined) {
var paramTypes = $mapArray(params, function(p) { return p.string; });
if (variadic) {
paramTypes[paramTypes.length - 1] = "..." + paramTypes[paramTypes.length - 1].substr(2);
}
var string = "func(" + paramTypes.join(", ") + ")";
if (results.length === 1) {
string += " " + results[0].string;
} else if (results.length > 1) {
string += " (" + $mapArray(results, function(r) { return r.string; }).join(", ") + ")";
}
typ = $newType(4, $kindFunc, string, false, "", false, null);
$funcTypes[typeKey] = typ;
typ.init(params, results, variadic);
}
return typ;
};
var $interfaceTypes = {};
var $interfaceType = function(methods) {
var typeKey = $mapArray(methods, function(m) { return m.pkg + "," + m.name + "," + m.typ.id; }).join("$");
var typ = $interfaceTypes[typeKey];
if (typ === undefined) {
var string = "interface {}";
if (methods.length !== 0) {
string = "interface { " + $mapArray(methods, function(m) {
return (m.pkg !== "" ? m.pkg + "." : "") + m.name + m.typ.string.substr(4);
}).join("; ") + " }";
}
typ = $newType(8, $kindInterface, string, false, "", false, null);
$interfaceTypes[typeKey] = typ;
typ.init(methods);
}
return typ;
};
var $emptyInterface = $interfaceType([]);
var $ifaceNil = {};
var $error = $newType(8, $kindInterface, "error", true, "", false, null);
$error.init([{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]);
var $mapTypes = {};
var $mapType = function(key, elem) {
var typeKey = key.id + "$" + elem.id;
var typ = $mapTypes[typeKey];
if (typ === undefined) {
typ = $newType(4, $kindMap, "map[" + key.string + "]" + elem.string, false, "", false, null);
$mapTypes[typeKey] = typ;
typ.init(key, elem);
}
return typ;
};
var $makeMap = function(keyForFunc, entries) {
var m = {};
for (var i = 0; i < entries.length; i++) {
var e = entries[i];
m[keyForFunc(e.k)] = e;
}
return m;
};
var $ptrType = function(elem) {
var typ = elem.ptr;
if (typ === undefined) {
typ = $newType(4, $kindPtr, "*" + elem.string, false, "", elem.exported, null);
elem.ptr = typ;
typ.init(elem);
}
return typ;
};
var $newDataPointer = function(data, constructor) {
if (constructor.elem.kind === $kindStruct) {
return data;
}
return new constructor(function() { return data; }, function(v) { data = v; });
};
var $indexPtr = function(array, index, constructor) {
array.$ptr = array.$ptr || {};
return array.$ptr[index] || (array.$ptr[index] = new constructor(function() { return array[index]; }, function(v) { array[index] = v; }));
};
var $sliceType = function(elem) {
var typ = elem.slice;
if (typ === undefined) {
typ = $newType(12, $kindSlice, "[]" + elem.string, false, "", false, null);
elem.slice = typ;
typ.init(elem);
}
return typ;
};
var $makeSlice = function(typ, length, capacity) {
capacity = capacity || length;
if (length < 0 || length > 2147483647) {
$throwRuntimeError("makeslice: len out of range");
}
if (capacity < 0 || capacity < length || capacity > 2147483647) {
$throwRuntimeError("makeslice: cap out of range");
}
var array = new typ.nativeArray(capacity);
if (typ.nativeArray === Array) {
for (var i = 0; i < capacity; i++) {
array[i] = typ.elem.zero();
}
}
var slice = new typ(array);
slice.$length = length;
return slice;
};
var $structTypes = {};
var $structType = function(pkgPath, fields) {
var typeKey = $mapArray(fields, function(f) { return f.name + "," + f.typ.id + "," + f.tag; }).join("$");
var typ = $structTypes[typeKey];
if (typ === undefined) {
var string = "struct { " + $mapArray(fields, function(f) {
return f.name + " " + f.typ.string + (f.tag !== "" ? (" \"" + f.tag.replace(/\\/g, "\\\\").replace(/"/g, "\\\"") + "\"") : "");
}).join("; ") + " }";
if (fields.length === 0) {
string = "struct {}";
}
typ = $newType(0, $kindStruct, string, false, "", false, function() {
this.$val = this;
for (var i = 0; i < fields.length; i++) {
var f = fields[i];
var arg = arguments[i];
this[f.prop] = arg !== undefined ? arg : f.typ.zero();
}
});
$structTypes[typeKey] = typ;
typ.init(pkgPath, fields);
}
return typ;
};
var $assertType = function(value, type, returnTuple) {
var isInterface = (type.kind === $kindInterface), ok, missingMethod = "";
if (value === $ifaceNil) {
ok = false;
} else if (!isInterface) {
ok = value.constructor === type;
} else {
var valueTypeString = value.constructor.string;
ok = type.implementedBy[valueTypeString];
if (ok === undefined) {
ok = true;
var valueMethodSet = $methodSet(value.constructor);
var interfaceMethods = type.methods;
for (var i = 0; i < interfaceMethods.length; i++) {
var tm = interfaceMethods[i];
var found = false;
for (var j = 0; j < valueMethodSet.length; j++) {
var vm = valueMethodSet[j];
if (vm.name === tm.name && vm.pkg === tm.pkg && vm.typ === tm.typ) {
found = true;
break;
}
}
if (!found) {
ok = false;
type.missingMethodFor[valueTypeString] = tm.name;
break;
}
}
type.implementedBy[valueTypeString] = ok;
}
if (!ok) {
missingMethod = type.missingMethodFor[valueTypeString];
}
}
if (!ok) {
if (returnTuple) {
return [type.zero(), false];
}
$panic(new $packages["runtime"].TypeAssertionError.ptr("", (value === $ifaceNil ? "" : value.constructor.string), type.string, missingMethod));
}
if (!isInterface) {
value = value.$val;
}
if (type === $jsObjectPtr) {
value = value.object;
}
return returnTuple ? [value, true] : value;
};
var $stackDepthOffset = 0;
var $getStackDepth = function() {
var err = new Error();
if (err.stack === undefined) {
return undefined;
}
return $stackDepthOffset + err.stack.split("\n").length;
};
var $panicStackDepth = null, $panicValue;
var $callDeferred = function(deferred, jsErr, fromPanic) {
if (!fromPanic && deferred !== null && deferred.index >= $curGoroutine.deferStack.length) {
throw jsErr;
}
if (jsErr !== null) {
var newErr = null;
try {
$curGoroutine.deferStack.push(deferred);
$panic(new $jsErrorPtr(jsErr));
} catch (err) {
newErr = err;
}
$curGoroutine.deferStack.pop();
$callDeferred(deferred, newErr);
return;
}
if ($curGoroutine.asleep) {
return;
}
$stackDepthOffset--;
var outerPanicStackDepth = $panicStackDepth;
var outerPanicValue = $panicValue;
var localPanicValue = $curGoroutine.panicStack.pop();
if (localPanicValue !== undefined) {
$panicStackDepth = $getStackDepth();
$panicValue = localPanicValue;
}
try {
while (true) {
if (deferred === null) {
deferred = $curGoroutine.deferStack[$curGoroutine.deferStack.length - 1];
if (deferred === undefined) {
/* The panic reached the top of the stack. Clear it and throw it as a JavaScript error. */
$panicStackDepth = null;
if (localPanicValue.Object instanceof Error) {
throw localPanicValue.Object;
}
var msg;
if (localPanicValue.constructor === $String) {
msg = localPanicValue.$val;
} else if (localPanicValue.Error !== undefined) {
msg = localPanicValue.Error();
} else if (localPanicValue.String !== undefined) {
msg = localPanicValue.String();
} else {
msg = localPanicValue;
}
throw new Error(msg);
}
}
var call = deferred.pop();
if (call === undefined) {
$curGoroutine.deferStack.pop();
if (localPanicValue !== undefined) {
deferred = null;
continue;
}
return;
}
var r = call[0].apply(call[2], call[1]);
if (r && r.$blk !== undefined) {
deferred.push([r.$blk, [], r]);
if (fromPanic) {
throw null;
}
return;
}
if (localPanicValue !== undefined && $panicStackDepth === null) {
throw null; /* error was recovered */
}
}
} finally {
if (localPanicValue !== undefined) {
if ($panicStackDepth !== null) {
$curGoroutine.panicStack.push(localPanicValue);
}
$panicStackDepth = outerPanicStackDepth;
$panicValue = outerPanicValue;
}
$stackDepthOffset++;
}
};
var $panic = function(value) {
$curGoroutine.panicStack.push(value);
$callDeferred(null, null, true);
};
var $recover = function() {
if ($panicStackDepth === null || ($panicStackDepth !== undefined && $panicStackDepth !== $getStackDepth() - 2)) {
return $ifaceNil;
}
$panicStackDepth = null;
return $panicValue;
};
var $throw = function(err) { throw err; };
var $noGoroutine = { asleep: false, exit: false, deferStack: [], panicStack: [] };
var $curGoroutine = $noGoroutine, $totalGoroutines = 0, $awakeGoroutines = 0, $checkForDeadlock = true;
var $mainFinished = false;
var $go = function(fun, args, direct) {
$totalGoroutines++;
$awakeGoroutines++;
var $goroutine = function() {
try {
$curGoroutine = $goroutine;
var r = fun.apply(undefined, args);
if (r && r.$blk !== undefined) {
fun = function() { return r.$blk(); };
args = [];
return;
}
$goroutine.exit = true;
} catch (err) {
if (!$goroutine.exit) {
throw err;
}
} finally {
$curGoroutine = $noGoroutine;
if ($goroutine.exit) { /* also set by runtime.Goexit() */
$totalGoroutines--;
$goroutine.asleep = true;
}
if ($goroutine.asleep) {
$awakeGoroutines--;
if (!$mainFinished && $awakeGoroutines === 0 && $checkForDeadlock) {
console.error("fatal error: all goroutines are asleep - deadlock!");
if ($global.process !== undefined) {
$global.process.exit(2);
}
}
}
}
};
$goroutine.asleep = false;
$goroutine.exit = false;
$goroutine.deferStack = [];
$goroutine.panicStack = [];
$schedule($goroutine);
};
var $scheduled = [];
var $runScheduled = function() {
try {
var r;
while ((r = $scheduled.shift()) !== undefined) {
r();
}
} finally {
if ($scheduled.length > 0) {
setTimeout($runScheduled, 0);
}
}
};
var $schedule = function(goroutine) {
if (goroutine.asleep) {
goroutine.asleep = false;
$awakeGoroutines++;
}
$scheduled.push(goroutine);
if ($curGoroutine === $noGoroutine) {
$runScheduled();
}
};
var $setTimeout = function(f, t) {
$awakeGoroutines++;
return setTimeout(function() {
$awakeGoroutines--;
f();
}, t);
};
var $block = function() {
if ($curGoroutine === $noGoroutine) {
$throwRuntimeError("cannot block in JavaScript callback, fix by wrapping code in goroutine");
}
$curGoroutine.asleep = true;
};
var $send = function(chan, value) {
if (chan.$closed) {
$throwRuntimeError("send on closed channel");
}
var queuedRecv = chan.$recvQueue.shift();
if (queuedRecv !== undefined) {
queuedRecv([value, true]);
return;
}
if (chan.$buffer.length < chan.$capacity) {
chan.$buffer.push(value);
return;
}
var thisGoroutine = $curGoroutine;
var closedDuringSend;
chan.$sendQueue.push(function(closed) {
closedDuringSend = closed;
$schedule(thisGoroutine);
return value;
});
$block();
return {
$blk: function() {
if (closedDuringSend) {
$throwRuntimeError("send on closed channel");
}
}
};
};
var $recv = function(chan) {
var queuedSend = chan.$sendQueue.shift();
if (queuedSend !== undefined) {
chan.$buffer.push(queuedSend(false));
}
var bufferedValue = chan.$buffer.shift();
if (bufferedValue !== undefined) {
return [bufferedValue, true];
}
if (chan.$closed) {
return [chan.$elem.zero(), false];
}
var thisGoroutine = $curGoroutine;
var f = { $blk: function() { return this.value; } };
var queueEntry = function(v) {
f.value = v;
$schedule(thisGoroutine);
};
chan.$recvQueue.push(queueEntry);
$block();
return f;
};
var $close = function(chan) {
if (chan.$closed) {
$throwRuntimeError("close of closed channel");
}
chan.$closed = true;
while (true) {
var queuedSend = chan.$sendQueue.shift();
if (queuedSend === undefined) {
break;
}
queuedSend(true); /* will panic */
}
while (true) {
var queuedRecv = chan.$recvQueue.shift();
if (queuedRecv === undefined) {
break;
}
queuedRecv([chan.$elem.zero(), false]);
}
};
var $select = function(comms) {
var ready = [];
var selection = -1;
for (var i = 0; i < comms.length; i++) {
var comm = comms[i];
var chan = comm[0];
switch (comm.length) {
case 0: /* default */
selection = i;
break;
case 1: /* recv */
if (chan.$sendQueue.length !== 0 || chan.$buffer.length !== 0 || chan.$closed) {
ready.push(i);
}
break;
case 2: /* send */
if (chan.$closed) {
$throwRuntimeError("send on closed channel");
}
if (chan.$recvQueue.length !== 0 || chan.$buffer.length < chan.$capacity) {
ready.push(i);
}
break;
}
}
if (ready.length !== 0) {
selection = ready[Math.floor(Math.random() * ready.length)];
}
if (selection !== -1) {
var comm = comms[selection];
switch (comm.length) {
case 0: /* default */
return [selection];
case 1: /* recv */
return [selection, $recv(comm[0])];
case 2: /* send */
$send(comm[0], comm[1]);
return [selection];
}
}
var entries = [];
var thisGoroutine = $curGoroutine;
var f = { $blk: function() { return this.selection; } };
var removeFromQueues = function() {
for (var i = 0; i < entries.length; i++) {
var entry = entries[i];
var queue = entry[0];
var index = queue.indexOf(entry[1]);
if (index !== -1) {
queue.splice(index, 1);
}
}
};
for (var i = 0; i < comms.length; i++) {
(function(i) {
var comm = comms[i];
switch (comm.length) {
case 1: /* recv */
var queueEntry = function(value) {
f.selection = [i, value];
removeFromQueues();
$schedule(thisGoroutine);
};
entries.push([comm[0].$recvQueue, queueEntry]);
comm[0].$recvQueue.push(queueEntry);
break;
case 2: /* send */
var queueEntry = function() {
if (comm[0].$closed) {
$throwRuntimeError("send on closed channel");
}
f.selection = [i];
removeFromQueues();
$schedule(thisGoroutine);
return comm[1];
};
entries.push([comm[0].$sendQueue, queueEntry]);
comm[0].$sendQueue.push(queueEntry);
break;
}
})(i);
}
$block();
return f;
};
var $jsObjectPtr, $jsErrorPtr;
var $needsExternalization = function(t) {
switch (t.kind) {
case $kindBool:
case $kindInt:
case $kindInt8:
case $kindInt16:
case $kindInt32:
case $kindUint:
case $kindUint8:
case $kindUint16:
case $kindUint32:
case $kindUintptr:
case $kindFloat32:
case $kindFloat64:
return false;
default:
return t !== $jsObjectPtr;
}
};
var $externalize = function(v, t) {
if (t === $jsObjectPtr) {
return v;
}
switch (t.kind) {
case $kindBool:
case $kindInt:
case $kindInt8:
case $kindInt16:
case $kindInt32:
case $kindUint:
case $kindUint8:
case $kindUint16:
case $kindUint32:
case $kindUintptr:
case $kindFloat32:
case $kindFloat64:
return v;
case $kindInt64:
case $kindUint64:
return $flatten64(v);
case $kindArray:
if ($needsExternalization(t.elem)) {
return $mapArray(v, function(e) { return $externalize(e, t.elem); });
}
return v;
case $kindFunc:
return $externalizeFunction(v, t, false);
case $kindInterface:
if (v === $ifaceNil) {
return null;
}
if (v.constructor === $jsObjectPtr) {
return v.$val.object;
}
return $externalize(v.$val, v.constructor);
case $kindMap:
var m = {};
var keys = $keys(v);
for (var i = 0; i < keys.length; i++) {
var entry = v[keys[i]];
m[$externalize(entry.k, t.key)] = $externalize(entry.v, t.elem);
}
return m;
case $kindPtr:
if (v === t.nil) {
return null;
}
return $externalize(v.$get(), t.elem);
case $kindSlice:
if ($needsExternalization(t.elem)) {
return $mapArray($sliceToArray(v), function(e) { return $externalize(e, t.elem); });
}
return $sliceToArray(v);
case $kindString:
if ($isASCII(v)) {
return v;
}
var s = "", r;
for (var i = 0; i < v.length; i += r[1]) {
r = $decodeRune(v, i);
var c = r[0];
if (c > 0xFFFF) {
var h = Math.floor((c - 0x10000) / 0x400) + 0xD800;
var l = (c - 0x10000) % 0x400 + 0xDC00;
s += String.fromCharCode(h, l);
continue;
}
s += String.fromCharCode(c);
}
return s;
case $kindStruct:
var timePkg = $packages["time"];
if (timePkg !== undefined && v.constructor === timePkg.Time.ptr) {
var milli = $div64(v.UnixNano(), new $Int64(0, 1000000));
return new Date($flatten64(milli));
}
var noJsObject = {};
var searchJsObject = function(v, t) {
if (t === $jsObjectPtr) {
return v;
}
switch (t.kind) {
case $kindPtr:
if (v === t.nil) {
return noJsObject;
}
return searchJsObject(v.$get(), t.elem);
case $kindStruct:
var f = t.fields[0];
return searchJsObject(v[f.prop], f.typ);
case $kindInterface:
return searchJsObject(v.$val, v.constructor);
default:
return noJsObject;
}
};
var o = searchJsObject(v, t);
if (o !== noJsObject) {
return o;
}
o = {};
for (var i = 0; i < t.fields.length; i++) {
var f = t.fields[i];
if (!f.exported) {
continue;
}
o[f.name] = $externalize(v[f.prop], f.typ);
}
return o;
}
$throwRuntimeError("cannot externalize " + t.string);
};
var $externalizeFunction = function(v, t, passThis) {
if (v === $throwNilPointerError) {
return null;
}
if (v.$externalizeWrapper === undefined) {
$checkForDeadlock = false;
v.$externalizeWrapper = function() {
var args = [];
for (var i = 0; i < t.params.length; i++) {
if (t.variadic && i === t.params.length - 1) {
var vt = t.params[i].elem, varargs = [];
for (var j = i; j < arguments.length; j++) {
varargs.push($internalize(arguments[j], vt));
}
args.push(new (t.params[i])(varargs));
break;
}
args.push($internalize(arguments[i], t.params[i]));
}
var canBlock = $curGoroutine.canBlock;
$curGoroutine.canBlock = false;
try {
var result = v.apply(passThis ? this : undefined, args);
} finally {
$curGoroutine.canBlock = canBlock;
}
switch (t.results.length) {
case 0:
return;
case 1:
return $externalize(result, t.results[0]);
default:
for (var i = 0; i < t.results.length; i++) {
result[i] = $externalize(result[i], t.results[i]);
}
return result;
}
};
}
return v.$externalizeWrapper;
};
var $internalize = function(v, t, recv) {
if (t === $jsObjectPtr) {
return v;
}
if (t === $jsObjectPtr.elem) {
$throwRuntimeError("cannot internalize js.Object, use *js.Object instead");
}
if (v && v.__internal_object__ !== undefined) {
return $assertType(v.__internal_object__, t, false);
}
var timePkg = $packages["time"];
if (timePkg !== undefined && t === timePkg.Time) {
if (!(v !== null && v !== undefined && v.constructor === Date)) {
$throwRuntimeError("cannot internalize time.Time from " + typeof v + ", must be Date");
}
return timePkg.Unix(new $Int64(0, 0), new $Int64(0, v.getTime() * 1000000));
}
switch (t.kind) {
case $kindBool:
return !!v;
case $kindInt:
return parseInt(v);
case $kindInt8:
return parseInt(v) << 24 >> 24;
case $kindInt16:
return parseInt(v) << 16 >> 16;
case $kindInt32:
return parseInt(v) >> 0;
case $kindUint:
return parseInt(v);
case $kindUint8:
return parseInt(v) << 24 >>> 24;
case $kindUint16:
return parseInt(v) << 16 >>> 16;
case $kindUint32:
case $kindUintptr:
return parseInt(v) >>> 0;
case $kindInt64:
case $kindUint64:
return new t(0, v);
case $kindFloat32:
case $kindFloat64:
return parseFloat(v);
case $kindArray:
if (v.length !== t.len) {
$throwRuntimeError("got array with wrong size from JavaScript native");
}
return $mapArray(v, function(e) { return $internalize(e, t.elem); });
case $kindFunc:
return function() {
var args = [];
for (var i = 0; i < t.params.length; i++) {
if (t.variadic && i === t.params.length - 1) {
var vt = t.params[i].elem, varargs = arguments[i];
for (var j = 0; j < varargs.$length; j++) {
args.push($externalize(varargs.$array[varargs.$offset + j], vt));
}
break;
}
args.push($externalize(arguments[i], t.params[i]));
}
var result = v.apply(recv, args);
switch (t.results.length) {
case 0:
return;
case 1:
return $internalize(result, t.results[0]);
default:
for (var i = 0; i < t.results.length; i++) {
result[i] = $internalize(result[i], t.results[i]);
}
return result;
}
};
case $kindInterface:
if (t.methods.length !== 0) {
$throwRuntimeError("cannot internalize " + t.string);
}
if (v === null) {
return $ifaceNil;
}
if (v === undefined) {
return new $jsObjectPtr(undefined);
}
switch (v.constructor) {
case Int8Array:
return new ($sliceType($Int8))(v);
case Int16Array:
return new ($sliceType($Int16))(v);
case Int32Array:
return new ($sliceType($Int))(v);
case Uint8Array:
return new ($sliceType($Uint8))(v);
case Uint16Array:
return new ($sliceType($Uint16))(v);
case Uint32Array:
return new ($sliceType($Uint))(v);
case Float32Array:
return new ($sliceType($Float32))(v);
case Float64Array:
return new ($sliceType($Float64))(v);
case Array:
return $internalize(v, $sliceType($emptyInterface));
case Boolean:
return new $Bool(!!v);
case Date:
if (timePkg === undefined) {
/* time package is not present, internalize as &js.Object{Date} so it can be externalized into original Date. */
return new $jsObjectPtr(v);
}
return new timePkg.Time($internalize(v, timePkg.Time));
case Function:
var funcType = $funcType([$sliceType($emptyInterface)], [$jsObjectPtr], true);
return new funcType($internalize(v, funcType));
case Number:
return new $Float64(parseFloat(v));
case String:
return new $String($internalize(v, $String));
default:
if ($global.Node && v instanceof $global.Node) {
return new $jsObjectPtr(v);
}
var mapType = $mapType($String, $emptyInterface);
return new mapType($internalize(v, mapType));
}
case $kindMap:
var m = {};
var keys = $keys(v);
for (var i = 0; i < keys.length; i++) {
var k = $internalize(keys[i], t.key);
m[t.key.keyFor(k)] = { k: k, v: $internalize(v[keys[i]], t.elem) };
}
return m;
case $kindPtr:
if (t.elem.kind === $kindStruct) {
return $internalize(v, t.elem);
}
case $kindSlice:
return new t($mapArray(v, function(e) { return $internalize(e, t.elem); }));
case $kindString:
v = String(v);
if ($isASCII(v)) {
return v;
}
var s = "";
var i = 0;
while (i < v.length) {
var h = v.charCodeAt(i);
if (0xD800 <= h && h <= 0xDBFF) {
var l = v.charCodeAt(i + 1);
var c = (h - 0xD800) * 0x400 + l - 0xDC00 + 0x10000;
s += $encodeRune(c);
i += 2;
continue;
}
s += $encodeRune(h);
i++;
}
return s;
case $kindStruct:
var noJsObject = {};
var searchJsObject = function(t) {
if (t === $jsObjectPtr) {
return v;
}
if (t === $jsObjectPtr.elem) {
$throwRuntimeError("cannot internalize js.Object, use *js.Object instead");
}
switch (t.kind) {
case $kindPtr:
return searchJsObject(t.elem);
case $kindStruct:
var f = t.fields[0];
var o = searchJsObject(f.typ);
if (o !== noJsObject) {
var n = new t.ptr();
n[f.prop] = o;
return n;
}
return noJsObject;
default:
return noJsObject;
}
};
var o = searchJsObject(t);
if (o !== noJsObject) {
return o;
}
}
$throwRuntimeError("cannot internalize " + t.string);
};
/* $isASCII reports whether string s contains only ASCII characters. */
var $isASCII = function(s) {
for (var i = 0; i < s.length; i++) {
if (s.charCodeAt(i) >= 128) {
return false;
}
}
return true;
};
$packages["github.com/gopherjs/gopherjs/js"] = (function() {
var $pkg = {}, $init, Object, Error, sliceType, ptrType, ptrType$1, MakeFunc, init;
Object = $pkg.Object = $newType(0, $kindStruct, "js.Object", true, "github.com/gopherjs/gopherjs/js", true, function(object_) {
this.$val = this;
if (arguments.length === 0) {
this.object = null;
return;
}
this.object = object_;
});
Error = $pkg.Error = $newType(0, $kindStruct, "js.Error", true, "github.com/gopherjs/gopherjs/js", true, function(Object_) {
this.$val = this;
if (arguments.length === 0) {
this.Object = null;
return;
}
this.Object = Object_;
});
sliceType = $sliceType($emptyInterface);
ptrType = $ptrType(Object);
ptrType$1 = $ptrType(Error);
Object.ptr.prototype.Get = function(key) {
var $ptr, key, o;
o = this;
return o.object[$externalize(key, $String)];
};
Object.prototype.Get = function(key) { return this.$val.Get(key); };
Object.ptr.prototype.Set = function(key, value) {
var $ptr, key, o, value;
o = this;
o.object[$externalize(key, $String)] = $externalize(value, $emptyInterface);
};
Object.prototype.Set = function(key, value) { return this.$val.Set(key, value); };
Object.ptr.prototype.Delete = function(key) {
var $ptr, key, o;
o = this;
delete o.object[$externalize(key, $String)];
};
Object.prototype.Delete = function(key) { return this.$val.Delete(key); };
Object.ptr.prototype.Length = function() {
var $ptr, o;
o = this;
return $parseInt(o.object.length);
};
Object.prototype.Length = function() { return this.$val.Length(); };
Object.ptr.prototype.Index = function(i) {
var $ptr, i, o;
o = this;
return o.object[i];
};
Object.prototype.Index = function(i) { return this.$val.Index(i); };
Object.ptr.prototype.SetIndex = function(i, value) {
var $ptr, i, o, value;
o = this;
o.object[i] = $externalize(value, $emptyInterface);
};
Object.prototype.SetIndex = function(i, value) { return this.$val.SetIndex(i, value); };
Object.ptr.prototype.Call = function(name, args) {
var $ptr, args, name, o, obj;
o = this;
return (obj = o.object, obj[$externalize(name, $String)].apply(obj, $externalize(args, sliceType)));
};
Object.prototype.Call = function(name, args) { return this.$val.Call(name, args); };
Object.ptr.prototype.Invoke = function(args) {
var $ptr, args, o;
o = this;
return o.object.apply(undefined, $externalize(args, sliceType));
};
Object.prototype.Invoke = function(args) { return this.$val.Invoke(args); };
Object.ptr.prototype.New = function(args) {
var $ptr, args, o;
o = this;
return new ($global.Function.prototype.bind.apply(o.object, [undefined].concat($externalize(args, sliceType))));
};
Object.prototype.New = function(args) { return this.$val.New(args); };
Object.ptr.prototype.Bool = function() {
var $ptr, o;
o = this;
return !!(o.object);
};
Object.prototype.Bool = function() { return this.$val.Bool(); };
Object.ptr.prototype.String = function() {
var $ptr, o;
o = this;
return $internalize(o.object, $String);
};
Object.prototype.String = function() { return this.$val.String(); };
Object.ptr.prototype.Int = function() {
var $ptr, o;
o = this;
return $parseInt(o.object) >> 0;
};
Object.prototype.Int = function() { return this.$val.Int(); };
Object.ptr.prototype.Int64 = function() {
var $ptr, o;
o = this;
return $internalize(o.object, $Int64);
};
Object.prototype.Int64 = function() { return this.$val.Int64(); };
Object.ptr.prototype.Uint64 = function() {
var $ptr, o;
o = this;
return $internalize(o.object, $Uint64);
};
Object.prototype.Uint64 = function() { return this.$val.Uint64(); };
Object.ptr.prototype.Float = function() {
var $ptr, o;
o = this;
return $parseFloat(o.object);
};
Object.prototype.Float = function() { return this.$val.Float(); };
Object.ptr.prototype.Interface = function() {
var $ptr, o;
o = this;
return $internalize(o.object, $emptyInterface);
};
Object.prototype.Interface = function() { return this.$val.Interface(); };
Object.ptr.prototype.Unsafe = function() {
var $ptr, o;
o = this;
return o.object;
};
Object.prototype.Unsafe = function() { return this.$val.Unsafe(); };
Error.ptr.prototype.Error = function() {
var $ptr, err;
err = this;
return "JavaScript error: " + $internalize(err.Object.message, $String);
};
Error.prototype.Error = function() { return this.$val.Error(); };
Error.ptr.prototype.Stack = function() {
var $ptr, err;
err = this;
return $internalize(err.Object.stack, $String);
};
Error.prototype.Stack = function() { return this.$val.Stack(); };
MakeFunc = function(fn) {
var $ptr, fn;
return $makeFunc(fn);
};
$pkg.MakeFunc = MakeFunc;
init = function() {
var $ptr, e;
e = new Error.ptr(null);
$unused(e);
};
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)}];
ptrType$1.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Stack", name: "Stack", pkg: "", typ: $funcType([], [$String], false)}];
Object.init("github.com/gopherjs/gopherjs/js", [{prop: "object", name: "object", exported: false, typ: ptrType, tag: ""}]);
Error.init("", [{prop: "Object", name: "", exported: true, typ: ptrType, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
init();
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["runtime/internal/sys"] = (function() {
var $pkg = {}, $init;
$init = function() {
$pkg.$init = function() {};
/* */ 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:
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["runtime"] = (function() {
var $pkg = {}, $init, js, sys, Error, TypeAssertionError, errorString, ptrType$3, init, Caller, Goexit, SetFinalizer, Stack, LockOSThread, UnlockOSThread, KeepAlive;
js = $packages["github.com/gopherjs/gopherjs/js"];
sys = $packages["runtime/internal/sys"];
Error = $pkg.Error = $newType(8, $kindInterface, "runtime.Error", true, "runtime", true, null);
TypeAssertionError = $pkg.TypeAssertionError = $newType(0, $kindStruct, "runtime.TypeAssertionError", true, "runtime", true, function(interfaceString_, concreteString_, assertedString_, missingMethod_) {
this.$val = this;
if (arguments.length === 0) {
this.interfaceString = "";
this.concreteString = "";
this.assertedString = "";
this.missingMethod = "";
return;
}
this.interfaceString = interfaceString_;
this.concreteString = concreteString_;
this.assertedString = assertedString_;
this.missingMethod = missingMethod_;
});
errorString = $pkg.errorString = $newType(8, $kindString, "runtime.errorString", true, "runtime", false, null);
ptrType$3 = $ptrType(TypeAssertionError);
init = function() {
var $ptr, e, jsPkg;
jsPkg = $packages[$externalize("github.com/gopherjs/gopherjs/js", $String)];
$jsObjectPtr = jsPkg.Object.ptr;
$jsErrorPtr = jsPkg.Error.ptr;
$throwRuntimeError = (function(msg) {
var $ptr, msg;
$panic(new errorString((msg)));
});
e = $ifaceNil;
e = new TypeAssertionError.ptr("", "", "", "");
$unused(e);
};
Caller = function(skip) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, file, info, line, ok, parts, pc, skip;
pc = 0;
file = "";
line = 0;
ok = false;
info = new ($global.Error)().stack.split($externalize("\n", $String))[(skip + 2 >> 0)];
if (info === undefined) {
_tmp = 0;
_tmp$1 = "";
_tmp$2 = 0;
_tmp$3 = false;
pc = _tmp;
file = _tmp$1;
line = _tmp$2;
ok = _tmp$3;
return [pc, file, line, ok];
}
parts = info.substring(($parseInt(info.indexOf($externalize("(", $String))) >> 0) + 1 >> 0, $parseInt(info.indexOf($externalize(")", $String))) >> 0).split($externalize(":", $String));
_tmp$4 = 0;
_tmp$5 = $internalize(parts[0], $String);
_tmp$6 = $parseInt(parts[1]) >> 0;
_tmp$7 = true;
pc = _tmp$4;
file = _tmp$5;
line = _tmp$6;
ok = _tmp$7;
return [pc, file, line, ok];
};
$pkg.Caller = Caller;
Goexit = function() {
var $ptr;
$curGoroutine.exit = $externalize(true, $Bool);
$throw(null);
};
$pkg.Goexit = Goexit;
SetFinalizer = function(x, f) {
var $ptr, f, x;
};
$pkg.SetFinalizer = SetFinalizer;
Stack = function(buf, all) {
var $ptr, all, buf, s;
s = new ($global.Error)().stack;
if (s === undefined) {
return 0;
}
return $copyString(buf, $internalize(s.substr(($parseInt(s.indexOf($externalize("\n", $String))) >> 0) + 1 >> 0), $String));
};
$pkg.Stack = Stack;
LockOSThread = function() {
var $ptr;
};
$pkg.LockOSThread = LockOSThread;
UnlockOSThread = function() {
var $ptr;
};
$pkg.UnlockOSThread = UnlockOSThread;
KeepAlive = function(param) {
var $ptr, param;
};
$pkg.KeepAlive = KeepAlive;
TypeAssertionError.ptr.prototype.RuntimeError = function() {
var $ptr;
};
TypeAssertionError.prototype.RuntimeError = function() { return this.$val.RuntimeError(); };
TypeAssertionError.ptr.prototype.Error = function() {
var $ptr, e, inter;
e = this;
inter = e.interfaceString;
if (inter === "") {
inter = "interface";
}
if (e.concreteString === "") {
return "interface conversion: " + inter + " is nil, not " + e.assertedString;
}
if (e.missingMethod === "") {
return "interface conversion: " + inter + " is " + e.concreteString + ", not " + e.assertedString;
}
return "interface conversion: " + e.concreteString + " is not " + e.assertedString + ": missing method " + e.missingMethod;
};
TypeAssertionError.prototype.Error = function() { return this.$val.Error(); };
errorString.prototype.RuntimeError = function() {
var $ptr, e;
e = this.$val;
};
$ptrType(errorString).prototype.RuntimeError = function() { return new errorString(this.$get()).RuntimeError(); };
errorString.prototype.Error = function() {
var $ptr, e;
e = this.$val;
return "runtime error: " + (e);
};
$ptrType(errorString).prototype.Error = function() { return new errorString(this.$get()).Error(); };
ptrType$3.methods = [{prop: "RuntimeError", name: "RuntimeError", pkg: "", typ: $funcType([], [], false)}, {prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
errorString.methods = [{prop: "RuntimeError", name: "RuntimeError", pkg: "", typ: $funcType([], [], false)}, {prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
Error.init([{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "RuntimeError", name: "RuntimeError", pkg: "", typ: $funcType([], [], false)}]);
TypeAssertionError.init("runtime", [{prop: "interfaceString", name: "interfaceString", exported: false, typ: $String, tag: ""}, {prop: "concreteString", name: "concreteString", exported: false, typ: $String, tag: ""}, {prop: "assertedString", name: "assertedString", exported: false, typ: $String, tag: ""}, {prop: "missingMethod", name: "missingMethod", exported: false, typ: $String, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sys.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
init();
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["errors"] = (function() {
var $pkg = {}, $init, errorString, ptrType, New;
errorString = $pkg.errorString = $newType(0, $kindStruct, "errors.errorString", true, "errors", false, function(s_) {
this.$val = this;
if (arguments.length === 0) {
this.s = "";
return;
}
this.s = s_;
});
ptrType = $ptrType(errorString);
New = function(text) {
var $ptr, text;
return new errorString.ptr(text);
};
$pkg.New = New;
errorString.ptr.prototype.Error = function() {
var $ptr, e;
e = this;
return e.s;
};
errorString.prototype.Error = function() { return this.$val.Error(); };
ptrType.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
errorString.init("errors", [{prop: "s", name: "s", exported: false, typ: $String, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["internal/race"] = (function() {
var $pkg = {}, $init, Acquire, Release, ReleaseMerge, Disable, Enable, ReadRange, WriteRange;
Acquire = function(addr) {
var $ptr, addr;
};
$pkg.Acquire = Acquire;
Release = function(addr) {
var $ptr, addr;
};
$pkg.Release = Release;
ReleaseMerge = function(addr) {
var $ptr, addr;
};
$pkg.ReleaseMerge = ReleaseMerge;
Disable = function() {
var $ptr;
};
$pkg.Disable = Disable;
Enable = function() {
var $ptr;
};
$pkg.Enable = Enable;
ReadRange = function(addr, len) {
var $ptr, addr, len;
};
$pkg.ReadRange = ReadRange;
WriteRange = function(addr, len) {
var $ptr, addr, len;
};
$pkg.WriteRange = WriteRange;
$init = function() {
$pkg.$init = function() {};
/* */ 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:
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["sync/atomic"] = (function() {
var $pkg = {}, $init, js, Value, noCopy, ptrType, ptrType$1, CompareAndSwapInt32, CompareAndSwapUint64, AddInt32, LoadInt32, LoadUint32, LoadUint64, StoreInt32, StoreUint32;
js = $packages["github.com/gopherjs/gopherjs/js"];
Value = $pkg.Value = $newType(0, $kindStruct, "atomic.Value", true, "sync/atomic", true, function(noCopy_, v_) {
this.$val = this;
if (arguments.length === 0) {
this.noCopy = new noCopy.ptr();
this.v = $ifaceNil;
return;
}
this.noCopy = noCopy_;
this.v = v_;
});
noCopy = $pkg.noCopy = $newType(0, $kindStruct, "atomic.noCopy", true, "sync/atomic", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
ptrType = $ptrType(Value);
ptrType$1 = $ptrType(noCopy);
CompareAndSwapInt32 = function(addr, old, new$1) {
var $ptr, addr, new$1, old;
if (addr.$get() === old) {
addr.$set(new$1);
return true;
}
return false;
};
$pkg.CompareAndSwapInt32 = CompareAndSwapInt32;
CompareAndSwapUint64 = function(addr, old, new$1) {
var $ptr, addr, new$1, old, x;
if ((x = addr.$get(), (x.$high === old.$high && x.$low === old.$low))) {
addr.$set(new$1);
return true;
}
return false;
};
$pkg.CompareAndSwapUint64 = CompareAndSwapUint64;
AddInt32 = function(addr, delta) {
var $ptr, addr, delta, new$1;
new$1 = addr.$get() + delta >> 0;
addr.$set(new$1);
return new$1;
};
$pkg.AddInt32 = AddInt32;
LoadInt32 = function(addr) {
var $ptr, addr;
return addr.$get();
};
$pkg.LoadInt32 = LoadInt32;
LoadUint32 = function(addr) {
var $ptr, addr;
return addr.$get();
};
$pkg.LoadUint32 = LoadUint32;
LoadUint64 = function(addr) {
var $ptr, addr;
return addr.$get();
};
$pkg.LoadUint64 = LoadUint64;
StoreInt32 = function(addr, val) {
var $ptr, addr, val;
addr.$set(val);
};
$pkg.StoreInt32 = StoreInt32;
StoreUint32 = function(addr, val) {
var $ptr, addr, val;
addr.$set(val);
};
$pkg.StoreUint32 = StoreUint32;
Value.ptr.prototype.Load = function() {
var $ptr, v, x;
x = $ifaceNil;
v = this;
x = v.v;
return x;
};
Value.prototype.Load = function() { return this.$val.Load(); };
Value.ptr.prototype.Store = function(x) {
var $ptr, v, x;
v = this;
if ($interfaceIsEqual(x, $ifaceNil)) {
$panic(new $String("sync/atomic: store of nil value into Value"));
}
if (!($interfaceIsEqual(v.v, $ifaceNil)) && !(x.constructor === v.v.constructor)) {
$panic(new $String("sync/atomic: store of inconsistently typed value into Value"));
}
v.v = x;
};
Value.prototype.Store = function(x) { return this.$val.Store(x); };
noCopy.ptr.prototype.Lock = function() {
var $ptr;
};
noCopy.prototype.Lock = function() { return this.$val.Lock(); };
ptrType.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([$emptyInterface], [], false)}];
ptrType$1.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}];
Value.init("sync/atomic", [{prop: "noCopy", name: "noCopy", exported: false, typ: noCopy, tag: ""}, {prop: "v", name: "v", exported: false, typ: $emptyInterface, tag: ""}]);
noCopy.init("", []);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["sync"] = (function() {
var $pkg = {}, $init, race, runtime, atomic, Cond, Pool, WaitGroup, copyChecker, noCopy, Mutex, Locker, Once, poolLocal, notifyList, RWMutex, rlocker, ptrType, sliceType, ptrType$1, chanType, sliceType$1, structType, ptrType$3, ptrType$6, sliceType$4, ptrType$7, ptrType$8, ptrType$9, funcType, arrayType$1, ptrType$10, ptrType$11, chanType$1, ptrType$12, ptrType$13, ptrType$14, funcType$1, ptrType$15, arrayType$2, semWaiters, runtime_SemacquireMutex, allPools, runtime_registerPoolCleanup, runtime_Semacquire, runtime_Semrelease, runtime_notifyListCheck, runtime_canSpin, NewCond, throw$1, poolCleanup, init, indexLocal, init$1, runtime_doSpin;
race = $packages["internal/race"];
runtime = $packages["runtime"];
atomic = $packages["sync/atomic"];
Cond = $pkg.Cond = $newType(0, $kindStruct, "sync.Cond", true, "sync", true, function(noCopy_, L_, notify_, checker_, n_, ch_) {
this.$val = this;
if (arguments.length === 0) {
this.noCopy = new noCopy.ptr();
this.L = $ifaceNil;
this.notify = new notifyList.ptr(0, 0, 0, 0, 0);
this.checker = 0;
this.n = 0;
this.ch = $chanNil;
return;
}
this.noCopy = noCopy_;
this.L = L_;
this.notify = notify_;
this.checker = checker_;
this.n = n_;
this.ch = ch_;
});
Pool = $pkg.Pool = $newType(0, $kindStruct, "sync.Pool", true, "sync", true, function(local_, localSize_, store_, New_) {
this.$val = this;
if (arguments.length === 0) {
this.local = 0;
this.localSize = 0;
this.store = sliceType$4.nil;
this.New = $throwNilPointerError;
return;
}
this.local = local_;
this.localSize = localSize_;
this.store = store_;
this.New = New_;
});
WaitGroup = $pkg.WaitGroup = $newType(0, $kindStruct, "sync.WaitGroup", true, "sync", true, function(counter_, ch_, state1_, sema_) {
this.$val = this;
if (arguments.length === 0) {
this.counter = 0;
this.ch = $chanNil;
this.state1 = arrayType$1.zero();
this.sema = 0;
return;
}
this.counter = counter_;
this.ch = ch_;
this.state1 = state1_;
this.sema = sema_;
});
copyChecker = $pkg.copyChecker = $newType(4, $kindUintptr, "sync.copyChecker", true, "sync", false, null);
noCopy = $pkg.noCopy = $newType(0, $kindStruct, "sync.noCopy", true, "sync", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
Mutex = $pkg.Mutex = $newType(0, $kindStruct, "sync.Mutex", true, "sync", true, function(state_, sema_) {
this.$val = this;
if (arguments.length === 0) {
this.state = 0;
this.sema = 0;
return;
}
this.state = state_;
this.sema = sema_;
});
Locker = $pkg.Locker = $newType(8, $kindInterface, "sync.Locker", true, "sync", true, null);
Once = $pkg.Once = $newType(0, $kindStruct, "sync.Once", true, "sync", true, function(m_, done_) {
this.$val = this;
if (arguments.length === 0) {
this.m = new Mutex.ptr(0, 0);
this.done = 0;
return;
}
this.m = m_;
this.done = done_;
});
poolLocal = $pkg.poolLocal = $newType(0, $kindStruct, "sync.poolLocal", true, "sync", false, function(private$0_, shared_, Mutex_, pad_) {
this.$val = this;
if (arguments.length === 0) {
this.private$0 = $ifaceNil;
this.shared = sliceType$4.nil;
this.Mutex = new Mutex.ptr(0, 0);
this.pad = arrayType$2.zero();
return;
}
this.private$0 = private$0_;
this.shared = shared_;
this.Mutex = Mutex_;
this.pad = pad_;
});
notifyList = $pkg.notifyList = $newType(0, $kindStruct, "sync.notifyList", true, "sync", false, function(wait_, notify_, lock_, head_, tail_) {
this.$val = this;
if (arguments.length === 0) {
this.wait = 0;
this.notify = 0;
this.lock = 0;
this.head = 0;
this.tail = 0;
return;
}
this.wait = wait_;
this.notify = notify_;
this.lock = lock_;
this.head = head_;
this.tail = tail_;
});
RWMutex = $pkg.RWMutex = $newType(0, $kindStruct, "sync.RWMutex", true, "sync", true, function(w_, writerSem_, readerSem_, readerCount_, readerWait_) {
this.$val = this;
if (arguments.length === 0) {
this.w = new Mutex.ptr(0, 0);
this.writerSem = 0;
this.readerSem = 0;
this.readerCount = 0;
this.readerWait = 0;
return;
}
this.w = w_;
this.writerSem = writerSem_;
this.readerSem = readerSem_;
this.readerCount = readerCount_;
this.readerWait = readerWait_;
});
rlocker = $pkg.rlocker = $newType(0, $kindStruct, "sync.rlocker", true, "sync", false, function(w_, writerSem_, readerSem_, readerCount_, readerWait_) {
this.$val = this;
if (arguments.length === 0) {
this.w = new Mutex.ptr(0, 0);
this.writerSem = 0;
this.readerSem = 0;
this.readerCount = 0;
this.readerWait = 0;
return;
}
this.w = w_;
this.writerSem = writerSem_;
this.readerSem = readerSem_;
this.readerCount = readerCount_;
this.readerWait = readerWait_;
});
ptrType = $ptrType(Pool);
sliceType = $sliceType(ptrType);
ptrType$1 = $ptrType($Uint32);
chanType = $chanType($Bool, false, false);
sliceType$1 = $sliceType(chanType);
structType = $structType("", []);
ptrType$3 = $ptrType($Int32);
ptrType$6 = $ptrType(poolLocal);
sliceType$4 = $sliceType($emptyInterface);
ptrType$7 = $ptrType(rlocker);
ptrType$8 = $ptrType(RWMutex);
ptrType$9 = $ptrType(Cond);
funcType = $funcType([], [$emptyInterface], false);
arrayType$1 = $arrayType($Uint8, 12);
ptrType$10 = $ptrType($Uint64);
ptrType$11 = $ptrType(WaitGroup);
chanType$1 = $chanType(structType, false, false);
ptrType$12 = $ptrType(copyChecker);
ptrType$13 = $ptrType(noCopy);
ptrType$14 = $ptrType(Mutex);
funcType$1 = $funcType([], [], false);
ptrType$15 = $ptrType(Once);
arrayType$2 = $arrayType($Uint8, 128);
Cond.ptr.prototype.Wait = function() {
var $ptr, _r, c, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
c.n = c.n + (1) >> 0;
if (c.ch === $chanNil) {
c.ch = new $Chan($Bool, 0);
}
$r = c.L.Unlock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r = $recv(c.ch); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r[0];
$r = c.L.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Cond.ptr.prototype.Wait }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
};
Cond.prototype.Wait = function() { return this.$val.Wait(); };
Cond.ptr.prototype.Signal = function() {
var $ptr, c, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
if (c.n === 0) {
$s = -1; return;
}
c.n = c.n - (1) >> 0;
$r = $send(c.ch, true); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Cond.ptr.prototype.Signal }; } $f.$ptr = $ptr; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
};
Cond.prototype.Signal = function() { return this.$val.Signal(); };
Cond.ptr.prototype.Broadcast = function() {
var $ptr, c, i, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; c = $f.c; i = $f.i; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
n = c.n;
c.n = 0;
i = 0;
/* while (true) { */ case 1:
/* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 2; continue; }
$r = $send(c.ch, true); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
i = i + (1) >> 0;
/* } */ $s = 1; continue; case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Cond.ptr.prototype.Broadcast }; } $f.$ptr = $ptr; $f.c = c; $f.i = i; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
};
Cond.prototype.Broadcast = function() { return this.$val.Broadcast(); };
Pool.ptr.prototype.Get = function() {
var $ptr, _r, p, x, x$1, x$2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
p = this;
/* */ if (p.store.$length === 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (p.store.$length === 0) { */ case 1:
/* */ if (!(p.New === $throwNilPointerError)) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!(p.New === $throwNilPointerError)) { */ case 3:
_r = p.New(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 4:
$s = -1; return $ifaceNil;
/* } */ case 2:
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]));
p.store = $subslice(p.store, 0, (p.store.$length - 1 >> 0));
$s = -1; return x$2;
/* */ } return; } if ($f === undefined) { $f = { $blk: Pool.ptr.prototype.Get }; } $f.$ptr = $ptr; $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;
};
Pool.prototype.Get = function() { return this.$val.Get(); };
Pool.ptr.prototype.Put = function(x) {
var $ptr, p, x;
p = this;
if ($interfaceIsEqual(x, $ifaceNil)) {
return;
}
p.store = $append(p.store, x);
};
Pool.prototype.Put = function(x) { return this.$val.Put(x); };
runtime_registerPoolCleanup = function(cleanup) {
var $ptr, cleanup;
};
runtime_Semacquire = function(s) {
var $ptr, _entry, _key, _r, ch, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
/* */ if (s.$get() === 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (s.$get() === 0) { */ case 1:
ch = new $Chan($Bool, 0);
_key = s; (semWaiters || $throwRuntimeError("assignment to entry in nil map"))[ptrType$1.keyFor(_key)] = { k: _key, v: $append((_entry = semWaiters[ptrType$1.keyFor(s)], _entry !== undefined ? _entry.v : sliceType$1.nil), ch) };
_r = $recv(ch); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r[0];
/* } */ case 2:
s.$set(s.$get() - (1) >>> 0);
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: runtime_Semacquire }; } $f.$ptr = $ptr; $f._entry = _entry; $f._key = _key; $f._r = _r; $f.ch = ch; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
runtime_Semrelease = function(s) {
var $ptr, _entry, _key, ch, s, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
s.$set(s.$get() + (1) >>> 0);
w = (_entry = semWaiters[ptrType$1.keyFor(s)], _entry !== undefined ? _entry.v : sliceType$1.nil);
if (w.$length === 0) {
$s = -1; return;
}
ch = (0 >= w.$length ? ($throwRuntimeError("index out of range"), undefined) : w.$array[w.$offset + 0]);
w = $subslice(w, 1);
_key = s; (semWaiters || $throwRuntimeError("assignment to entry in nil map"))[ptrType$1.keyFor(_key)] = { k: _key, v: w };
if (w.$length === 0) {
delete semWaiters[ptrType$1.keyFor(s)];
}
$r = $send(ch, true); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: runtime_Semrelease }; } $f.$ptr = $ptr; $f._entry = _entry; $f._key = _key; $f.ch = ch; $f.s = s; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
runtime_notifyListCheck = function(size) {
var $ptr, size;
};
runtime_canSpin = function(i) {
var $ptr, i;
return false;
};
WaitGroup.ptr.prototype.Add = function(delta) {
var $ptr, delta, wg;
wg = this;
wg.counter = wg.counter + (delta) >> 0;
if (wg.counter < 0) {
$panic(new $String("sync: negative WaitGroup counter"));
}
if (wg.counter > 0 && wg.ch === $chanNil) {
wg.ch = new $Chan(structType, 0);
}
if ((wg.counter === 0) && !(wg.ch === $chanNil)) {
$close(wg.ch);
wg.ch = $chanNil;
}
};
WaitGroup.prototype.Add = function(delta) { return this.$val.Add(delta); };
WaitGroup.ptr.prototype.Wait = function() {
var $ptr, _r, wg, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; wg = $f.wg; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
wg = this;
/* */ if (wg.counter > 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (wg.counter > 0) { */ case 1:
_r = $recv(wg.ch); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r[0];
/* } */ case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: WaitGroup.ptr.prototype.Wait }; } $f.$ptr = $ptr; $f._r = _r; $f.wg = wg; $f.$s = $s; $f.$r = $r; return $f;
};
WaitGroup.prototype.Wait = function() { return this.$val.Wait(); };
NewCond = function(l) {
var $ptr, l;
return new Cond.ptr(new noCopy.ptr(), l, new notifyList.ptr(0, 0, 0, 0, 0), 0, 0, $chanNil);
};
$pkg.NewCond = NewCond;
noCopy.ptr.prototype.Lock = function() {
var $ptr;
};
noCopy.prototype.Lock = function() { return this.$val.Lock(); };
throw$1 = function() {
$throwRuntimeError("native function not implemented: sync.throw");
};
Mutex.ptr.prototype.Lock = function() {
var $ptr, awoke, iter, m, new$1, old, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; awoke = $f.awoke; iter = $f.iter; m = $f.m; new$1 = $f.new$1; old = $f.old; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
m = this;
if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$3(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), 0, 1)) {
if (false) {
race.Acquire((m));
}
$s = -1; return;
}
awoke = false;
iter = 0;
/* while (true) { */ case 1:
old = m.state;
new$1 = old | 1;
/* */ if (!(((old & 1) === 0))) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!(((old & 1) === 0))) { */ case 3:
if (runtime_canSpin(iter)) {
if (!awoke && ((old & 2) === 0) && !(((old >> 2 >> 0) === 0)) && atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$3(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, old | 2)) {
awoke = true;
}
runtime_doSpin();
iter = iter + (1) >> 0;
/* continue; */ $s = 1; continue;
}
new$1 = old + 4 >> 0;
/* } */ case 4:
if (awoke) {
if ((new$1 & 2) === 0) {
throw$1("sync: inconsistent mutex state");
}
new$1 = (new$1 & ~(2)) >> 0;
}
/* */ if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$3(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, new$1)) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$3(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, new$1)) { */ case 5:
if ((old & 1) === 0) {
/* break; */ $s = 2; continue;
}
$r = runtime_SemacquireMutex((m.$ptr_sema || (m.$ptr_sema = new ptrType$1(function() { return this.$target.sema; }, function($v) { this.$target.sema = $v; }, m)))); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
awoke = true;
iter = 0;
/* } */ case 6:
/* } */ $s = 1; continue; case 2:
if (false) {
race.Acquire((m));
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Mutex.ptr.prototype.Lock }; } $f.$ptr = $ptr; $f.awoke = awoke; $f.iter = iter; $f.m = m; $f.new$1 = new$1; $f.old = old; $f.$s = $s; $f.$r = $r; return $f;
};
Mutex.prototype.Lock = function() { return this.$val.Lock(); };
Mutex.ptr.prototype.Unlock = function() {
var $ptr, m, new$1, old, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; m = $f.m; new$1 = $f.new$1; old = $f.old; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
m = this;
if (false) {
$unused(m.state);
race.Release((m));
}
new$1 = atomic.AddInt32((m.$ptr_state || (m.$ptr_state = new ptrType$3(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), -1);
if ((((new$1 + 1 >> 0)) & 1) === 0) {
throw$1("sync: unlock of unlocked mutex");
}
old = new$1;
/* while (true) { */ case 1:
if (((old >> 2 >> 0) === 0) || !(((old & 3) === 0))) {
$s = -1; return;
}
new$1 = ((old - 4 >> 0)) | 2;
/* */ if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$3(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, new$1)) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$3(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, new$1)) { */ case 3:
$r = runtime_Semrelease((m.$ptr_sema || (m.$ptr_sema = new ptrType$1(function() { return this.$target.sema; }, function($v) { this.$target.sema = $v; }, m)))); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } */ case 4:
old = m.state;
/* } */ $s = 1; continue; case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Mutex.ptr.prototype.Unlock }; } $f.$ptr = $ptr; $f.m = m; $f.new$1 = new$1; $f.old = old; $f.$s = $s; $f.$r = $r; return $f;
};
Mutex.prototype.Unlock = function() { return this.$val.Unlock(); };
Once.ptr.prototype.Do = function(f) {
var $ptr, f, o, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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);
o = this;
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) {
$s = -1; return;
}
$r = o.m.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(o.m, "Unlock"), []]);
/* */ if (o.done === 0) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (o.done === 0) { */ case 2:
$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]]);
$r = f(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 3:
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Once.ptr.prototype.Do }; } $f.$ptr = $ptr; $f.f = f; $f.o = o; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Once.prototype.Do = function(f) { return this.$val.Do(f); };
poolCleanup = function() {
var $ptr, _i, _i$1, _ref, _ref$1, i, i$1, j, l, p, x;
_ref = allPools;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
((i < 0 || i >= allPools.$length) ? ($throwRuntimeError("index out of range"), undefined) : allPools.$array[allPools.$offset + i] = ptrType.nil);
i$1 = 0;
while (true) {
if (!(i$1 < ((p.localSize >> 0)))) { break; }
l = indexLocal(p.local, i$1);
l.private$0 = $ifaceNil;
_ref$1 = l.shared;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
j = _i$1;
(x = l.shared, ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j] = $ifaceNil));
_i$1++;
}
l.shared = sliceType$4.nil;
i$1 = i$1 + (1) >> 0;
}
p.local = 0;
p.localSize = 0;
_i++;
}
allPools = new sliceType([]);
};
init = function() {
var $ptr;
runtime_registerPoolCleanup(poolCleanup);
};
indexLocal = function(l, i) {
var $ptr, i, l, x;
return (x = (l), (x.nilCheck, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i])));
};
init$1 = function() {
var $ptr, n;
n = new notifyList.ptr(0, 0, 0, 0, 0);
runtime_notifyListCheck(20);
};
runtime_doSpin = function() {
$throwRuntimeError("native function not implemented: sync.runtime_doSpin");
};
RWMutex.ptr.prototype.RLock = function() {
var $ptr, rw, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; rw = $f.rw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
rw = this;
if (false) {
$unused(rw.w.state);
race.Disable();
}
/* */ if (atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$3(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), 1) < 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$3(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), 1) < 0) { */ case 1:
$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; }
/* } */ case 2:
if (false) {
race.Enable();
race.Acquire(((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$1(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw)))));
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: RWMutex.ptr.prototype.RLock }; } $f.$ptr = $ptr; $f.rw = rw; $f.$s = $s; $f.$r = $r; return $f;
};
RWMutex.prototype.RLock = function() { return this.$val.RLock(); };
RWMutex.ptr.prototype.RUnlock = function() {
var $ptr, r, rw, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; r = $f.r; rw = $f.rw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
rw = this;
if (false) {
$unused(rw.w.state);
race.ReleaseMerge(((rw.$ptr_writerSem || (rw.$ptr_writerSem = new ptrType$1(function() { return this.$target.writerSem; }, function($v) { this.$target.writerSem = $v; }, rw)))));
race.Disable();
}
r = atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$3(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), -1);
/* */ if (r < 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (r < 0) { */ case 1:
if (((r + 1 >> 0) === 0) || ((r + 1 >> 0) === -1073741824)) {
race.Enable();
throw$1("sync: RUnlock of unlocked RWMutex");
}
/* */ if (atomic.AddInt32((rw.$ptr_readerWait || (rw.$ptr_readerWait = new ptrType$3(function() { return this.$target.readerWait; }, function($v) { this.$target.readerWait = $v; }, rw))), -1) === 0) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (atomic.AddInt32((rw.$ptr_readerWait || (rw.$ptr_readerWait = new ptrType$3(function() { return this.$target.readerWait; }, function($v) { this.$target.readerWait = $v; }, rw))), -1) === 0) { */ case 3:
$r = runtime_Semrelease((rw.$ptr_writerSem || (rw.$ptr_writerSem = new ptrType$1(function() { return this.$target.writerSem; }, function($v) { this.$target.writerSem = $v; }, rw)))); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 4:
/* } */ case 2:
if (false) {
race.Enable();
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: RWMutex.ptr.prototype.RUnlock }; } $f.$ptr = $ptr; $f.r = r; $f.rw = rw; $f.$s = $s; $f.$r = $r; return $f;
};
RWMutex.prototype.RUnlock = function() { return this.$val.RUnlock(); };
RWMutex.ptr.prototype.Lock = function() {
var $ptr, r, rw, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; r = $f.r; rw = $f.rw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
rw = this;
if (false) {
$unused(rw.w.state);
race.Disable();
}
$r = rw.w.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
r = atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$3(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), -1073741824) + 1073741824 >> 0;
/* */ if (!((r === 0)) && !((atomic.AddInt32((rw.$ptr_readerWait || (rw.$ptr_readerWait = new ptrType$3(function() { return this.$target.readerWait; }, function($v) { this.$target.readerWait = $v; }, rw))), r) === 0))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!((r === 0)) && !((atomic.AddInt32((rw.$ptr_readerWait || (rw.$ptr_readerWait = new ptrType$3(function() { return this.$target.readerWait; }, function($v) { this.$target.readerWait = $v; }, rw))), r) === 0))) { */ case 2:
$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; }
/* } */ case 3:
if (false) {
race.Enable();
race.Acquire(((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$1(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw)))));
race.Acquire(((rw.$ptr_writerSem || (rw.$ptr_writerSem = new ptrType$1(function() { return this.$target.writerSem; }, function($v) { this.$target.writerSem = $v; }, rw)))));
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: RWMutex.ptr.prototype.Lock }; } $f.$ptr = $ptr; $f.r = r; $f.rw = rw; $f.$s = $s; $f.$r = $r; return $f;
};
RWMutex.prototype.Lock = function() { return this.$val.Lock(); };
RWMutex.ptr.prototype.Unlock = function() {
var $ptr, i, r, rw, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; i = $f.i; r = $f.r; rw = $f.rw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
rw = this;
if (false) {
$unused(rw.w.state);
race.Release(((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$1(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw)))));
race.Release(((rw.$ptr_writerSem || (rw.$ptr_writerSem = new ptrType$1(function() { return this.$target.writerSem; }, function($v) { this.$target.writerSem = $v; }, rw)))));
race.Disable();
}
r = atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$3(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), 1073741824);
if (r >= 1073741824) {
race.Enable();
throw$1("sync: Unlock of unlocked RWMutex");
}
i = 0;
/* while (true) { */ case 1:
/* if (!(i < ((r >> 0)))) { break; } */ if(!(i < ((r >> 0)))) { $s = 2; continue; }
$r = runtime_Semrelease((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; }
i = i + (1) >> 0;
/* } */ $s = 1; continue; case 2:
$r = rw.w.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (false) {
race.Enable();
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: RWMutex.ptr.prototype.Unlock }; } $f.$ptr = $ptr; $f.i = i; $f.r = r; $f.rw = rw; $f.$s = $s; $f.$r = $r; return $f;
};
RWMutex.prototype.Unlock = function() { return this.$val.Unlock(); };
RWMutex.ptr.prototype.RLocker = function() {
var $ptr, rw;
rw = this;
return ($pointerOfStructConversion(rw, ptrType$7));
};
RWMutex.prototype.RLocker = function() { return this.$val.RLocker(); };
rlocker.ptr.prototype.Lock = function() {
var $ptr, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
$r = ($pointerOfStructConversion(r, ptrType$8)).RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: rlocker.ptr.prototype.Lock }; } $f.$ptr = $ptr; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
rlocker.prototype.Lock = function() { return this.$val.Lock(); };
rlocker.ptr.prototype.Unlock = function() {
var $ptr, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
$r = ($pointerOfStructConversion(r, ptrType$8)).RUnlock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: rlocker.ptr.prototype.Unlock }; } $f.$ptr = $ptr; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
rlocker.prototype.Unlock = function() { return this.$val.Unlock(); };
WaitGroup.ptr.prototype.Done = function() {
var $ptr, wg;
wg = this;
wg.Add(-1);
};
WaitGroup.prototype.Done = function() { return this.$val.Done(); };
ptrType$9.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)}];
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$6], false)}, {prop: "pinSlow", name: "pinSlow", pkg: "sync", typ: $funcType([], [ptrType$6], false)}];
ptrType$11.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$10], false)}, {prop: "Done", name: "Done", pkg: "", typ: $funcType([], [], false)}];
ptrType$12.methods = [{prop: "check", name: "check", pkg: "sync", typ: $funcType([], [], false)}];
ptrType$13.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}];
ptrType$14.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}];
ptrType$15.methods = [{prop: "Do", name: "Do", pkg: "", typ: $funcType([funcType$1], [], false)}];
ptrType$8.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)}];
ptrType$7.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}];
Cond.init("sync", [{prop: "noCopy", name: "noCopy", exported: false, typ: noCopy, tag: ""}, {prop: "L", name: "L", exported: true, typ: Locker, tag: ""}, {prop: "notify", name: "notify", exported: false, typ: notifyList, tag: ""}, {prop: "checker", name: "checker", exported: false, typ: copyChecker, tag: ""}, {prop: "n", name: "n", exported: false, typ: $Int, tag: ""}, {prop: "ch", name: "ch", exported: false, typ: chanType, tag: ""}]);
Pool.init("sync", [{prop: "local", name: "local", exported: false, typ: $UnsafePointer, tag: ""}, {prop: "localSize", name: "localSize", exported: false, typ: $Uintptr, tag: ""}, {prop: "store", name: "store", exported: false, typ: sliceType$4, tag: ""}, {prop: "New", name: "New", exported: true, typ: funcType, tag: ""}]);
WaitGroup.init("sync", [{prop: "counter", name: "counter", exported: false, typ: $Int, tag: ""}, {prop: "ch", name: "ch", exported: false, typ: chanType$1, tag: ""}, {prop: "state1", name: "state1", exported: false, typ: arrayType$1, tag: ""}, {prop: "sema", name: "sema", exported: false, typ: $Uint32, tag: ""}]);
noCopy.init("", []);
Mutex.init("sync", [{prop: "state", name: "state", exported: false, typ: $Int32, tag: ""}, {prop: "sema", name: "sema", exported: false, typ: $Uint32, tag: ""}]);
Locker.init([{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}]);
Once.init("sync", [{prop: "m", name: "m", exported: false, typ: Mutex, tag: ""}, {prop: "done", name: "done", exported: false, typ: $Uint32, tag: ""}]);
poolLocal.init("sync", [{prop: "private$0", name: "private", exported: false, typ: $emptyInterface, tag: ""}, {prop: "shared", name: "shared", exported: false, typ: sliceType$4, tag: ""}, {prop: "Mutex", name: "", exported: true, typ: Mutex, tag: ""}, {prop: "pad", name: "pad", exported: false, typ: arrayType$2, tag: ""}]);
notifyList.init("sync", [{prop: "wait", name: "wait", exported: false, typ: $Uint32, tag: ""}, {prop: "notify", name: "notify", exported: false, typ: $Uint32, tag: ""}, {prop: "lock", name: "lock", exported: false, typ: $Uintptr, tag: ""}, {prop: "head", name: "head", exported: false, typ: $UnsafePointer, tag: ""}, {prop: "tail", name: "tail", exported: false, typ: $UnsafePointer, tag: ""}]);
RWMutex.init("sync", [{prop: "w", name: "w", exported: false, typ: Mutex, tag: ""}, {prop: "writerSem", name: "writerSem", exported: false, typ: $Uint32, tag: ""}, {prop: "readerSem", name: "readerSem", exported: false, typ: $Uint32, tag: ""}, {prop: "readerCount", name: "readerCount", exported: false, typ: $Int32, tag: ""}, {prop: "readerWait", name: "readerWait", exported: false, typ: $Int32, tag: ""}]);
rlocker.init("sync", [{prop: "w", name: "w", exported: false, typ: Mutex, tag: ""}, {prop: "writerSem", name: "writerSem", exported: false, typ: $Uint32, tag: ""}, {prop: "readerSem", name: "readerSem", exported: false, typ: $Uint32, tag: ""}, {prop: "readerCount", name: "readerCount", exported: false, typ: $Int32, tag: ""}, {prop: "readerWait", name: "readerWait", exported: false, typ: $Int32, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = race.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = runtime.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = atomic.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
allPools = sliceType.nil;
semWaiters = {};
runtime_SemacquireMutex = runtime_Semacquire;
init();
init$1();
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["io"] = (function() {
var $pkg = {}, $init, errors, sync, Reader, Writer, Closer, ReadCloser, WriteCloser, ReaderFrom, WriterTo, ReaderAt, ByteScanner, ByteWriter, RuneScanner, stringWriter, LimitedReader, SectionReader, eofReader, multiReader, sliceType, ptrType$1, sliceType$1, ptrType$2, ptrType$3, errWhence, errOffset, WriteString, ReadAtLeast, ReadFull, CopyN, Copy, CopyBuffer, copyBuffer, LimitReader, NewSectionReader, MultiReader;
errors = $packages["errors"];
sync = $packages["sync"];
Reader = $pkg.Reader = $newType(8, $kindInterface, "io.Reader", true, "io", true, null);
Writer = $pkg.Writer = $newType(8, $kindInterface, "io.Writer", true, "io", true, null);
Closer = $pkg.Closer = $newType(8, $kindInterface, "io.Closer", true, "io", true, null);
ReadCloser = $pkg.ReadCloser = $newType(8, $kindInterface, "io.ReadCloser", true, "io", true, null);
WriteCloser = $pkg.WriteCloser = $newType(8, $kindInterface, "io.WriteCloser", true, "io", true, null);
ReaderFrom = $pkg.ReaderFrom = $newType(8, $kindInterface, "io.ReaderFrom", true, "io", true, null);
WriterTo = $pkg.WriterTo = $newType(8, $kindInterface, "io.WriterTo", true, "io", true, null);
ReaderAt = $pkg.ReaderAt = $newType(8, $kindInterface, "io.ReaderAt", true, "io", true, null);
ByteScanner = $pkg.ByteScanner = $newType(8, $kindInterface, "io.ByteScanner", true, "io", true, null);
ByteWriter = $pkg.ByteWriter = $newType(8, $kindInterface, "io.ByteWriter", true, "io", true, null);
RuneScanner = $pkg.RuneScanner = $newType(8, $kindInterface, "io.RuneScanner", true, "io", true, null);
stringWriter = $pkg.stringWriter = $newType(8, $kindInterface, "io.stringWriter", true, "io", false, null);
LimitedReader = $pkg.LimitedReader = $newType(0, $kindStruct, "io.LimitedReader", true, "io", true, function(R_, N_) {
this.$val = this;
if (arguments.length === 0) {
this.R = $ifaceNil;
this.N = new $Int64(0, 0);
return;
}
this.R = R_;
this.N = N_;
});
SectionReader = $pkg.SectionReader = $newType(0, $kindStruct, "io.SectionReader", true, "io", true, function(r_, base_, off_, limit_) {
this.$val = this;
if (arguments.length === 0) {
this.r = $ifaceNil;
this.base = new $Int64(0, 0);
this.off = new $Int64(0, 0);
this.limit = new $Int64(0, 0);
return;
}
this.r = r_;
this.base = base_;
this.off = off_;
this.limit = limit_;
});
eofReader = $pkg.eofReader = $newType(0, $kindStruct, "io.eofReader", true, "io", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
multiReader = $pkg.multiReader = $newType(0, $kindStruct, "io.multiReader", true, "io", false, function(readers_) {
this.$val = this;
if (arguments.length === 0) {
this.readers = sliceType$1.nil;
return;
}
this.readers = readers_;
});
sliceType = $sliceType($Uint8);
ptrType$1 = $ptrType(multiReader);
sliceType$1 = $sliceType(Reader);
ptrType$2 = $ptrType(LimitedReader);
ptrType$3 = $ptrType(SectionReader);
WriteString = function(w, s) {
var $ptr, _r, _r$1, _tuple, _tuple$1, _tuple$2, err, n, ok, s, sw, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
_tuple = $assertType(w, stringWriter, true);
sw = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (ok) { */ case 1:
_r = sw.WriteString(s); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
n = _tuple$1[0];
err = _tuple$1[1];
$s = -1; return [n, err];
/* } */ case 2:
_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; }
_tuple$2 = _r$1;
n = _tuple$2[0];
err = _tuple$2[1];
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: WriteString }; } $f.$ptr = $ptr; $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;
};
$pkg.WriteString = WriteString;
ReadAtLeast = function(r, buf, min) {
var $ptr, _r, _tmp, _tmp$1, _tuple, buf, err, min, n, nn, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
if (buf.$length < min) {
_tmp = 0;
_tmp$1 = $pkg.ErrShortBuffer;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
/* while (true) { */ case 1:
/* if (!(n < min && $interfaceIsEqual(err, $ifaceNil))) { break; } */ if(!(n < min && $interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
nn = 0;
_r = r.Read($subslice(buf, n)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
nn = _tuple[0];
err = _tuple[1];
n = n + (nn) >> 0;
/* } */ $s = 1; continue; case 2:
if (n >= min) {
err = $ifaceNil;
} else if (n > 0 && $interfaceIsEqual(err, $pkg.EOF)) {
err = $pkg.ErrUnexpectedEOF;
}
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: ReadAtLeast }; } $f.$ptr = $ptr; $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;
};
$pkg.ReadAtLeast = ReadAtLeast;
ReadFull = function(r, buf) {
var $ptr, _r, _tuple, buf, err, n, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
_r = ReadAtLeast(r, buf, buf.$length); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: ReadFull }; } $f.$ptr = $ptr; $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;
};
$pkg.ReadFull = ReadFull;
CopyN = function(dst, src, n) {
var $ptr, _r, _tmp, _tmp$1, _tuple, dst, err, n, src, written, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
written = new $Int64(0, 0);
err = $ifaceNil;
_r = Copy(dst, LimitReader(src, n)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
written = _tuple[0];
err = _tuple[1];
if ((written.$high === n.$high && written.$low === n.$low)) {
_tmp = n;
_tmp$1 = $ifaceNil;
written = _tmp;
err = _tmp$1;
$s = -1; return [written, err];
}
if ((written.$high < n.$high || (written.$high === n.$high && written.$low < n.$low)) && $interfaceIsEqual(err, $ifaceNil)) {
err = $pkg.EOF;
}
$s = -1; return [written, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: CopyN }; } $f.$ptr = $ptr; $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;
};
$pkg.CopyN = CopyN;
Copy = function(dst, src) {
var $ptr, _r, _tuple, dst, err, src, written, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
written = new $Int64(0, 0);
err = $ifaceNil;
_r = copyBuffer(dst, src, sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
written = _tuple[0];
err = _tuple[1];
$s = -1; return [written, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Copy }; } $f.$ptr = $ptr; $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;
};
$pkg.Copy = Copy;
CopyBuffer = function(dst, src, buf) {
var $ptr, _r, _tuple, buf, dst, err, src, written, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
written = new $Int64(0, 0);
err = $ifaceNil;
if (!(buf === sliceType.nil) && (buf.$length === 0)) {
$panic(new $String("empty buffer in io.CopyBuffer"));
}
_r = copyBuffer(dst, src, buf); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
written = _tuple[0];
err = _tuple[1];
$s = -1; return [written, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: CopyBuffer }; } $f.$ptr = $ptr; $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;
};
$pkg.CopyBuffer = CopyBuffer;
copyBuffer = function(dst, src, buf) {
var $ptr, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, buf, dst, er, err, ew, nr, nw, ok, ok$1, rt, src, written, wt, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; buf = $f.buf; dst = $f.dst; er = $f.er; err = $f.err; ew = $f.ew; nr = $f.nr; nw = $f.nw; ok = $f.ok; ok$1 = $f.ok$1; rt = $f.rt; src = $f.src; written = $f.written; wt = $f.wt; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
written = new $Int64(0, 0);
err = $ifaceNil;
_tuple = $assertType(src, WriterTo, true);
wt = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (ok) { */ case 1:
_r = wt.WriteTo(dst); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
written = _tuple$1[0];
err = _tuple$1[1];
$s = -1; return [written, err];
/* } */ case 2:
_tuple$2 = $assertType(dst, ReaderFrom, true);
rt = _tuple$2[0];
ok$1 = _tuple$2[1];
/* */ if (ok$1) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (ok$1) { */ case 4:
_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; }
_tuple$3 = _r$1;
written = _tuple$3[0];
err = _tuple$3[1];
$s = -1; return [written, err];
/* } */ case 5:
if (buf === sliceType.nil) {
buf = $makeSlice(sliceType, 32768);
}
/* while (true) { */ case 7:
_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; }
_tuple$4 = _r$2;
nr = _tuple$4[0];
er = _tuple$4[1];
/* */ if (nr > 0) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (nr > 0) { */ case 10:
_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; }
_tuple$5 = _r$3;
nw = _tuple$5[0];
ew = _tuple$5[1];
if (nw > 0) {
written = (x = (new $Int64(0, nw)), new $Int64(written.$high + x.$high, written.$low + x.$low));
}
if (!($interfaceIsEqual(ew, $ifaceNil))) {
err = ew;
/* break; */ $s = 8; continue;
}
if (!((nr === nw))) {
err = $pkg.ErrShortWrite;
/* break; */ $s = 8; continue;
}
/* } */ case 11:
if (!($interfaceIsEqual(er, $ifaceNil))) {
if (!($interfaceIsEqual(er, $pkg.EOF))) {
err = er;
}
/* break; */ $s = 8; continue;
}
/* } */ $s = 7; continue; case 8:
_tmp = written;
_tmp$1 = err;
written = _tmp;
err = _tmp$1;
$s = -1; return [written, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: copyBuffer }; } $f.$ptr = $ptr; $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.buf = buf; $f.dst = dst; $f.er = er; $f.err = err; $f.ew = ew; $f.nr = nr; $f.nw = nw; $f.ok = ok; $f.ok$1 = ok$1; $f.rt = rt; $f.src = src; $f.written = written; $f.wt = wt; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
LimitReader = function(r, n) {
var $ptr, n, r;
return new LimitedReader.ptr(r, n);
};
$pkg.LimitReader = LimitReader;
LimitedReader.ptr.prototype.Read = function(p) {
var $ptr, _r, _tmp, _tmp$1, _tuple, err, l, n, p, x, x$1, x$2, x$3, x$4, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
l = this;
if ((x = l.N, (x.$high < 0 || (x.$high === 0 && x.$low <= 0)))) {
_tmp = 0;
_tmp$1 = $pkg.EOF;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
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)))) {
p = $subslice(p, 0, $flatten64(l.N));
}
_r = l.R.Read(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
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));
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: LimitedReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $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;
};
LimitedReader.prototype.Read = function(p) { return this.$val.Read(p); };
NewSectionReader = function(r, off, n) {
var $ptr, n, off, r;
return new SectionReader.ptr(r, off, off, new $Int64(off.$high + n.$high, off.$low + n.$low));
};
$pkg.NewSectionReader = NewSectionReader;
SectionReader.ptr.prototype.Read = function(p) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
s = this;
if ((x = s.off, x$1 = s.limit, (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) {
_tmp = 0;
_tmp$1 = $pkg.EOF;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
max = (x$2 = s.limit, x$3 = s.off, new $Int64(x$2.$high - x$3.$high, x$2.$low - x$3.$low));
if ((x$4 = (new $Int64(0, p.$length)), (x$4.$high > max.$high || (x$4.$high === max.$high && x$4.$low > max.$low)))) {
p = $subslice(p, 0, $flatten64(max));
}
_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; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
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));
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: SectionReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $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;
};
SectionReader.prototype.Read = function(p) { return this.$val.Read(p); };
SectionReader.ptr.prototype.Seek = function(offset, whence) {
var $ptr, _1, offset, s, whence, x, x$1, x$2, x$3, x$4;
s = this;
_1 = whence;
if (_1 === (0)) {
offset = (x = s.base, new $Int64(offset.$high + x.$high, offset.$low + x.$low));
} else if (_1 === (1)) {
offset = (x$1 = s.off, new $Int64(offset.$high + x$1.$high, offset.$low + x$1.$low));
} else if (_1 === (2)) {
offset = (x$2 = s.limit, new $Int64(offset.$high + x$2.$high, offset.$low + x$2.$low));
} else {
return [new $Int64(0, 0), errWhence];
}
if ((x$3 = s.base, (offset.$high < x$3.$high || (offset.$high === x$3.$high && offset.$low < x$3.$low)))) {
return [new $Int64(0, 0), errOffset];
}
s.off = offset;
return [(x$4 = s.base, new $Int64(offset.$high - x$4.$high, offset.$low - x$4.$low)), $ifaceNil];
};
SectionReader.prototype.Seek = function(offset, whence) { return this.$val.Seek(offset, whence); };
SectionReader.ptr.prototype.ReadAt = function(p, off) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
s = this;
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)))) {
_tmp = 0;
_tmp$1 = $pkg.EOF;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
off = (x$3 = s.base, new $Int64(off.$high + x$3.$high, off.$low + x$3.$low));
max = (x$4 = s.limit, new $Int64(x$4.$high - off.$high, x$4.$low - off.$low));
/* */ 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; }
/* */ $s = 2; continue;
/* 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:
p = $subslice(p, 0, $flatten64(max));
_r = s.r.ReadAt(p, off); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
if ($interfaceIsEqual(err, $ifaceNil)) {
err = $pkg.EOF;
}
_tmp$2 = n;
_tmp$3 = err;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
/* } */ case 2:
_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; }
_tuple$1 = _r$1;
n = _tuple$1[0];
err = _tuple$1[1];
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: SectionReader.ptr.prototype.ReadAt }; } $f.$ptr = $ptr; $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;
};
SectionReader.prototype.ReadAt = function(p, off) { return this.$val.ReadAt(p, off); };
SectionReader.ptr.prototype.Size = function() {
var $ptr, s, x, x$1;
s = this;
return (x = s.limit, x$1 = s.base, new $Int64(x.$high - x$1.$high, x.$low - x$1.$low));
};
SectionReader.prototype.Size = function() { return this.$val.Size(); };
eofReader.ptr.prototype.Read = function(param) {
var $ptr, param;
return [0, $pkg.EOF];
};
eofReader.prototype.Read = function(param) { return this.$val.Read(param); };
multiReader.ptr.prototype.Read = function(p) {
var $ptr, _r, _tmp, _tmp$1, _tuple, _tuple$1, err, mr, n, ok, p, r, x, x$1, x$2, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
mr = this;
/* while (true) { */ case 1:
/* if (!(mr.readers.$length > 0)) { break; } */ if(!(mr.readers.$length > 0)) { $s = 2; continue; }
/* */ if (mr.readers.$length === 1) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (mr.readers.$length === 1) { */ case 3:
_tuple = $assertType((x = mr.readers, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])), ptrType$1, true);
r = _tuple[0];
ok = _tuple[1];
if (ok) {
mr.readers = r.readers;
/* continue; */ $s = 1; continue;
}
/* } */ case 4:
_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; }
_tuple$1 = _r;
n = _tuple$1[0];
err = _tuple$1[1];
if ($interfaceIsEqual(err, $pkg.EOF)) {
(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))));
mr.readers = $subslice(mr.readers, 1);
}
if (n > 0 || !($interfaceIsEqual(err, $pkg.EOF))) {
if ($interfaceIsEqual(err, $pkg.EOF) && mr.readers.$length > 0) {
err = $ifaceNil;
}
$s = -1; return [n, err];
}
/* } */ $s = 1; continue; case 2:
_tmp = 0;
_tmp$1 = $pkg.EOF;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: multiReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $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;
};
multiReader.prototype.Read = function(p) { return this.$val.Read(p); };
MultiReader = function(readers) {
var $ptr, r, readers;
r = $makeSlice(sliceType$1, readers.$length);
$copySlice(r, readers);
return new multiReader.ptr(r);
};
$pkg.MultiReader = MultiReader;
ptrType$2.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}];
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)}];
eofReader.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}];
ptrType$1.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}];
Reader.init([{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]);
Writer.init([{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]);
Closer.init([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}]);
ReadCloser.init([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]);
WriteCloser.init([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]);
ReaderFrom.init([{prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([Reader], [$Int64, $error], false)}]);
WriterTo.init([{prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([Writer], [$Int64, $error], false)}]);
ReaderAt.init([{prop: "ReadAt", name: "ReadAt", pkg: "", typ: $funcType([sliceType, $Int64], [$Int, $error], false)}]);
ByteScanner.init([{prop: "ReadByte", name: "ReadByte", pkg: "", typ: $funcType([], [$Uint8, $error], false)}, {prop: "UnreadByte", name: "UnreadByte", pkg: "", typ: $funcType([], [$error], false)}]);
ByteWriter.init([{prop: "WriteByte", name: "WriteByte", pkg: "", typ: $funcType([$Uint8], [$error], false)}]);
RuneScanner.init([{prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}]);
stringWriter.init([{prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}]);
LimitedReader.init("", [{prop: "R", name: "R", exported: true, typ: Reader, tag: ""}, {prop: "N", name: "N", exported: true, typ: $Int64, tag: ""}]);
SectionReader.init("io", [{prop: "r", name: "r", exported: false, typ: ReaderAt, tag: ""}, {prop: "base", name: "base", exported: false, typ: $Int64, tag: ""}, {prop: "off", name: "off", exported: false, typ: $Int64, tag: ""}, {prop: "limit", name: "limit", exported: false, typ: $Int64, tag: ""}]);
eofReader.init("", []);
multiReader.init("io", [{prop: "readers", name: "readers", exported: false, typ: sliceType$1, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sync.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$pkg.ErrShortWrite = errors.New("short write");
$pkg.ErrShortBuffer = errors.New("short buffer");
$pkg.EOF = errors.New("EOF");
$pkg.ErrUnexpectedEOF = errors.New("unexpected EOF");
$pkg.ErrNoProgress = errors.New("multiple Read calls return no data or error");
errWhence = errors.New("Seek: invalid whence");
errOffset = errors.New("Seek: invalid offset");
$pkg.ErrClosedPipe = errors.New("io: read/write on closed pipe");
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["unicode"] = (function() {
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;
RangeTable = $pkg.RangeTable = $newType(0, $kindStruct, "unicode.RangeTable", true, "unicode", true, function(R16_, R32_, LatinOffset_) {
this.$val = this;
if (arguments.length === 0) {
this.R16 = sliceType.nil;
this.R32 = sliceType$1.nil;
this.LatinOffset = 0;
return;
}
this.R16 = R16_;
this.R32 = R32_;
this.LatinOffset = LatinOffset_;
});
Range16 = $pkg.Range16 = $newType(0, $kindStruct, "unicode.Range16", true, "unicode", true, function(Lo_, Hi_, Stride_) {
this.$val = this;
if (arguments.length === 0) {
this.Lo = 0;
this.Hi = 0;
this.Stride = 0;
return;
}
this.Lo = Lo_;
this.Hi = Hi_;
this.Stride = Stride_;
});
Range32 = $pkg.Range32 = $newType(0, $kindStruct, "unicode.Range32", true, "unicode", true, function(Lo_, Hi_, Stride_) {
this.$val = this;
if (arguments.length === 0) {
this.Lo = 0;
this.Hi = 0;
this.Stride = 0;
return;
}
this.Lo = Lo_;
this.Hi = Hi_;
this.Stride = Stride_;
});
CaseRange = $pkg.CaseRange = $newType(0, $kindStruct, "unicode.CaseRange", true, "unicode", true, function(Lo_, Hi_, Delta_) {
this.$val = this;
if (arguments.length === 0) {
this.Lo = 0;
this.Hi = 0;
this.Delta = arrayType.zero();
return;
}
this.Lo = Lo_;
this.Hi = Hi_;
this.Delta = Delta_;
});
d = $pkg.d = $newType(12, $kindArray, "unicode.d", true, "unicode", false, null);
foldPair = $pkg.foldPair = $newType(0, $kindStruct, "unicode.foldPair", true, "unicode", false, function(From_, To_) {
this.$val = this;
if (arguments.length === 0) {
this.From = 0;
this.To = 0;
return;
}
this.From = From_;
this.To = To_;
});
arrayType = $arrayType($Int32, 3);
sliceType = $sliceType(Range16);
sliceType$1 = $sliceType(Range32);
sliceType$3 = $sliceType(CaseRange);
sliceType$4 = $sliceType(foldPair);
to = function(_case, r, caseRange) {
var $ptr, _case, _q, caseRange, cr, delta, hi, lo, m, r, x;
if (_case < 0 || 3 <= _case) {
return 65533;
}
lo = 0;
hi = caseRange.$length;
while (true) {
if (!(lo < hi)) { break; }
m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
cr = ((m < 0 || m >= caseRange.$length) ? ($throwRuntimeError("index out of range"), undefined) : caseRange.$array[caseRange.$offset + m]);
if (((cr.Lo >> 0)) <= r && r <= ((cr.Hi >> 0))) {
delta = ((x = cr.Delta, ((_case < 0 || _case >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[_case])));
if (delta > 1114111) {
return ((cr.Lo >> 0)) + ((((((r - ((cr.Lo >> 0)) >> 0)) & ~1) >> 0) | (((_case & 1) >> 0)))) >> 0;
}
return r + delta >> 0;
}
if (r < ((cr.Lo >> 0))) {
hi = m;
} else {
lo = m + 1 >> 0;
}
}
return r;
};
IsDigit = function(r) {
var $ptr, r;
if (r <= 255) {
return 48 <= r && r <= 57;
}
return isExcludingLatin($pkg.Digit, r);
};
$pkg.IsDigit = IsDigit;
IsLetter = function(r) {
var $ptr, r, x;
if (((r >>> 0)) <= 255) {
return !(((((x = ((r << 24 >>> 24)), ((x < 0 || x >= properties.length) ? ($throwRuntimeError("index out of range"), undefined) : properties[x])) & 96) >>> 0) === 0));
}
return isExcludingLatin($pkg.Letter, r);
};
$pkg.IsLetter = IsLetter;
IsSpace = function(r) {
var $ptr, _1, r;
if (((r >>> 0)) <= 255) {
_1 = r;
if ((_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12)) || (_1 === (13)) || (_1 === (32)) || (_1 === (133)) || (_1 === (160))) {
return true;
}
return false;
}
return isExcludingLatin($pkg.White_Space, r);
};
$pkg.IsSpace = IsSpace;
is16 = function(ranges, r) {
var $ptr, _i, _q, _r, _r$1, _ref, hi, i, lo, m, r, range_, range_$1, ranges;
if (ranges.$length <= 18 || r <= 255) {
_ref = ranges;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
range_ = ((i < 0 || i >= ranges.$length) ? ($throwRuntimeError("index out of range"), undefined) : ranges.$array[ranges.$offset + i]);
if (r < range_.Lo) {
return false;
}
if (r <= range_.Hi) {
return (_r = ((r - range_.Lo << 16 >>> 16)) % range_.Stride, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0;
}
_i++;
}
return false;
}
lo = 0;
hi = ranges.$length;
while (true) {
if (!(lo < hi)) { break; }
m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
range_$1 = ((m < 0 || m >= ranges.$length) ? ($throwRuntimeError("index out of range"), undefined) : ranges.$array[ranges.$offset + m]);
if (range_$1.Lo <= r && r <= range_$1.Hi) {
return (_r$1 = ((r - range_$1.Lo << 16 >>> 16)) % range_$1.Stride, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0;
}
if (r < range_$1.Lo) {
hi = m;
} else {
lo = m + 1 >> 0;
}
}
return false;
};
is32 = function(ranges, r) {
var $ptr, _i, _q, _r, _r$1, _ref, hi, i, lo, m, r, range_, range_$1, ranges;
if (ranges.$length <= 18) {
_ref = ranges;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
range_ = ((i < 0 || i >= ranges.$length) ? ($throwRuntimeError("index out of range"), undefined) : ranges.$array[ranges.$offset + i]);
if (r < range_.Lo) {
return false;
}
if (r <= range_.Hi) {
return (_r = ((r - range_.Lo >>> 0)) % range_.Stride, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0;
}
_i++;
}
return false;
}
lo = 0;
hi = ranges.$length;
while (true) {
if (!(lo < hi)) { break; }
m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
range_$1 = $clone(((m < 0 || m >= ranges.$length) ? ($throwRuntimeError("index out of range"), undefined) : ranges.$array[ranges.$offset + m]), Range32);
if (range_$1.Lo <= r && r <= range_$1.Hi) {
return (_r$1 = ((r - range_$1.Lo >>> 0)) % range_$1.Stride, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0;
}
if (r < range_$1.Lo) {
hi = m;
} else {
lo = m + 1 >> 0;
}
}
return false;
};
isExcludingLatin = function(rangeTab, r) {
var $ptr, off, r, r16, r32, rangeTab, x;
r16 = rangeTab.R16;
off = rangeTab.LatinOffset;
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))) {
return is16($subslice(r16, off), ((r << 16 >>> 16)));
}
r32 = rangeTab.R32;
if (r32.$length > 0 && r >= (((0 >= r32.$length ? ($throwRuntimeError("index out of range"), undefined) : r32.$array[r32.$offset + 0]).Lo >> 0))) {
return is32(r32, ((r >>> 0)));
}
return false;
};
To = function(_case, r) {
var $ptr, _case, r;
return to(_case, r, $pkg.CaseRanges);
};
$pkg.To = To;
ToUpper = function(r) {
var $ptr, r;
if (r <= 127) {
if (97 <= r && r <= 122) {
r = r - (32) >> 0;
}
return r;
}
return To(0, r);
};
$pkg.ToUpper = ToUpper;
ToLower = function(r) {
var $ptr, r;
if (r <= 127) {
if (65 <= r && r <= 90) {
r = r + (32) >> 0;
}
return r;
}
return To(1, r);
};
$pkg.ToLower = ToLower;
SimpleFold = function(r) {
var $ptr, _q, hi, l, lo, m, r;
if (r < 0 || r > 1114111) {
return r;
}
if (((r >> 0)) < 128) {
return ((((r < 0 || r >= asciiFold.length) ? ($throwRuntimeError("index out of range"), undefined) : asciiFold[r]) >> 0));
}
lo = 0;
hi = caseOrbit.$length;
while (true) {
if (!(lo < hi)) { break; }
m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
if (((((m < 0 || m >= caseOrbit.$length) ? ($throwRuntimeError("index out of range"), undefined) : caseOrbit.$array[caseOrbit.$offset + m]).From >> 0)) < r) {
lo = m + 1 >> 0;
} else {
hi = m;
}
}
if (lo < caseOrbit.$length && (((((lo < 0 || lo >= caseOrbit.$length) ? ($throwRuntimeError("index out of range"), undefined) : caseOrbit.$array[caseOrbit.$offset + lo]).From >> 0)) === r)) {
return ((((lo < 0 || lo >= caseOrbit.$length) ? ($throwRuntimeError("index out of range"), undefined) : caseOrbit.$array[caseOrbit.$offset + lo]).To >> 0));
}
l = ToLower(r);
if (!((l === r))) {
return l;
}
return ToUpper(r);
};
$pkg.SimpleFold = SimpleFold;
RangeTable.init("", [{prop: "R16", name: "R16", exported: true, typ: sliceType, tag: ""}, {prop: "R32", name: "R32", exported: true, typ: sliceType$1, tag: ""}, {prop: "LatinOffset", name: "LatinOffset", exported: true, typ: $Int, tag: ""}]);
Range16.init("", [{prop: "Lo", name: "Lo", exported: true, typ: $Uint16, tag: ""}, {prop: "Hi", name: "Hi", exported: true, typ: $Uint16, tag: ""}, {prop: "Stride", name: "Stride", exported: true, typ: $Uint16, tag: ""}]);
Range32.init("", [{prop: "Lo", name: "Lo", exported: true, typ: $Uint32, tag: ""}, {prop: "Hi", name: "Hi", exported: true, typ: $Uint32, tag: ""}, {prop: "Stride", name: "Stride", exported: true, typ: $Uint32, tag: ""}]);
CaseRange.init("", [{prop: "Lo", name: "Lo", exported: true, typ: $Uint32, tag: ""}, {prop: "Hi", name: "Hi", exported: true, typ: $Uint32, tag: ""}, {prop: "Delta", name: "Delta", exported: true, typ: d, tag: ""}]);
d.init($Int32, 3);
foldPair.init("", [{prop: "From", name: "From", exported: true, typ: $Uint16, tag: ""}, {prop: "To", name: "To", exported: true, typ: $Uint16, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
_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(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(2565, 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, 12589, 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, 40917, 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(66352, 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, 72384, 449), new Range32.ptr(72385, 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(73728, 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, 94208, 32), new Range32.ptr(94209, 100332, 1), new Range32.ptr(100352, 101106, 1), new Range32.ptr(110592, 110593, 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(194560, 195101, 1)]), 6);
_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(92768, 92777, 1), new Range32.ptr(93008, 93017, 1), new Range32.ptr(120782, 120831, 1), new Range32.ptr(125264, 125273, 1)]), 1);
$pkg.Digit = _Nd;
$pkg.Letter = _L;
_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);
$pkg.White_Space = _White_Space;
_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]))]);
$pkg.CaseRanges = _CaseRanges;
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]);
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]);
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)]);
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["unicode/utf8"] = (function() {
var $pkg = {}, $init, acceptRange, first, acceptRanges, FullRune, DecodeRune, DecodeRuneInString, DecodeLastRune, DecodeLastRuneInString, RuneLen, EncodeRune, RuneCount, RuneCountInString, RuneStart, Valid, ValidString, ValidRune;
acceptRange = $pkg.acceptRange = $newType(0, $kindStruct, "utf8.acceptRange", true, "unicode/utf8", false, function(lo_, hi_) {
this.$val = this;
if (arguments.length === 0) {
this.lo = 0;
this.hi = 0;
return;
}
this.lo = lo_;
this.hi = hi_;
});
FullRune = function(p) {
var $ptr, accept, c, n, p, x, x$1, x$2;
n = p.$length;
if (n === 0) {
return false;
}
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]));
if (n >= ((((x$1 & 7) >>> 0) >> 0))) {
return true;
}
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);
if (n > 1) {
c = (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1]);
if (c < accept.lo || accept.hi < c) {
return true;
} 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]))) {
return true;
}
}
return false;
};
$pkg.FullRune = FullRune;
DecodeRune = function(p) {
var $ptr, _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;
r = 0;
size = 0;
n = p.$length;
if (n < 1) {
_tmp = 65533;
_tmp$1 = 0;
r = _tmp;
size = _tmp$1;
return [r, size];
}
p0 = (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0]);
x = ((p0 < 0 || p0 >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[p0]);
if (x >= 240) {
mask = (((x >> 0)) << 31 >> 0) >> 31 >> 0;
_tmp$2 = (((((0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0]) >> 0)) & ~mask) >> 0) | (65533 & mask);
_tmp$3 = 1;
r = _tmp$2;
size = _tmp$3;
return [r, size];
}
sz = (x & 7) >>> 0;
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);
if (n < ((sz >> 0))) {
_tmp$4 = 65533;
_tmp$5 = 1;
r = _tmp$4;
size = _tmp$5;
return [r, size];
}
b1 = (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1]);
if (b1 < accept.lo || accept.hi < b1) {
_tmp$6 = 65533;
_tmp$7 = 1;
r = _tmp$6;
size = _tmp$7;
return [r, size];
}
if (sz === 2) {
_tmp$8 = (((((p0 & 31) >>> 0) >> 0)) << 6 >> 0) | ((((b1 & 63) >>> 0) >> 0));
_tmp$9 = 2;
r = _tmp$8;
size = _tmp$9;
return [r, size];
}
b2 = (2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2]);
if (b2 < 128 || 191 < b2) {
_tmp$10 = 65533;
_tmp$11 = 1;
r = _tmp$10;
size = _tmp$11;
return [r, size];
}
if (sz === 3) {
_tmp$12 = ((((((p0 & 15) >>> 0) >> 0)) << 12 >> 0) | (((((b1 & 63) >>> 0) >> 0)) << 6 >> 0)) | ((((b2 & 63) >>> 0) >> 0));
_tmp$13 = 3;
r = _tmp$12;
size = _tmp$13;
return [r, size];
}
b3 = (3 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 3]);
if (b3 < 128 || 191 < b3) {
_tmp$14 = 65533;
_tmp$15 = 1;
r = _tmp$14;
size = _tmp$15;
return [r, size];
}
_tmp$16 = (((((((p0 & 7) >>> 0) >> 0)) << 18 >> 0) | (((((b1 & 63) >>> 0) >> 0)) << 12 >> 0)) | (((((b2 & 63) >>> 0) >> 0)) << 6 >> 0)) | ((((b3 & 63) >>> 0) >> 0));
_tmp$17 = 4;
r = _tmp$16;
size = _tmp$17;
return [r, size];
};
$pkg.DecodeRune = DecodeRune;
DecodeRuneInString = function(s) {
var $ptr, _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;
r = 0;
size = 0;
n = s.length;
if (n < 1) {
_tmp = 65533;
_tmp$1 = 0;
r = _tmp;
size = _tmp$1;
return [r, size];
}
s0 = s.charCodeAt(0);
x = ((s0 < 0 || s0 >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[s0]);
if (x >= 240) {
mask = (((x >> 0)) << 31 >> 0) >> 31 >> 0;
_tmp$2 = ((((s.charCodeAt(0) >> 0)) & ~mask) >> 0) | (65533 & mask);
_tmp$3 = 1;
r = _tmp$2;
size = _tmp$3;
return [r, size];
}
sz = (x & 7) >>> 0;
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);
if (n < ((sz >> 0))) {
_tmp$4 = 65533;
_tmp$5 = 1;
r = _tmp$4;
size = _tmp$5;
return [r, size];
}
s1 = s.charCodeAt(1);
if (s1 < accept.lo || accept.hi < s1) {
_tmp$6 = 65533;
_tmp$7 = 1;
r = _tmp$6;
size = _tmp$7;
return [r, size];
}
if (sz === 2) {
_tmp$8 = (((((s0 & 31) >>> 0) >> 0)) << 6 >> 0) | ((((s1 & 63) >>> 0) >> 0));
_tmp$9 = 2;
r = _tmp$8;
size = _tmp$9;
return [r, size];
}
s2 = s.charCodeAt(2);
if (s2 < 128 || 191 < s2) {
_tmp$10 = 65533;
_tmp$11 = 1;
r = _tmp$10;
size = _tmp$11;
return [r, size];
}
if (sz === 3) {
_tmp$12 = ((((((s0 & 15) >>> 0) >> 0)) << 12 >> 0) | (((((s1 & 63) >>> 0) >> 0)) << 6 >> 0)) | ((((s2 & 63) >>> 0) >> 0));
_tmp$13 = 3;
r = _tmp$12;
size = _tmp$13;
return [r, size];
}
s3 = s.charCodeAt(3);
if (s3 < 128 || 191 < s3) {
_tmp$14 = 65533;
_tmp$15 = 1;
r = _tmp$14;
size = _tmp$15;
return [r, size];
}
_tmp$16 = (((((((s0 & 7) >>> 0) >> 0)) << 18 >> 0) | (((((s1 & 63) >>> 0) >> 0)) << 12 >> 0)) | (((((s2 & 63) >>> 0) >> 0)) << 6 >> 0)) | ((((s3 & 63) >>> 0) >> 0));
_tmp$17 = 4;
r = _tmp$16;
size = _tmp$17;
return [r, size];
};
$pkg.DecodeRuneInString = DecodeRuneInString;
DecodeLastRune = function(p) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, end, lim, p, r, size, start;
r = 0;
size = 0;
end = p.$length;
if (end === 0) {
_tmp = 65533;
_tmp$1 = 0;
r = _tmp;
size = _tmp$1;
return [r, size];
}
start = end - 1 >> 0;
r = ((((start < 0 || start >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + start]) >> 0));
if (r < 128) {
_tmp$2 = r;
_tmp$3 = 1;
r = _tmp$2;
size = _tmp$3;
return [r, size];
}
lim = end - 4 >> 0;
if (lim < 0) {
lim = 0;
}
start = start - (1) >> 0;
while (true) {
if (!(start >= lim)) { break; }
if (RuneStart(((start < 0 || start >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + start]))) {
break;
}
start = start - (1) >> 0;
}
if (start < 0) {
start = 0;
}
_tuple = DecodeRune($subslice(p, start, end));
r = _tuple[0];
size = _tuple[1];
if (!(((start + size >> 0) === end))) {
_tmp$4 = 65533;
_tmp$5 = 1;
r = _tmp$4;
size = _tmp$5;
return [r, size];
}
_tmp$6 = r;
_tmp$7 = size;
r = _tmp$6;
size = _tmp$7;
return [r, size];
};
$pkg.DecodeLastRune = DecodeLastRune;
DecodeLastRuneInString = function(s) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, end, lim, r, s, size, start;
r = 0;
size = 0;
end = s.length;
if (end === 0) {
_tmp = 65533;
_tmp$1 = 0;
r = _tmp;
size = _tmp$1;
return [r, size];
}
start = end - 1 >> 0;
r = ((s.charCodeAt(start) >> 0));
if (r < 128) {
_tmp$2 = r;
_tmp$3 = 1;
r = _tmp$2;
size = _tmp$3;
return [r, size];
}
lim = end - 4 >> 0;
if (lim < 0) {
lim = 0;
}
start = start - (1) >> 0;
while (true) {
if (!(start >= lim)) { break; }
if (RuneStart(s.charCodeAt(start))) {
break;
}
start = start - (1) >> 0;
}
if (start < 0) {
start = 0;
}
_tuple = DecodeRuneInString($substring(s, start, end));
r = _tuple[0];
size = _tuple[1];
if (!(((start + size >> 0) === end))) {
_tmp$4 = 65533;
_tmp$5 = 1;
r = _tmp$4;
size = _tmp$5;
return [r, size];
}
_tmp$6 = r;
_tmp$7 = size;
r = _tmp$6;
size = _tmp$7;
return [r, size];
};
$pkg.DecodeLastRuneInString = DecodeLastRuneInString;
RuneLen = function(r) {
var $ptr, r;
if (r < 0) {
return -1;
} else if (r <= 127) {
return 1;
} else if (r <= 2047) {
return 2;
} else if (55296 <= r && r <= 57343) {
return -1;
} else if (r <= 65535) {
return 3;
} else if (r <= 1114111) {
return 4;
}
return -1;
};
$pkg.RuneLen = RuneLen;
EncodeRune = function(p, r) {
var $ptr, i, p, r;
i = ((r >>> 0));
if (i <= 127) {
(0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((r << 24 >>> 24)));
return 1;
} else if (i <= 2047) {
$unused((1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1]));
(0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((192 | (((r >> 6 >> 0) << 24 >>> 24))) >>> 0));
(1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = ((128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0));
return 2;
} else if ((i > 1114111) || (55296 <= i && i <= 57343)) {
r = 65533;
$unused((2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2]));
(0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((224 | (((r >> 12 >> 0) << 24 >>> 24))) >>> 0));
(1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = ((128 | (((((r >> 6 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0));
(2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2] = ((128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0));
return 3;
} else if (i <= 65535) {
$unused((2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2]));
(0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((224 | (((r >> 12 >> 0) << 24 >>> 24))) >>> 0));
(1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = ((128 | (((((r >> 6 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0));
(2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2] = ((128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0));
return 3;
} else {
$unused((3 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 3]));
(0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((240 | (((r >> 18 >> 0) << 24 >>> 24))) >>> 0));
(1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = ((128 | (((((r >> 12 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0));
(2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2] = ((128 | (((((r >> 6 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0));
(3 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 3] = ((128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0));
return 4;
}
};
$pkg.EncodeRune = EncodeRune;
RuneCount = function(p) {
var $ptr, accept, c, c$1, c$2, c$3, i, n, np, p, size, x, x$1, x$2, x$3, x$4;
np = p.$length;
n = 0;
i = 0;
while (true) {
if (!(i < np)) { break; }
n = n + (1) >> 0;
c = ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]);
if (c < 128) {
i = i + (1) >> 0;
continue;
}
x = ((c < 0 || c >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[c]);
if (x === 241) {
i = i + (1) >> 0;
continue;
}
size = ((((x & 7) >>> 0) >> 0));
if ((i + size >> 0) > np) {
i = i + (1) >> 0;
continue;
}
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);
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]));
if (c$1 < accept.lo || accept.hi < c$1) {
size = 1;
} else if (size === 2) {
} else {
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]));
if (c$2 < 128 || 191 < c$2) {
size = 1;
} else if (size === 3) {
} else {
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]));
if (c$3 < 128 || 191 < c$3) {
size = 1;
}
}
}
i = i + (size) >> 0;
}
return n;
};
$pkg.RuneCount = RuneCount;
RuneCountInString = function(s) {
var $ptr, accept, c, c$1, c$2, c$3, i, n, ns, s, size, x, x$1;
n = 0;
ns = s.length;
i = 0;
while (true) {
if (!(i < ns)) { break; }
c = s.charCodeAt(i);
if (c < 128) {
i = i + (1) >> 0;
n = n + (1) >> 0;
continue;
}
x = ((c < 0 || c >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[c]);
if (x === 241) {
i = i + (1) >> 0;
n = n + (1) >> 0;
continue;
}
size = ((((x & 7) >>> 0) >> 0));
if ((i + size >> 0) > ns) {
i = i + (1) >> 0;
n = n + (1) >> 0;
continue;
}
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);
c$1 = s.charCodeAt((i + 1 >> 0));
if (c$1 < accept.lo || accept.hi < c$1) {
size = 1;
} else if (size === 2) {
} else {
c$2 = s.charCodeAt((i + 2 >> 0));
if (c$2 < 128 || 191 < c$2) {
size = 1;
} else if (size === 3) {
} else {
c$3 = s.charCodeAt((i + 3 >> 0));
if (c$3 < 128 || 191 < c$3) {
size = 1;
}
}
}
i = i + (size) >> 0;
n = n + (1) >> 0;
}
n = n;
return n;
};
$pkg.RuneCountInString = RuneCountInString;
RuneStart = function(b) {
var $ptr, b;
return !((((b & 192) >>> 0) === 128));
};
$pkg.RuneStart = RuneStart;
Valid = function(p) {
var $ptr, accept, c, c$1, c$2, i, n, p, pi, size, x, x$1, x$2, x$3, x$4;
n = p.$length;
i = 0;
while (true) {
if (!(i < n)) { break; }
pi = ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]);
if (pi < 128) {
i = i + (1) >> 0;
continue;
}
x = ((pi < 0 || pi >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[pi]);
if (x === 241) {
return false;
}
size = ((((x & 7) >>> 0) >> 0));
if ((i + size >> 0) > n) {
return false;
}
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);
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]));
if (c < accept.lo || accept.hi < c) {
return false;
} else if (size === 2) {
} else {
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]));
if (c$1 < 128 || 191 < c$1) {
return false;
} else if (size === 3) {
} else {
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]));
if (c$2 < 128 || 191 < c$2) {
return false;
}
}
}
i = i + (size) >> 0;
}
return true;
};
$pkg.Valid = Valid;
ValidString = function(s) {
var $ptr, accept, c, c$1, c$2, i, n, s, si, size, x, x$1;
n = s.length;
i = 0;
while (true) {
if (!(i < n)) { break; }
si = s.charCodeAt(i);
if (si < 128) {
i = i + (1) >> 0;
continue;
}
x = ((si < 0 || si >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[si]);
if (x === 241) {
return false;
}
size = ((((x & 7) >>> 0) >> 0));
if ((i + size >> 0) > n) {
return false;
}
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);
c = s.charCodeAt((i + 1 >> 0));
if (c < accept.lo || accept.hi < c) {
return false;
} else if (size === 2) {
} else {
c$1 = s.charCodeAt((i + 2 >> 0));
if (c$1 < 128 || 191 < c$1) {
return false;
} else if (size === 3) {
} else {
c$2 = s.charCodeAt((i + 3 >> 0));
if (c$2 < 128 || 191 < c$2) {
return false;
}
}
}
i = i + (size) >> 0;
}
return true;
};
$pkg.ValidString = ValidString;
ValidRune = function(r) {
var $ptr, r;
if (0 <= r && r < 55296) {
return true;
} else if (57343 < r && r <= 1114111) {
return true;
}
return false;
};
$pkg.ValidRune = ValidRune;
acceptRange.init("unicode/utf8", [{prop: "lo", name: "lo", exported: false, typ: $Uint8, tag: ""}, {prop: "hi", name: "hi", exported: false, typ: $Uint8, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
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]);
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)]);
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["bytes"] = (function() {
var $pkg = {}, $init, errors, io, unicode, utf8, Buffer, readOp, asciiSet, Reader, ptrType, sliceType, arrayType, ptrType$1, arrayType$2, ptrType$2, IndexByte, Equal, makeSlice, NewBuffer, LastIndexByte, HasPrefix, HasSuffix, TrimLeftFunc, TrimRightFunc, TrimFunc, TrimPrefix, indexFunc, lastIndexFunc, makeASCIISet, makeCutsetFunc, TrimRight, TrimSpace, EqualFold, Index, NewReader;
errors = $packages["errors"];
io = $packages["io"];
unicode = $packages["unicode"];
utf8 = $packages["unicode/utf8"];
Buffer = $pkg.Buffer = $newType(0, $kindStruct, "bytes.Buffer", true, "bytes", true, function(buf_, off_, bootstrap_, lastRead_) {
this.$val = this;
if (arguments.length === 0) {
this.buf = sliceType.nil;
this.off = 0;
this.bootstrap = arrayType.zero();
this.lastRead = 0;
return;
}
this.buf = buf_;
this.off = off_;
this.bootstrap = bootstrap_;
this.lastRead = lastRead_;
});
readOp = $pkg.readOp = $newType(4, $kindInt, "bytes.readOp", true, "bytes", false, null);
asciiSet = $pkg.asciiSet = $newType(32, $kindArray, "bytes.asciiSet", true, "bytes", false, null);
Reader = $pkg.Reader = $newType(0, $kindStruct, "bytes.Reader", true, "bytes", true, function(s_, i_, prevRune_) {
this.$val = this;
if (arguments.length === 0) {
this.s = sliceType.nil;
this.i = new $Int64(0, 0);
this.prevRune = 0;
return;
}
this.s = s_;
this.i = i_;
this.prevRune = prevRune_;
});
ptrType = $ptrType(Buffer);
sliceType = $sliceType($Uint8);
arrayType = $arrayType($Uint8, 64);
ptrType$1 = $ptrType(asciiSet);
arrayType$2 = $arrayType($Uint32, 8);
ptrType$2 = $ptrType(Reader);
IndexByte = function(s, c) {
var $ptr, _i, _ref, b, c, i, s;
_ref = s;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (b === c) {
return i;
}
_i++;
}
return -1;
};
$pkg.IndexByte = IndexByte;
Equal = function(a, b) {
var $ptr, _i, _ref, a, b, c, i;
if (!((a.$length === b.$length))) {
return false;
}
_ref = a;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (!((c === ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i])))) {
return false;
}
_i++;
}
return true;
};
$pkg.Equal = Equal;
Buffer.ptr.prototype.Bytes = function() {
var $ptr, b;
b = this;
return $subslice(b.buf, b.off);
};
Buffer.prototype.Bytes = function() { return this.$val.Bytes(); };
Buffer.ptr.prototype.String = function() {
var $ptr, b;
b = this;
if (b === ptrType.nil) {
return "<nil>";
}
return ($bytesToString($subslice(b.buf, b.off)));
};
Buffer.prototype.String = function() { return this.$val.String(); };
Buffer.ptr.prototype.Len = function() {
var $ptr, b;
b = this;
return b.buf.$length - b.off >> 0;
};
Buffer.prototype.Len = function() { return this.$val.Len(); };
Buffer.ptr.prototype.Cap = function() {
var $ptr, b;
b = this;
return b.buf.$capacity;
};
Buffer.prototype.Cap = function() { return this.$val.Cap(); };
Buffer.ptr.prototype.Truncate = function(n) {
var $ptr, b, n;
b = this;
b.lastRead = 0;
if (n < 0 || n > b.Len()) {
$panic(new $String("bytes.Buffer: truncation out of range"));
} else if ((n === 0)) {
b.off = 0;
}
b.buf = $subslice(b.buf, 0, (b.off + n >> 0));
};
Buffer.prototype.Truncate = function(n) { return this.$val.Truncate(n); };
Buffer.ptr.prototype.Reset = function() {
var $ptr, b;
b = this;
b.Truncate(0);
};
Buffer.prototype.Reset = function() { return this.$val.Reset(); };
Buffer.ptr.prototype.grow = function(n) {
var $ptr, _q, b, buf, m, n;
b = this;
m = b.Len();
if ((m === 0) && !((b.off === 0))) {
b.Truncate(0);
}
if ((b.buf.$length + n >> 0) > b.buf.$capacity) {
buf = sliceType.nil;
if (b.buf === sliceType.nil && n <= 64) {
buf = $subslice(new sliceType(b.bootstrap), 0);
} else if ((m + n >> 0) <= (_q = b.buf.$capacity / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))) {
$copySlice(b.buf, $subslice(b.buf, b.off));
buf = $subslice(b.buf, 0, m);
} else {
buf = makeSlice(($imul(2, b.buf.$capacity)) + n >> 0);
$copySlice(buf, $subslice(b.buf, b.off));
}
b.buf = buf;
b.off = 0;
}
b.buf = $subslice(b.buf, 0, ((b.off + m >> 0) + n >> 0));
return b.off + m >> 0;
};
Buffer.prototype.grow = function(n) { return this.$val.grow(n); };
Buffer.ptr.prototype.Grow = function(n) {
var $ptr, b, m, n;
b = this;
if (n < 0) {
$panic(new $String("bytes.Buffer.Grow: negative count"));
}
m = b.grow(n);
b.buf = $subslice(b.buf, 0, m);
};
Buffer.prototype.Grow = function(n) { return this.$val.Grow(n); };
Buffer.ptr.prototype.Write = function(p) {
var $ptr, _tmp, _tmp$1, b, err, m, n, p;
n = 0;
err = $ifaceNil;
b = this;
b.lastRead = 0;
m = b.grow(p.$length);
_tmp = $copySlice($subslice(b.buf, m), p);
_tmp$1 = $ifaceNil;
n = _tmp;
err = _tmp$1;
return [n, err];
};
Buffer.prototype.Write = function(p) { return this.$val.Write(p); };
Buffer.ptr.prototype.WriteString = function(s) {
var $ptr, _tmp, _tmp$1, b, err, m, n, s;
n = 0;
err = $ifaceNil;
b = this;
b.lastRead = 0;
m = b.grow(s.length);
_tmp = $copyString($subslice(b.buf, m), s);
_tmp$1 = $ifaceNil;
n = _tmp;
err = _tmp$1;
return [n, err];
};
Buffer.prototype.WriteString = function(s) { return this.$val.WriteString(s); };
Buffer.ptr.prototype.ReadFrom = function(r) {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, free, m, n, newBuf, r, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; free = $f.free; m = $f.m; n = $f.n; newBuf = $f.newBuf; r = $f.r; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
n = new $Int64(0, 0);
err = $ifaceNil;
b = this;
b.lastRead = 0;
if (b.off >= b.buf.$length) {
b.Truncate(0);
}
/* while (true) { */ case 1:
free = b.buf.$capacity - b.buf.$length >> 0;
if (free < 512) {
newBuf = b.buf;
if ((b.off + free >> 0) < 512) {
newBuf = makeSlice(($imul(2, b.buf.$capacity)) + 512 >> 0);
}
$copySlice(newBuf, $subslice(b.buf, b.off));
b.buf = $subslice(newBuf, 0, (b.buf.$length - b.off >> 0));
b.off = 0;
}
_r = r.Read($subslice(b.buf, b.buf.$length, b.buf.$capacity)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
m = _tuple[0];
e = _tuple[1];
b.buf = $subslice(b.buf, 0, (b.buf.$length + m >> 0));
n = (x = (new $Int64(0, m)), new $Int64(n.$high + x.$high, n.$low + x.$low));
if ($interfaceIsEqual(e, io.EOF)) {
/* break; */ $s = 2; continue;
}
if (!($interfaceIsEqual(e, $ifaceNil))) {
_tmp = n;
_tmp$1 = e;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
/* } */ $s = 1; continue; case 2:
_tmp$2 = n;
_tmp$3 = $ifaceNil;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Buffer.ptr.prototype.ReadFrom }; } $f.$ptr = $ptr; $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.free = free; $f.m = m; $f.n = n; $f.newBuf = newBuf; $f.r = r; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
Buffer.prototype.ReadFrom = function(r) { return this.$val.ReadFrom(r); };
makeSlice = function(n) {
var $ptr, n, $deferred;
/* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
$deferred.push([(function() {
var $ptr;
if (!($interfaceIsEqual($recover(), $ifaceNil))) {
$panic($pkg.ErrTooLarge);
}
}), []]);
return $makeSlice(sliceType, n);
/* */ } catch(err) { $err = err; return sliceType.nil; } finally { $callDeferred($deferred, $err); }
};
Buffer.ptr.prototype.WriteTo = function(w) {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, m, n, nBytes, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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:
n = new $Int64(0, 0);
err = $ifaceNil;
b = this;
b.lastRead = 0;
/* */ if (b.off < b.buf.$length) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (b.off < b.buf.$length) { */ case 1:
nBytes = b.Len();
_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; }
_tuple = _r;
m = _tuple[0];
e = _tuple[1];
if (m > nBytes) {
$panic(new $String("bytes.Buffer.WriteTo: invalid Write count"));
}
b.off = b.off + (m) >> 0;
n = (new $Int64(0, m));
if (!($interfaceIsEqual(e, $ifaceNil))) {
_tmp = n;
_tmp$1 = e;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
if (!((m === nBytes))) {
_tmp$2 = n;
_tmp$3 = io.ErrShortWrite;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
}
/* } */ case 2:
b.Truncate(0);
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Buffer.ptr.prototype.WriteTo }; } $f.$ptr = $ptr; $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.m = m; $f.n = n; $f.nBytes = nBytes; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
Buffer.prototype.WriteTo = function(w) { return this.$val.WriteTo(w); };
Buffer.ptr.prototype.WriteByte = function(c) {
var $ptr, b, c, m, x;
b = this;
b.lastRead = 0;
m = b.grow(1);
(x = b.buf, ((m < 0 || m >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + m] = c));
return $ifaceNil;
};
Buffer.prototype.WriteByte = function(c) { return this.$val.WriteByte(c); };
Buffer.ptr.prototype.WriteRune = function(r) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, b, err, m, n, r;
n = 0;
err = $ifaceNil;
b = this;
if (r < 128) {
b.WriteByte(((r << 24 >>> 24)));
_tmp = 1;
_tmp$1 = $ifaceNil;
n = _tmp;
err = _tmp$1;
return [n, err];
}
b.lastRead = 0;
m = b.grow(4);
n = utf8.EncodeRune($subslice(b.buf, m, (m + 4 >> 0)), r);
b.buf = $subslice(b.buf, 0, (m + n >> 0));
_tmp$2 = n;
_tmp$3 = $ifaceNil;
n = _tmp$2;
err = _tmp$3;
return [n, err];
};
Buffer.prototype.WriteRune = function(r) { return this.$val.WriteRune(r); };
Buffer.ptr.prototype.Read = function(p) {
var $ptr, _tmp, _tmp$1, b, err, n, p;
n = 0;
err = $ifaceNil;
b = this;
b.lastRead = 0;
if (b.off >= b.buf.$length) {
b.Truncate(0);
if (p.$length === 0) {
return [n, err];
}
_tmp = 0;
_tmp$1 = io.EOF;
n = _tmp;
err = _tmp$1;
return [n, err];
}
n = $copySlice(p, $subslice(b.buf, b.off));
b.off = b.off + (n) >> 0;
if (n > 0) {
b.lastRead = -1;
}
return [n, err];
};
Buffer.prototype.Read = function(p) { return this.$val.Read(p); };
Buffer.ptr.prototype.Next = function(n) {
var $ptr, b, data, m, n;
b = this;
b.lastRead = 0;
m = b.Len();
if (n > m) {
n = m;
}
data = $subslice(b.buf, b.off, (b.off + n >> 0));
b.off = b.off + (n) >> 0;
if (n > 0) {
b.lastRead = -1;
}
return data;
};
Buffer.prototype.Next = function(n) { return this.$val.Next(n); };
Buffer.ptr.prototype.ReadByte = function() {
var $ptr, b, c, x, x$1;
b = this;
b.lastRead = 0;
if (b.off >= b.buf.$length) {
b.Truncate(0);
return [0, io.EOF];
}
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]));
b.off = b.off + (1) >> 0;
b.lastRead = -1;
return [c, $ifaceNil];
};
Buffer.prototype.ReadByte = function() { return this.$val.ReadByte(); };
Buffer.ptr.prototype.ReadRune = function() {
var $ptr, _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;
r = 0;
size = 0;
err = $ifaceNil;
b = this;
b.lastRead = 0;
if (b.off >= b.buf.$length) {
b.Truncate(0);
_tmp = 0;
_tmp$1 = 0;
_tmp$2 = io.EOF;
r = _tmp;
size = _tmp$1;
err = _tmp$2;
return [r, size, err];
}
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]));
if (c < 128) {
b.off = b.off + (1) >> 0;
b.lastRead = 1;
_tmp$3 = ((c >> 0));
_tmp$4 = 1;
_tmp$5 = $ifaceNil;
r = _tmp$3;
size = _tmp$4;
err = _tmp$5;
return [r, size, err];
}
_tuple = utf8.DecodeRune($subslice(b.buf, b.off));
r = _tuple[0];
n = _tuple[1];
b.off = b.off + (n) >> 0;
b.lastRead = ((n >> 0));
_tmp$6 = r;
_tmp$7 = n;
_tmp$8 = $ifaceNil;
r = _tmp$6;
size = _tmp$7;
err = _tmp$8;
return [r, size, err];
};
Buffer.prototype.ReadRune = function() { return this.$val.ReadRune(); };
Buffer.ptr.prototype.UnreadRune = function() {
var $ptr, b;
b = this;
if (b.lastRead <= 0) {
return errors.New("bytes.Buffer: UnreadRune: previous operation was not ReadRune");
}
if (b.off >= ((b.lastRead >> 0))) {
b.off = b.off - (((b.lastRead >> 0))) >> 0;
}
b.lastRead = 0;
return $ifaceNil;
};
Buffer.prototype.UnreadRune = function() { return this.$val.UnreadRune(); };
Buffer.ptr.prototype.UnreadByte = function() {
var $ptr, b;
b = this;
if (b.lastRead === 0) {
return errors.New("bytes.Buffer: UnreadByte: previous operation was not a read");
}
b.lastRead = 0;
if (b.off > 0) {
b.off = b.off - (1) >> 0;
}
return $ifaceNil;
};
Buffer.prototype.UnreadByte = function() { return this.$val.UnreadByte(); };
Buffer.ptr.prototype.ReadBytes = function(delim) {
var $ptr, _tuple, b, delim, err, line, slice;
line = sliceType.nil;
err = $ifaceNil;
b = this;
_tuple = b.readSlice(delim);
slice = _tuple[0];
err = _tuple[1];
line = $appendSlice(line, slice);
return [line, err];
};
Buffer.prototype.ReadBytes = function(delim) { return this.$val.ReadBytes(delim); };
Buffer.ptr.prototype.readSlice = function(delim) {
var $ptr, _tmp, _tmp$1, b, delim, end, err, i, line;
line = sliceType.nil;
err = $ifaceNil;
b = this;
i = IndexByte($subslice(b.buf, b.off), delim);
end = (b.off + i >> 0) + 1 >> 0;
if (i < 0) {
end = b.buf.$length;
err = io.EOF;
}
line = $subslice(b.buf, b.off, end);
b.off = end;
b.lastRead = -1;
_tmp = line;
_tmp$1 = err;
line = _tmp;
err = _tmp$1;
return [line, err];
};
Buffer.prototype.readSlice = function(delim) { return this.$val.readSlice(delim); };
Buffer.ptr.prototype.ReadString = function(delim) {
var $ptr, _tmp, _tmp$1, _tuple, b, delim, err, line, slice;
line = "";
err = $ifaceNil;
b = this;
_tuple = b.readSlice(delim);
slice = _tuple[0];
err = _tuple[1];
_tmp = ($bytesToString(slice));
_tmp$1 = err;
line = _tmp;
err = _tmp$1;
return [line, err];
};
Buffer.prototype.ReadString = function(delim) { return this.$val.ReadString(delim); };
NewBuffer = function(buf) {
var $ptr, buf;
return new Buffer.ptr(buf, 0, arrayType.zero(), 0);
};
$pkg.NewBuffer = NewBuffer;
LastIndexByte = function(s, c) {
var $ptr, c, i, s;
i = s.$length - 1 >> 0;
while (true) {
if (!(i >= 0)) { break; }
if (((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]) === c) {
return i;
}
i = i - (1) >> 0;
}
return -1;
};
$pkg.LastIndexByte = LastIndexByte;
HasPrefix = function(s, prefix) {
var $ptr, prefix, s;
return s.$length >= prefix.$length && Equal($subslice(s, 0, prefix.$length), prefix);
};
$pkg.HasPrefix = HasPrefix;
HasSuffix = function(s, suffix) {
var $ptr, s, suffix;
return s.$length >= suffix.$length && Equal($subslice(s, (s.$length - suffix.$length >> 0)), suffix);
};
$pkg.HasSuffix = HasSuffix;
TrimLeftFunc = function(s, f) {
var $ptr, _r, f, i, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = indexFunc(s, f, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
i = _r;
if (i === -1) {
$s = -1; return sliceType.nil;
}
$s = -1; return $subslice(s, i);
/* */ } return; } if ($f === undefined) { $f = { $blk: TrimLeftFunc }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.i = i; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.TrimLeftFunc = TrimLeftFunc;
TrimRightFunc = function(s, f) {
var $ptr, _r, _tuple, f, i, s, wid, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = lastIndexFunc(s, f, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
i = _r;
if (i >= 0 && ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]) >= 128) {
_tuple = utf8.DecodeRune($subslice(s, i));
wid = _tuple[1];
i = i + (wid) >> 0;
} else {
i = i + (1) >> 0;
}
$s = -1; return $subslice(s, 0, i);
/* */ } return; } if ($f === undefined) { $f = { $blk: TrimRightFunc }; } $f.$ptr = $ptr; $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;
};
$pkg.TrimRightFunc = TrimRightFunc;
TrimFunc = function(s, f) {
var $ptr, _r, _r$1, f, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = TrimLeftFunc(s, f); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_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; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: TrimFunc }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.f = f; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.TrimFunc = TrimFunc;
TrimPrefix = function(s, prefix) {
var $ptr, prefix, s;
if (HasPrefix(s, prefix)) {
return $subslice(s, prefix.$length);
}
return s;
};
$pkg.TrimPrefix = TrimPrefix;
indexFunc = function(s, f, truth) {
var $ptr, _r, _tuple, f, r, s, start, truth, wid, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
start = 0;
/* while (true) { */ case 1:
/* if (!(start < s.$length)) { break; } */ if(!(start < s.$length)) { $s = 2; continue; }
wid = 1;
r = ((((start < 0 || start >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + start]) >> 0));
if (r >= 128) {
_tuple = utf8.DecodeRune($subslice(s, start));
r = _tuple[0];
wid = _tuple[1];
}
_r = f(r); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (_r === truth) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (_r === truth) { */ case 3:
$s = -1; return start;
/* } */ case 4:
start = start + (wid) >> 0;
/* } */ $s = 1; continue; case 2:
$s = -1; return -1;
/* */ } return; } if ($f === undefined) { $f = { $blk: indexFunc }; } $f.$ptr = $ptr; $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;
};
lastIndexFunc = function(s, f, truth) {
var $ptr, _r, _tmp, _tmp$1, _tuple, f, i, r, s, size, truth, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
i = s.$length;
/* while (true) { */ case 1:
/* if (!(i > 0)) { break; } */ if(!(i > 0)) { $s = 2; continue; }
_tmp = (((x = i - 1 >> 0, ((x < 0 || x >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x])) >> 0));
_tmp$1 = 1;
r = _tmp;
size = _tmp$1;
if (r >= 128) {
_tuple = utf8.DecodeLastRune($subslice(s, 0, i));
r = _tuple[0];
size = _tuple[1];
}
i = i - (size) >> 0;
_r = f(r); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (_r === truth) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (_r === truth) { */ case 3:
$s = -1; return i;
/* } */ case 4:
/* } */ $s = 1; continue; case 2:
$s = -1; return -1;
/* */ } return; } if ($f === undefined) { $f = { $blk: lastIndexFunc }; } $f.$ptr = $ptr; $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;
};
makeASCIISet = function(chars) {
var $ptr, _index, _tmp, _tmp$1, _tmp$2, _tmp$3, as, c, chars, i, ok, y;
as = arrayType$2.zero();
ok = false;
i = 0;
while (true) {
if (!(i < chars.length)) { break; }
c = chars.charCodeAt(i);
if (c >= 128) {
_tmp = $clone(as, asciiSet);
_tmp$1 = false;
asciiSet.copy(as, _tmp);
ok = _tmp$1;
return [as, ok];
}
_index = c >>> 5 << 24 >>> 24;
((_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));
i = i + (1) >> 0;
}
_tmp$2 = $clone(as, asciiSet);
_tmp$3 = true;
asciiSet.copy(as, _tmp$2);
ok = _tmp$3;
return [as, ok];
};
asciiSet.prototype.contains = function(c) {
var $ptr, as, c, x, y;
as = this.$val;
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));
};
$ptrType(asciiSet).prototype.contains = function(c) { return (new asciiSet(this.$get())).contains(c); };
makeCutsetFunc = function(cutset) {
var $ptr, _tuple, as, cutset, isASCII;
if ((cutset.length === 1) && cutset.charCodeAt(0) < 128) {
return (function(r) {
var $ptr, r;
return r === ((cutset.charCodeAt(0) >> 0));
});
}
_tuple = makeASCIISet(cutset);
as = $clone(_tuple[0], asciiSet);
isASCII = _tuple[1];
if (isASCII) {
return (function(r) {
var $ptr, r;
return r < 128 && new ptrType$1(as).contains(((r << 24 >>> 24)));
});
}
return (function(r) {
var $ptr, _i, _ref, _rune, c, r;
_ref = cutset;
_i = 0;
while (true) {
if (!(_i < _ref.length)) { break; }
_rune = $decodeRune(_ref, _i);
c = _rune[0];
if (c === r) {
return true;
}
_i += _rune[1];
}
return false;
});
};
TrimRight = function(s, cutset) {
var $ptr, _r, cutset, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; cutset = $f.cutset; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = TrimRightFunc(s, makeCutsetFunc(cutset)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: TrimRight }; } $f.$ptr = $ptr; $f._r = _r; $f.cutset = cutset; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.TrimRight = TrimRight;
TrimSpace = function(s) {
var $ptr, _r, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = TrimFunc(s, unicode.IsSpace); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: TrimSpace }; } $f.$ptr = $ptr; $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.TrimSpace = TrimSpace;
EqualFold = function(s, t) {
var $ptr, _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;
while (true) {
if (!(!((s.$length === 0)) && !((t.$length === 0)))) { break; }
_tmp = 0;
_tmp$1 = 0;
sr = _tmp;
tr = _tmp$1;
if ((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) < 128) {
_tmp$2 = (((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) >> 0));
_tmp$3 = $subslice(s, 1);
sr = _tmp$2;
s = _tmp$3;
} else {
_tuple = utf8.DecodeRune(s);
r = _tuple[0];
size = _tuple[1];
_tmp$4 = r;
_tmp$5 = $subslice(s, size);
sr = _tmp$4;
s = _tmp$5;
}
if ((0 >= t.$length ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + 0]) < 128) {
_tmp$6 = (((0 >= t.$length ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + 0]) >> 0));
_tmp$7 = $subslice(t, 1);
tr = _tmp$6;
t = _tmp$7;
} else {
_tuple$1 = utf8.DecodeRune(t);
r$1 = _tuple$1[0];
size$1 = _tuple$1[1];
_tmp$8 = r$1;
_tmp$9 = $subslice(t, size$1);
tr = _tmp$8;
t = _tmp$9;
}
if (tr === sr) {
continue;
}
if (tr < sr) {
_tmp$10 = sr;
_tmp$11 = tr;
tr = _tmp$10;
sr = _tmp$11;
}
if (tr < 128 && 65 <= sr && sr <= 90) {
if (tr === ((sr + 97 >> 0) - 65 >> 0)) {
continue;
}
return false;
}
r$2 = unicode.SimpleFold(sr);
while (true) {
if (!(!((r$2 === sr)) && r$2 < tr)) { break; }
r$2 = unicode.SimpleFold(r$2);
}
if (r$2 === tr) {
continue;
}
return false;
}
return s.$length === t.$length;
};
$pkg.EqualFold = EqualFold;
Index = function(s, sep) {
var $ptr, c, i, n, o, s, sep, t;
n = sep.$length;
if (n === 0) {
return 0;
}
if (n > s.$length) {
return -1;
}
c = (0 >= sep.$length ? ($throwRuntimeError("index out of range"), undefined) : sep.$array[sep.$offset + 0]);
if (n === 1) {
return IndexByte(s, c);
}
i = 0;
t = $subslice(s, 0, ((s.$length - n >> 0) + 1 >> 0));
while (true) {
if (!(i < t.$length)) { break; }
if (!((((i < 0 || i >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + i]) === c))) {
o = IndexByte($subslice(t, i), c);
if (o < 0) {
break;
}
i = i + (o) >> 0;
}
if (Equal($subslice(s, i, (i + n >> 0)), sep)) {
return i;
}
i = i + (1) >> 0;
}
return -1;
};
$pkg.Index = Index;
Reader.ptr.prototype.Len = function() {
var $ptr, r, x, x$1, x$2, x$3, x$4;
r = this;
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)))) {
return 0;
}
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));
};
Reader.prototype.Len = function() { return this.$val.Len(); };
Reader.ptr.prototype.Size = function() {
var $ptr, r;
r = this;
return (new $Int64(0, r.s.$length));
};
Reader.prototype.Size = function() { return this.$val.Size(); };
Reader.ptr.prototype.Read = function(b) {
var $ptr, _tmp, _tmp$1, b, err, n, r, x, x$1, x$2, x$3;
n = 0;
err = $ifaceNil;
r = this;
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)))) {
_tmp = 0;
_tmp$1 = io.EOF;
n = _tmp;
err = _tmp$1;
return [n, err];
}
r.prevRune = -1;
n = $copySlice(b, $subslice(r.s, $flatten64(r.i)));
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));
return [n, err];
};
Reader.prototype.Read = function(b) { return this.$val.Read(b); };
Reader.ptr.prototype.ReadAt = function(b, off) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, b, err, n, off, r, x;
n = 0;
err = $ifaceNil;
r = this;
if ((off.$high < 0 || (off.$high === 0 && off.$low < 0))) {
_tmp = 0;
_tmp$1 = errors.New("bytes.Reader.ReadAt: negative offset");
n = _tmp;
err = _tmp$1;
return [n, err];
}
if ((x = (new $Int64(0, r.s.$length)), (off.$high > x.$high || (off.$high === x.$high && off.$low >= x.$low)))) {
_tmp$2 = 0;
_tmp$3 = io.EOF;
n = _tmp$2;
err = _tmp$3;
return [n, err];
}
n = $copySlice(b, $subslice(r.s, $flatten64(off)));
if (n < b.$length) {
err = io.EOF;
}
return [n, err];
};
Reader.prototype.ReadAt = function(b, off) { return this.$val.ReadAt(b, off); };
Reader.ptr.prototype.ReadByte = function() {
var $ptr, b, r, x, x$1, x$2, x$3, x$4, x$5;
r = this;
r.prevRune = -1;
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)))) {
return [0, io.EOF];
}
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)]));
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));
return [b, $ifaceNil];
};
Reader.prototype.ReadByte = function() { return this.$val.ReadByte(); };
Reader.ptr.prototype.UnreadByte = function() {
var $ptr, r, x, x$1, x$2;
r = this;
r.prevRune = -1;
if ((x = r.i, (x.$high < 0 || (x.$high === 0 && x.$low <= 0)))) {
return errors.New("bytes.Reader.UnreadByte: at beginning of slice");
}
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));
return $ifaceNil;
};
Reader.prototype.UnreadByte = function() { return this.$val.UnreadByte(); };
Reader.ptr.prototype.ReadRune = function() {
var $ptr, _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;
ch = 0;
size = 0;
err = $ifaceNil;
r = this;
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)))) {
r.prevRune = -1;
_tmp = 0;
_tmp$1 = 0;
_tmp$2 = io.EOF;
ch = _tmp;
size = _tmp$1;
err = _tmp$2;
return [ch, size, err];
}
r.prevRune = (((x$2 = r.i, x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0));
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)]));
if (c < 128) {
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));
_tmp$3 = ((c >> 0));
_tmp$4 = 1;
_tmp$5 = $ifaceNil;
ch = _tmp$3;
size = _tmp$4;
err = _tmp$5;
return [ch, size, err];
}
_tuple = utf8.DecodeRune($subslice(r.s, $flatten64(r.i)));
ch = _tuple[0];
size = _tuple[1];
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));
return [ch, size, err];
};
Reader.prototype.ReadRune = function() { return this.$val.ReadRune(); };
Reader.ptr.prototype.UnreadRune = function() {
var $ptr, r;
r = this;
if (r.prevRune < 0) {
return errors.New("bytes.Reader.UnreadRune: previous operation was not ReadRune");
}
r.i = (new $Int64(0, r.prevRune));
r.prevRune = -1;
return $ifaceNil;
};
Reader.prototype.UnreadRune = function() { return this.$val.UnreadRune(); };
Reader.ptr.prototype.Seek = function(offset, whence) {
var $ptr, _1, abs, offset, r, whence, x, x$1;
r = this;
r.prevRune = -1;
abs = new $Int64(0, 0);
_1 = whence;
if (_1 === (0)) {
abs = offset;
} else if (_1 === (1)) {
abs = (x = r.i, new $Int64(x.$high + offset.$high, x.$low + offset.$low));
} else if (_1 === (2)) {
abs = (x$1 = (new $Int64(0, r.s.$length)), new $Int64(x$1.$high + offset.$high, x$1.$low + offset.$low));
} else {
return [new $Int64(0, 0), errors.New("bytes.Reader.Seek: invalid whence")];
}
if ((abs.$high < 0 || (abs.$high === 0 && abs.$low < 0))) {
return [new $Int64(0, 0), errors.New("bytes.Reader.Seek: negative position")];
}
r.i = abs;
return [abs, $ifaceNil];
};
Reader.prototype.Seek = function(offset, whence) { return this.$val.Seek(offset, whence); };
Reader.ptr.prototype.WriteTo = function(w) {
var $ptr, _r, _tmp, _tmp$1, _tuple, b, err, m, n, r, w, x, x$1, x$2, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = new $Int64(0, 0);
err = $ifaceNil;
r = this;
r.prevRune = -1;
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)))) {
_tmp = new $Int64(0, 0);
_tmp$1 = $ifaceNil;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
b = $subslice(r.s, $flatten64(r.i));
_r = w.Write(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
m = _tuple[0];
err = _tuple[1];
if (m > b.$length) {
$panic(new $String("bytes.Reader.WriteTo: invalid Write count"));
}
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));
n = (new $Int64(0, m));
if (!((m === b.$length)) && $interfaceIsEqual(err, $ifaceNil)) {
err = io.ErrShortWrite;
}
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.WriteTo }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.WriteTo = function(w) { return this.$val.WriteTo(w); };
Reader.ptr.prototype.Reset = function(b) {
var $ptr, b, r;
r = this;
Reader.copy(r, new Reader.ptr(b, new $Int64(0, 0), -1));
};
Reader.prototype.Reset = function(b) { return this.$val.Reset(b); };
NewReader = function(b) {
var $ptr, b;
return new Reader.ptr(b, new $Int64(0, 0), -1);
};
$pkg.NewReader = NewReader;
ptrType.methods = [{prop: "Bytes", name: "Bytes", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], 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: "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)}];
ptrType$1.methods = [{prop: "contains", name: "contains", pkg: "bytes", typ: $funcType([$Uint8], [$Bool], false)}];
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)}];
Buffer.init("bytes", [{prop: "buf", name: "buf", exported: false, typ: sliceType, tag: ""}, {prop: "off", name: "off", exported: false, typ: $Int, tag: ""}, {prop: "bootstrap", name: "bootstrap", exported: false, typ: arrayType, tag: ""}, {prop: "lastRead", name: "lastRead", exported: false, typ: readOp, tag: ""}]);
asciiSet.init($Uint32, 8);
Reader.init("bytes", [{prop: "s", name: "s", exported: false, typ: sliceType, tag: ""}, {prop: "i", name: "i", exported: false, typ: $Int64, tag: ""}, {prop: "prevRune", name: "prevRune", exported: false, typ: $Int, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = unicode.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = utf8.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$pkg.ErrTooLarge = errors.New("bytes.Buffer: too large");
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["encoding"] = (function() {
var $pkg = {}, $init, TextMarshaler, TextUnmarshaler, sliceType;
TextMarshaler = $pkg.TextMarshaler = $newType(8, $kindInterface, "encoding.TextMarshaler", true, "encoding", true, null);
TextUnmarshaler = $pkg.TextUnmarshaler = $newType(8, $kindInterface, "encoding.TextUnmarshaler", true, "encoding", true, null);
sliceType = $sliceType($Uint8);
TextMarshaler.init([{prop: "MarshalText", name: "MarshalText", pkg: "", typ: $funcType([], [sliceType, $error], false)}]);
TextUnmarshaler.init([{prop: "UnmarshalText", name: "UnmarshalText", pkg: "", typ: $funcType([sliceType], [$error], false)}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["math"] = (function() {
var $pkg = {}, $init, js, arrayType, arrayType$1, arrayType$2, structType, arrayType$3, math, zero, posInf, negInf, nan, buf, pow10tab, Exp, Frexp, Inf, IsInf, IsNaN, Log, Log2, NaN, init, Float32bits, Float32frombits, Float64bits, Float64frombits, Abs, normalize, frexp, log2, init$1;
js = $packages["github.com/gopherjs/gopherjs/js"];
arrayType = $arrayType($Uint32, 2);
arrayType$1 = $arrayType($Float32, 2);
arrayType$2 = $arrayType($Float64, 1);
structType = $structType("math", [{prop: "uint32array", name: "uint32array", exported: false, typ: arrayType, tag: ""}, {prop: "float32array", name: "float32array", exported: false, typ: arrayType$1, tag: ""}, {prop: "float64array", name: "float64array", exported: false, typ: arrayType$2, tag: ""}]);
arrayType$3 = $arrayType($Float64, 70);
Exp = function(x) {
var $ptr, x;
return $parseFloat(math.exp(x));
};
$pkg.Exp = Exp;
Frexp = function(f) {
var $ptr, _tuple, exp$1, f, frac;
frac = 0;
exp$1 = 0;
_tuple = frexp(f);
frac = _tuple[0];
exp$1 = _tuple[1];
return [frac, exp$1];
};
$pkg.Frexp = Frexp;
Inf = function(sign) {
var $ptr, sign;
if (sign >= 0) {
return posInf;
} else {
return negInf;
}
};
$pkg.Inf = Inf;
IsInf = function(f, sign) {
var $ptr, f, sign;
if (f === posInf) {
return sign >= 0;
}
if (f === negInf) {
return sign <= 0;
}
return false;
};
$pkg.IsInf = IsInf;
IsNaN = function(f) {
var $ptr, f, is;
is = false;
is = !((f === f));
return is;
};
$pkg.IsNaN = IsNaN;
Log = function(x) {
var $ptr, x;
if (!((x === x))) {
return nan;
}
return $parseFloat(math.log(x));
};
$pkg.Log = Log;
Log2 = function(x) {
var $ptr, x;
return log2(x);
};
$pkg.Log2 = Log2;
NaN = function() {
var $ptr;
return nan;
};
$pkg.NaN = NaN;
init = function() {
var $ptr, ab;
ab = new ($global.ArrayBuffer)(8);
buf.uint32array = new ($global.Uint32Array)(ab);
buf.float32array = new ($global.Float32Array)(ab);
buf.float64array = new ($global.Float64Array)(ab);
};
Float32bits = function(f) {
var $ptr, f;
buf.float32array[0] = f;
return buf.uint32array[0];
};
$pkg.Float32bits = Float32bits;
Float32frombits = function(b) {
var $ptr, b;
buf.uint32array[0] = b;
return buf.float32array[0];
};
$pkg.Float32frombits = Float32frombits;
Float64bits = function(f) {
var $ptr, f, x, x$1;
buf.float64array[0] = f;
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));
};
$pkg.Float64bits = Float64bits;
Float64frombits = function(b) {
var $ptr, b;
buf.uint32array[0] = ((b.$low >>> 0));
buf.uint32array[1] = (($shiftRightUint64(b, 32).$low >>> 0));
return buf.float64array[0];
};
$pkg.Float64frombits = Float64frombits;
Abs = function(x) {
var $ptr, x;
if (x < 0) {
return -x;
}
if (x === 0) {
return 0;
}
return x;
};
$pkg.Abs = Abs;
normalize = function(x) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, exp$1, x, y;
y = 0;
exp$1 = 0;
if (Abs(x) < 2.2250738585072014e-308) {
_tmp = x * 4.503599627370496e+15;
_tmp$1 = -52;
y = _tmp;
exp$1 = _tmp$1;
return [y, exp$1];
}
_tmp$2 = x;
_tmp$3 = 0;
y = _tmp$2;
exp$1 = _tmp$3;
return [y, exp$1];
};
frexp = function(f) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, exp$1, f, frac, x, x$1, x$2, x$3;
frac = 0;
exp$1 = 0;
if ((f === 0)) {
_tmp = f;
_tmp$1 = 0;
frac = _tmp;
exp$1 = _tmp$1;
return [frac, exp$1];
} else if (IsInf(f, 0) || IsNaN(f)) {
_tmp$2 = f;
_tmp$3 = 0;
frac = _tmp$2;
exp$1 = _tmp$3;
return [frac, exp$1];
}
_tuple = normalize(f);
f = _tuple[0];
exp$1 = _tuple[1];
x = Float64bits(f);
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;
x = (x$2 = new $Uint64(2146435072, 0), new $Uint64(x.$high & ~x$2.$high, (x.$low & ~x$2.$low) >>> 0));
x = (x$3 = new $Uint64(1071644672, 0), new $Uint64(x.$high | x$3.$high, (x.$low | x$3.$low) >>> 0));
frac = Float64frombits(x);
return [frac, exp$1];
};
log2 = function(x) {
var $ptr, _tuple, exp$1, frac, x;
_tuple = Frexp(x);
frac = _tuple[0];
exp$1 = _tuple[1];
if (frac === 0.5) {
return ((exp$1 - 1 >> 0));
}
return Log(frac) * 1.4426950408889634 + (exp$1);
};
init$1 = function() {
var $ptr, _q, i, m, x;
pow10tab[0] = 1;
pow10tab[1] = 10;
i = 2;
while (true) {
if (!(i < 70)) { break; }
m = (_q = i / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
((i < 0 || i >= pow10tab.length) ? ($throwRuntimeError("index out of range"), undefined) : pow10tab[i] = ((m < 0 || m >= pow10tab.length) ? ($throwRuntimeError("index out of range"), undefined) : pow10tab[m]) * (x = i - m >> 0, ((x < 0 || x >= pow10tab.length) ? ($throwRuntimeError("index out of range"), undefined) : pow10tab[x])));
i = i + (1) >> 0;
}
};
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
buf = new structType.ptr(arrayType.zero(), arrayType$1.zero(), arrayType$2.zero());
pow10tab = arrayType$3.zero();
math = $global.Math;
zero = 0;
posInf = 1 / zero;
negInf = -1 / zero;
nan = 0 / zero;
init();
init$1();
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["strconv"] = (function() {
var $pkg = {}, $init, errors, math, utf8, NumError, decimal, leftCheat, extFloat, floatInfo, decimalSlice, sliceType, sliceType$1, sliceType$2, sliceType$3, sliceType$4, sliceType$5, arrayType, ptrType, sliceType$6, 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, 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, formatBits, quoteWith, appendQuotedWith, appendQuotedRuneWith, appendEscapedRune, Quote, AppendQuote, AppendQuoteToASCII, AppendQuoteRune, AppendQuoteRuneToASCII, CanBackquote, unhex, UnquoteChar, Unquote, contains, bsearch16, bsearch32, IsPrint, isInGraphicList;
errors = $packages["errors"];
math = $packages["math"];
utf8 = $packages["unicode/utf8"];
NumError = $pkg.NumError = $newType(0, $kindStruct, "strconv.NumError", true, "strconv", true, function(Func_, Num_, Err_) {
this.$val = this;
if (arguments.length === 0) {
this.Func = "";
this.Num = "";
this.Err = $ifaceNil;
return;
}
this.Func = Func_;
this.Num = Num_;
this.Err = Err_;
});
decimal = $pkg.decimal = $newType(0, $kindStruct, "strconv.decimal", true, "strconv", false, function(d_, nd_, dp_, neg_, trunc_) {
this.$val = this;
if (arguments.length === 0) {
this.d = arrayType.zero();
this.nd = 0;
this.dp = 0;
this.neg = false;
this.trunc = false;
return;
}
this.d = d_;
this.nd = nd_;
this.dp = dp_;
this.neg = neg_;
this.trunc = trunc_;
});
leftCheat = $pkg.leftCheat = $newType(0, $kindStruct, "strconv.leftCheat", true, "strconv", false, function(delta_, cutoff_) {
this.$val = this;
if (arguments.length === 0) {
this.delta = 0;
this.cutoff = "";
return;
}
this.delta = delta_;
this.cutoff = cutoff_;
});
extFloat = $pkg.extFloat = $newType(0, $kindStruct, "strconv.extFloat", true, "strconv", false, function(mant_, exp_, neg_) {
this.$val = this;
if (arguments.length === 0) {
this.mant = new $Uint64(0, 0);
this.exp = 0;
this.neg = false;
return;
}
this.mant = mant_;
this.exp = exp_;
this.neg = neg_;
});
floatInfo = $pkg.floatInfo = $newType(0, $kindStruct, "strconv.floatInfo", true, "strconv", false, function(mantbits_, expbits_, bias_) {
this.$val = this;
if (arguments.length === 0) {
this.mantbits = 0;
this.expbits = 0;
this.bias = 0;
return;
}
this.mantbits = mantbits_;
this.expbits = expbits_;
this.bias = bias_;
});
decimalSlice = $pkg.decimalSlice = $newType(0, $kindStruct, "strconv.decimalSlice", true, "strconv", false, function(d_, nd_, dp_, neg_) {
this.$val = this;
if (arguments.length === 0) {
this.d = sliceType$6.nil;
this.nd = 0;
this.dp = 0;
this.neg = false;
return;
}
this.d = d_;
this.nd = nd_;
this.dp = dp_;
this.neg = neg_;
});
sliceType = $sliceType($Int);
sliceType$1 = $sliceType($Float64);
sliceType$2 = $sliceType($Float32);
sliceType$3 = $sliceType(leftCheat);
sliceType$4 = $sliceType($Uint16);
sliceType$5 = $sliceType($Uint32);
arrayType = $arrayType($Uint8, 800);
ptrType = $ptrType(NumError);
sliceType$6 = $sliceType($Uint8);
arrayType$1 = $arrayType($Uint8, 24);
arrayType$2 = $arrayType($Uint8, 32);
ptrType$1 = $ptrType(floatInfo);
arrayType$3 = $arrayType($Uint8, 65);
arrayType$4 = $arrayType($Uint8, 4);
ptrType$2 = $ptrType(decimal);
ptrType$3 = $ptrType(decimalSlice);
ptrType$4 = $ptrType(extFloat);
equalIgnoreCase = function(s1, s2) {
var $ptr, c1, c2, i, s1, s2;
if (!((s1.length === s2.length))) {
return false;
}
i = 0;
while (true) {
if (!(i < s1.length)) { break; }
c1 = s1.charCodeAt(i);
if (65 <= c1 && c1 <= 90) {
c1 = c1 + (32) << 24 >>> 24;
}
c2 = s2.charCodeAt(i);
if (65 <= c2 && c2 <= 90) {
c2 = c2 + (32) << 24 >>> 24;
}
if (!((c1 === c2))) {
return false;
}
i = i + (1) >> 0;
}
return true;
};
special = function(s) {
var $ptr, _1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, f, ok, s;
f = 0;
ok = false;
if (s.length === 0) {
return [f, ok];
}
_1 = s.charCodeAt(0);
if (_1 === (43)) {
if (equalIgnoreCase(s, "+inf") || equalIgnoreCase(s, "+infinity")) {
_tmp = math.Inf(1);
_tmp$1 = true;
f = _tmp;
ok = _tmp$1;
return [f, ok];
}
} else if (_1 === (45)) {
if (equalIgnoreCase(s, "-inf") || equalIgnoreCase(s, "-infinity")) {
_tmp$2 = math.Inf(-1);
_tmp$3 = true;
f = _tmp$2;
ok = _tmp$3;
return [f, ok];
}
} else if ((_1 === (110)) || (_1 === (78))) {
if (equalIgnoreCase(s, "nan")) {
_tmp$4 = math.NaN();
_tmp$5 = true;
f = _tmp$4;
ok = _tmp$5;
return [f, ok];
}
} else if ((_1 === (105)) || (_1 === (73))) {
if (equalIgnoreCase(s, "inf") || equalIgnoreCase(s, "infinity")) {
_tmp$6 = math.Inf(1);
_tmp$7 = true;
f = _tmp$6;
ok = _tmp$7;
return [f, ok];
}
} else {
return [f, ok];
}
return [f, ok];
};
decimal.ptr.prototype.set = function(s) {
var $ptr, b, e, esign, i, ok, s, sawdigits, sawdot, x, x$1;
ok = false;
b = this;
i = 0;
b.neg = false;
b.trunc = false;
if (i >= s.length) {
return ok;
}
if ((s.charCodeAt(i) === 43)) {
i = i + (1) >> 0;
} else if ((s.charCodeAt(i) === 45)) {
b.neg = true;
i = i + (1) >> 0;
}
sawdot = false;
sawdigits = false;
while (true) {
if (!(i < s.length)) { break; }
if ((s.charCodeAt(i) === 46)) {
if (sawdot) {
return ok;
}
sawdot = true;
b.dp = b.nd;
i = i + (1) >> 0;
continue;
} else if (48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57) {
sawdigits = true;
if ((s.charCodeAt(i) === 48) && (b.nd === 0)) {
b.dp = b.dp - (1) >> 0;
i = i + (1) >> 0;
continue;
}
if (b.nd < 800) {
(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)));
b.nd = b.nd + (1) >> 0;
} else if (!((s.charCodeAt(i) === 48))) {
b.trunc = true;
}
i = i + (1) >> 0;
continue;
}
break;
}
if (!sawdigits) {
return ok;
}
if (!sawdot) {
b.dp = b.nd;
}
if (i < s.length && ((s.charCodeAt(i) === 101) || (s.charCodeAt(i) === 69))) {
i = i + (1) >> 0;
if (i >= s.length) {
return ok;
}
esign = 1;
if (s.charCodeAt(i) === 43) {
i = i + (1) >> 0;
} else if (s.charCodeAt(i) === 45) {
i = i + (1) >> 0;
esign = -1;
}
if (i >= s.length || s.charCodeAt(i) < 48 || s.charCodeAt(i) > 57) {
return ok;
}
e = 0;
while (true) {
if (!(i < s.length && 48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57)) { break; }
if (e < 10000) {
e = (($imul(e, 10)) + ((s.charCodeAt(i) >> 0)) >> 0) - 48 >> 0;
}
i = i + (1) >> 0;
}
b.dp = b.dp + (($imul(e, esign))) >> 0;
}
if (!((i === s.length))) {
return ok;
}
ok = true;
return ok;
};
decimal.prototype.set = function(s) { return this.$val.set(s); };
readFloat = function(s) {
var $ptr, _1, c, dp, e, esign, exp, i, mantissa, nd, ndMant, neg, ok, s, sawdigits, sawdot, trunc, x;
mantissa = new $Uint64(0, 0);
exp = 0;
neg = false;
trunc = false;
ok = false;
i = 0;
if (i >= s.length) {
return [mantissa, exp, neg, trunc, ok];
}
if ((s.charCodeAt(i) === 43)) {
i = i + (1) >> 0;
} else if ((s.charCodeAt(i) === 45)) {
neg = true;
i = i + (1) >> 0;
}
sawdot = false;
sawdigits = false;
nd = 0;
ndMant = 0;
dp = 0;
while (true) {
if (!(i < s.length)) { break; }
c = s.charCodeAt(i);
_1 = true;
if (_1 === ((c === 46))) {
if (sawdot) {
return [mantissa, exp, neg, trunc, ok];
}
sawdot = true;
dp = nd;
i = i + (1) >> 0;
continue;
} else if (_1 === (48 <= c && c <= 57)) {
sawdigits = true;
if ((c === 48) && (nd === 0)) {
dp = dp - (1) >> 0;
i = i + (1) >> 0;
continue;
}
nd = nd + (1) >> 0;
if (ndMant < 19) {
mantissa = $mul64(mantissa, (new $Uint64(0, 10)));
mantissa = (x = (new $Uint64(0, (c - 48 << 24 >>> 24))), new $Uint64(mantissa.$high + x.$high, mantissa.$low + x.$low));
ndMant = ndMant + (1) >> 0;
} else if (!((s.charCodeAt(i) === 48))) {
trunc = true;
}
i = i + (1) >> 0;
continue;
}
break;
}
if (!sawdigits) {
return [mantissa, exp, neg, trunc, ok];
}
if (!sawdot) {
dp = nd;
}
if (i < s.length && ((s.charCodeAt(i) === 101) || (s.charCodeAt(i) === 69))) {
i = i + (1) >> 0;
if (i >= s.length) {
return [mantissa, exp, neg, trunc, ok];
}
esign = 1;
if (s.charCodeAt(i) === 43) {
i = i + (1) >> 0;
} else if (s.charCodeAt(i) === 45) {
i = i + (1) >> 0;
esign = -1;
}
if (i >= s.length || s.charCodeAt(i) < 48 || s.charCodeAt(i) > 57) {
return [mantissa, exp, neg, trunc, ok];
}
e = 0;
while (true) {
if (!(i < s.length && 48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57)) { break; }
if (e < 10000) {
e = (($imul(e, 10)) + ((s.charCodeAt(i) >> 0)) >> 0) - 48 >> 0;
}
i = i + (1) >> 0;
}
dp = dp + (($imul(e, esign))) >> 0;
}
if (!((i === s.length))) {
return [mantissa, exp, neg, trunc, ok];
}
if (!((mantissa.$high === 0 && mantissa.$low === 0))) {
exp = dp - ndMant >> 0;
}
ok = true;
return [mantissa, exp, neg, trunc, ok];
};
decimal.ptr.prototype.floatBits = function(flt) {
var $ptr, _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;
/* */ $s = 0; s: while (true) { switch ($s) { case 0:
b = new $Uint64(0, 0);
overflow = false;
d = this;
exp = 0;
mant = new $Uint64(0, 0);
/* */ if (d.nd === 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (d.nd === 0) { */ case 1:
mant = new $Uint64(0, 0);
exp = flt.bias;
/* goto out */ $s = 3; continue;
/* } */ case 2:
/* */ if (d.dp > 310) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (d.dp > 310) { */ case 4:
/* goto overflow */ $s = 6; continue;
/* } */ case 5:
/* */ if (d.dp < -330) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (d.dp < -330) { */ case 7:
mant = new $Uint64(0, 0);
exp = flt.bias;
/* goto out */ $s = 3; continue;
/* } */ case 8:
exp = 0;
while (true) {
if (!(d.dp > 0)) { break; }
n = 0;
if (d.dp >= powtab.$length) {
n = 27;
} else {
n = (x = d.dp, ((x < 0 || x >= powtab.$length) ? ($throwRuntimeError("index out of range"), undefined) : powtab.$array[powtab.$offset + x]));
}
d.Shift(-n);
exp = exp + (n) >> 0;
}
while (true) {
if (!(d.dp < 0 || (d.dp === 0) && d.d[0] < 53)) { break; }
n$1 = 0;
if (-d.dp >= powtab.$length) {
n$1 = 27;
} else {
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]));
}
d.Shift(n$1);
exp = exp - (n$1) >> 0;
}
exp = exp - (1) >> 0;
if (exp < (flt.bias + 1 >> 0)) {
n$2 = (flt.bias + 1 >> 0) - exp >> 0;
d.Shift(-n$2);
exp = exp + (n$2) >> 0;
}
/* */ if ((exp - flt.bias >> 0) >= (((y = flt.expbits, y < 32 ? (1 << y) : 0) >> 0) - 1 >> 0)) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if ((exp - flt.bias >> 0) >= (((y = flt.expbits, y < 32 ? (1 << y) : 0) >> 0) - 1 >> 0)) { */ case 9:
/* goto overflow */ $s = 6; continue;
/* } */ case 10:
d.Shift((((1 + flt.mantbits >>> 0) >> 0)));
mant = d.RoundedInteger();
/* */ if ((x$2 = $shiftLeft64(new $Uint64(0, 2), flt.mantbits), (mant.$high === x$2.$high && mant.$low === x$2.$low))) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if ((x$2 = $shiftLeft64(new $Uint64(0, 2), flt.mantbits), (mant.$high === x$2.$high && mant.$low === x$2.$low))) { */ case 11:
mant = $shiftRightUint64(mant, (1));
exp = exp + (1) >> 0;
/* */ if ((exp - flt.bias >> 0) >= (((y$1 = flt.expbits, y$1 < 32 ? (1 << y$1) : 0) >> 0) - 1 >> 0)) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if ((exp - flt.bias >> 0) >= (((y$1 = flt.expbits, y$1 < 32 ? (1 << y$1) : 0) >> 0) - 1 >> 0)) { */ case 13:
/* goto overflow */ $s = 6; continue;
/* } */ case 14:
/* } */ case 12:
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))) {
exp = flt.bias;
}
/* goto out */ $s = 3; continue;
/* overflow: */ case 6:
mant = new $Uint64(0, 0);
exp = (((y$2 = flt.expbits, y$2 < 32 ? (1 << y$2) : 0) >> 0) - 1 >> 0) + flt.bias >> 0;
overflow = true;
/* out: */ case 3:
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));
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));
if (d.neg) {
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));
}
_tmp = bits;
_tmp$1 = overflow;
b = _tmp;
overflow = _tmp$1;
$s = -1; return [b, overflow];
/* */ } return; }
};
decimal.prototype.floatBits = function(flt) { return this.$val.floatBits(flt); };
atof64exact = function(mantissa, exp, neg) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, exp, f, mantissa, neg, ok, x, x$1, x$2;
f = 0;
ok = false;
if (!((x = $shiftRightUint64(mantissa, float64info.mantbits), (x.$high === 0 && x.$low === 0)))) {
return [f, ok];
}
f = ($flatten64(mantissa));
if (neg) {
f = -f;
}
if ((exp === 0)) {
_tmp = f;
_tmp$1 = true;
f = _tmp;
ok = _tmp$1;
return [f, ok];
} else if (exp > 0 && exp <= 37) {
if (exp > 22) {
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])));
exp = 22;
}
if (f > 1e+15 || f < -1e+15) {
return [f, ok];
}
_tmp$2 = f * ((exp < 0 || exp >= float64pow10.$length) ? ($throwRuntimeError("index out of range"), undefined) : float64pow10.$array[float64pow10.$offset + exp]);
_tmp$3 = true;
f = _tmp$2;
ok = _tmp$3;
return [f, ok];
} else if (exp < 0 && exp >= -22) {
_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]));
_tmp$5 = true;
f = _tmp$4;
ok = _tmp$5;
return [f, ok];
}
return [f, ok];
};
atof32exact = function(mantissa, exp, neg) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, exp, f, mantissa, neg, ok, x, x$1, x$2;
f = 0;
ok = false;
if (!((x = $shiftRightUint64(mantissa, float32info.mantbits), (x.$high === 0 && x.$low === 0)))) {
return [f, ok];
}
f = ($flatten64(mantissa));
if (neg) {
f = -f;
}
if ((exp === 0)) {
_tmp = f;
_tmp$1 = true;
f = _tmp;
ok = _tmp$1;
return [f, ok];
} else if (exp > 0 && exp <= 17) {
if (exp > 10) {
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]))));
exp = 10;
}
if (f > 1e+07 || f < -1e+07) {
return [f, ok];
}
_tmp$2 = $fround(f * ((exp < 0 || exp >= float32pow10.$length) ? ($throwRuntimeError("index out of range"), undefined) : float32pow10.$array[float32pow10.$offset + exp]));
_tmp$3 = true;
f = _tmp$2;
ok = _tmp$3;
return [f, ok];
} else if (exp < 0 && exp >= -10) {
_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])));
_tmp$5 = true;
f = _tmp$4;
ok = _tmp$5;
return [f, ok];
}
return [f, ok];
};
atof32 = function(s) {
var $ptr, _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;
f = 0;
err = $ifaceNil;
_tuple = special(s);
val = _tuple[0];
ok = _tuple[1];
if (ok) {
_tmp = ($fround(val));
_tmp$1 = $ifaceNil;
f = _tmp;
err = _tmp$1;
return [f, err];
}
if (optimize) {
_tuple$1 = readFloat(s);
mantissa = _tuple$1[0];
exp = _tuple$1[1];
neg = _tuple$1[2];
trunc = _tuple$1[3];
ok$1 = _tuple$1[4];
if (ok$1) {
if (!trunc) {
_tuple$2 = atof32exact(mantissa, exp, neg);
f$1 = _tuple$2[0];
ok$2 = _tuple$2[1];
if (ok$2) {
_tmp$2 = f$1;
_tmp$3 = $ifaceNil;
f = _tmp$2;
err = _tmp$3;
return [f, err];
}
}
ext = new extFloat.ptr(new $Uint64(0, 0), 0, false);
ok$3 = ext.AssignDecimal(mantissa, exp, neg, trunc, float32info);
if (ok$3) {
_tuple$3 = ext.floatBits(float32info);
b = _tuple$3[0];
ovf = _tuple$3[1];
f = math.Float32frombits(((b.$low >>> 0)));
if (ovf) {
err = rangeError("ParseFloat", s);
}
_tmp$4 = f;
_tmp$5 = err;
f = _tmp$4;
err = _tmp$5;
return [f, err];
}
}
}
d = new decimal.ptr(arrayType.zero(), 0, 0, false, false);
if (!d.set(s)) {
_tmp$6 = 0;
_tmp$7 = syntaxError("ParseFloat", s);
f = _tmp$6;
err = _tmp$7;
return [f, err];
}
_tuple$4 = d.floatBits(float32info);
b$1 = _tuple$4[0];
ovf$1 = _tuple$4[1];
f = math.Float32frombits(((b$1.$low >>> 0)));
if (ovf$1) {
err = rangeError("ParseFloat", s);
}
_tmp$8 = f;
_tmp$9 = err;
f = _tmp$8;
err = _tmp$9;
return [f, err];
};
atof64 = function(s) {
var $ptr, _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;
f = 0;
err = $ifaceNil;
_tuple = special(s);
val = _tuple[0];
ok = _tuple[1];
if (ok) {
_tmp = val;
_tmp$1 = $ifaceNil;
f = _tmp;
err = _tmp$1;
return [f, err];
}
if (optimize) {
_tuple$1 = readFloat(s);
mantissa = _tuple$1[0];
exp = _tuple$1[1];
neg = _tuple$1[2];
trunc = _tuple$1[3];
ok$1 = _tuple$1[4];
if (ok$1) {
if (!trunc) {
_tuple$2 = atof64exact(mantissa, exp, neg);
f$1 = _tuple$2[0];
ok$2 = _tuple$2[1];
if (ok$2) {
_tmp$2 = f$1;
_tmp$3 = $ifaceNil;
f = _tmp$2;
err = _tmp$3;
return [f, err];
}
}
ext = new extFloat.ptr(new $Uint64(0, 0), 0, false);
ok$3 = ext.AssignDecimal(mantissa, exp, neg, trunc, float64info);
if (ok$3) {
_tuple$3 = ext.floatBits(float64info);
b = _tuple$3[0];
ovf = _tuple$3[1];
f = math.Float64frombits(b);
if (ovf) {
err = rangeError("ParseFloat", s);
}
_tmp$4 = f;
_tmp$5 = err;
f = _tmp$4;
err = _tmp$5;
return [f, err];
}
}
}
d = new decimal.ptr(arrayType.zero(), 0, 0, false, false);
if (!d.set(s)) {
_tmp$6 = 0;
_tmp$7 = syntaxError("ParseFloat", s);
f = _tmp$6;
err = _tmp$7;
return [f, err];
}
_tuple$4 = d.floatBits(float64info);
b$1 = _tuple$4[0];
ovf$1 = _tuple$4[1];
f = math.Float64frombits(b$1);
if (ovf$1) {
err = rangeError("ParseFloat", s);
}
_tmp$8 = f;
_tmp$9 = err;
f = _tmp$8;
err = _tmp$9;
return [f, err];
};
ParseFloat = function(s, bitSize) {
var $ptr, _tuple, bitSize, err, f, s;
if (bitSize === 32) {
_tuple = atof32(s);
f = _tuple[0];
err = _tuple[1];
return [(f), err];
}
return atof64(s);
};
$pkg.ParseFloat = ParseFloat;
NumError.ptr.prototype.Error = function() {
var $ptr, _r, e, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
e = this;
_r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return "strconv." + e.Func + ": " + "parsing " + Quote(e.Num) + ": " + _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: NumError.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
};
NumError.prototype.Error = function() { return this.$val.Error(); };
syntaxError = function(fn, str) {
var $ptr, fn, str;
return new NumError.ptr(fn, str, $pkg.ErrSyntax);
};
rangeError = function(fn, str) {
var $ptr, fn, str;
return new NumError.ptr(fn, str, $pkg.ErrRange);
};
ParseUint = function(s, base, bitSize) {
var $ptr, _1, _tmp, _tmp$1, base, bitSize, cutoff, d, err, i, maxVal, n, n1, s, v, x, x$1, x$2, $s;
/* */ $s = 0; s: while (true) { switch ($s) { case 0:
n = new $Uint64(0, 0);
err = $ifaceNil;
_tmp = new $Uint64(0, 0);
_tmp$1 = new $Uint64(0, 0);
cutoff = _tmp;
maxVal = _tmp$1;
if (bitSize === 0) {
bitSize = 32;
}
i = 0;
/* */ if (s.length < 1) { $s = 2; continue; }
/* */ if (2 <= base && base <= 36) { $s = 3; continue; }
/* */ if ((base === 0)) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (s.length < 1) { */ case 2:
err = $pkg.ErrSyntax;
/* goto Error */ $s = 7; continue;
$s = 6; continue;
/* } else if (2 <= base && base <= 36) { */ case 3:
$s = 6; continue;
/* } else if ((base === 0)) { */ case 4:
/* */ if ((s.charCodeAt(0) === 48) && s.length > 1 && ((s.charCodeAt(1) === 120) || (s.charCodeAt(1) === 88))) { $s = 9; continue; }
/* */ if ((s.charCodeAt(0) === 48)) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if ((s.charCodeAt(0) === 48) && s.length > 1 && ((s.charCodeAt(1) === 120) || (s.charCodeAt(1) === 88))) { */ case 9:
/* */ if (s.length < 3) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (s.length < 3) { */ case 13:
err = $pkg.ErrSyntax;
/* goto Error */ $s = 7; continue;
/* } */ case 14:
base = 16;
i = 2;
$s = 12; continue;
/* } else if ((s.charCodeAt(0) === 48)) { */ case 10:
base = 8;
i = 1;
$s = 12; continue;
/* } else { */ case 11:
base = 10;
/* } */ case 12:
case 8:
$s = 6; continue;
/* } else { */ case 5:
err = errors.New("invalid base " + Itoa(base));
/* goto Error */ $s = 7; continue;
/* } */ case 6:
case 1:
_1 = base;
if (_1 === (10)) {
cutoff = new $Uint64(429496729, 2576980378);
} else if (_1 === (16)) {
cutoff = new $Uint64(268435456, 0);
} else {
cutoff = (x = $div64(new $Uint64(4294967295, 4294967295), (new $Uint64(0, base)), false), new $Uint64(x.$high + 0, x.$low + 1));
}
maxVal = (x$1 = $shiftLeft64(new $Uint64(0, 1), ((bitSize >>> 0))), new $Uint64(x$1.$high - 0, x$1.$low - 1));
/* while (true) { */ case 15:
/* if (!(i < s.length)) { break; } */ if(!(i < s.length)) { $s = 16; continue; }
v = 0;
d = s.charCodeAt(i);
/* */ if (48 <= d && d <= 57) { $s = 18; continue; }
/* */ if (97 <= d && d <= 122) { $s = 19; continue; }
/* */ if (65 <= d && d <= 90) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if (48 <= d && d <= 57) { */ case 18:
v = d - 48 << 24 >>> 24;
$s = 22; continue;
/* } else if (97 <= d && d <= 122) { */ case 19:
v = (d - 97 << 24 >>> 24) + 10 << 24 >>> 24;
$s = 22; continue;
/* } else if (65 <= d && d <= 90) { */ case 20:
v = (d - 65 << 24 >>> 24) + 10 << 24 >>> 24;
$s = 22; continue;
/* } else { */ case 21:
n = new $Uint64(0, 0);
err = $pkg.ErrSyntax;
/* goto Error */ $s = 7; continue;
/* } */ case 22:
case 17:
/* */ if (v >= ((base << 24 >>> 24))) { $s = 23; continue; }
/* */ $s = 24; continue;
/* if (v >= ((base << 24 >>> 24))) { */ case 23:
n = new $Uint64(0, 0);
err = $pkg.ErrSyntax;
/* goto Error */ $s = 7; continue;
/* } */ case 24:
/* */ if ((n.$high > cutoff.$high || (n.$high === cutoff.$high && n.$low >= cutoff.$low))) { $s = 25; continue; }
/* */ $s = 26; continue;
/* if ((n.$high > cutoff.$high || (n.$high === cutoff.$high && n.$low >= cutoff.$low))) { */ case 25:
n = new $Uint64(4294967295, 4294967295);
err = $pkg.ErrRange;
/* goto Error */ $s = 7; continue;
/* } */ case 26:
n = $mul64(n, ((new $Uint64(0, base))));
n1 = (x$2 = (new $Uint64(0, v)), new $Uint64(n.$high + x$2.$high, n.$low + x$2.$low));
/* */ 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; }
/* */ $s = 28; continue;
/* 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:
n = new $Uint64(4294967295, 4294967295);
err = $pkg.ErrRange;
/* goto Error */ $s = 7; continue;
/* } */ case 28:
n = n1;
i = i + (1) >> 0;
/* } */ $s = 15; continue; case 16:
$s = -1; return [n, $ifaceNil];
/* Error: */ case 7:
$s = -1; return [n, new NumError.ptr("ParseUint", s, err)];
$s = -1; return [new $Uint64(0, 0), $ifaceNil];
/* */ } return; }
};
$pkg.ParseUint = ParseUint;
ParseInt = function(s, base, bitSize) {
var $ptr, _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;
i = new $Int64(0, 0);
err = $ifaceNil;
if (bitSize === 0) {
bitSize = 32;
}
if (s.length === 0) {
_tmp = new $Int64(0, 0);
_tmp$1 = syntaxError("ParseInt", s);
i = _tmp;
err = _tmp$1;
return [i, err];
}
s0 = s;
neg = false;
if (s.charCodeAt(0) === 43) {
s = $substring(s, 1);
} else if (s.charCodeAt(0) === 45) {
neg = true;
s = $substring(s, 1);
}
un = new $Uint64(0, 0);
_tuple = ParseUint(s, base, bitSize);
un = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil)) && !($interfaceIsEqual($assertType(err, ptrType).Err, $pkg.ErrRange))) {
$assertType(err, ptrType).Func = "ParseInt";
$assertType(err, ptrType).Num = s0;
_tmp$2 = new $Int64(0, 0);
_tmp$3 = err;
i = _tmp$2;
err = _tmp$3;
return [i, err];
}
cutoff = ($shiftLeft64(new $Uint64(0, 1), (((bitSize - 1 >> 0) >>> 0))));
if (!neg && (un.$high > cutoff.$high || (un.$high === cutoff.$high && un.$low >= cutoff.$low))) {
_tmp$4 = ((x = new $Uint64(cutoff.$high - 0, cutoff.$low - 1), new $Int64(x.$high, x.$low)));
_tmp$5 = rangeError("ParseInt", s0);
i = _tmp$4;
err = _tmp$5;
return [i, err];
}
if (neg && (un.$high > cutoff.$high || (un.$high === cutoff.$high && un.$low > cutoff.$low))) {
_tmp$6 = (x$1 = (new $Int64(cutoff.$high, cutoff.$low)), new $Int64(-x$1.$high, -x$1.$low));
_tmp$7 = rangeError("ParseInt", s0);
i = _tmp$6;
err = _tmp$7;
return [i, err];
}
n = (new $Int64(un.$high, un.$low));
if (neg) {
n = new $Int64(-n.$high, -n.$low);
}
_tmp$8 = n;
_tmp$9 = $ifaceNil;
i = _tmp$8;
err = _tmp$9;
return [i, err];
};
$pkg.ParseInt = ParseInt;
Atoi = function(s) {
var $ptr, _tuple, _tuple$1, err, i64, nerr, ok, s;
_tuple = ParseInt(s, 10, 0);
i64 = _tuple[0];
err = _tuple[1];
_tuple$1 = $assertType(err, ptrType, true);
nerr = _tuple$1[0];
ok = _tuple$1[1];
if (ok) {
nerr.Func = "Atoi";
}
return [(((i64.$low + ((i64.$high >> 31) * 4294967296)) >> 0)), err];
};
$pkg.Atoi = Atoi;
decimal.ptr.prototype.String = function() {
var $ptr, a, buf, n, w;
a = this;
n = 10 + a.nd >> 0;
if (a.dp > 0) {
n = n + (a.dp) >> 0;
}
if (a.dp < 0) {
n = n + (-a.dp) >> 0;
}
buf = $makeSlice(sliceType$6, n);
w = 0;
if ((a.nd === 0)) {
return "0";
} else if (a.dp <= 0) {
((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = 48);
w = w + (1) >> 0;
((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = 46);
w = w + (1) >> 0;
w = w + (digitZero($subslice(buf, w, (w + -a.dp >> 0)))) >> 0;
w = w + ($copySlice($subslice(buf, w), $subslice(new sliceType$6(a.d), 0, a.nd))) >> 0;
} else if (a.dp < a.nd) {
w = w + ($copySlice($subslice(buf, w), $subslice(new sliceType$6(a.d), 0, a.dp))) >> 0;
((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = 46);
w = w + (1) >> 0;
w = w + ($copySlice($subslice(buf, w), $subslice(new sliceType$6(a.d), a.dp, a.nd))) >> 0;
} else {
w = w + ($copySlice($subslice(buf, w), $subslice(new sliceType$6(a.d), 0, a.nd))) >> 0;
w = w + (digitZero($subslice(buf, w, ((w + a.dp >> 0) - a.nd >> 0)))) >> 0;
}
return ($bytesToString($subslice(buf, 0, w)));
};
decimal.prototype.String = function() { return this.$val.String(); };
digitZero = function(dst) {
var $ptr, _i, _ref, dst, i;
_ref = dst;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
((i < 0 || i >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + i] = 48);
_i++;
}
return dst.$length;
};
trim = function(a) {
var $ptr, a, x, x$1;
while (true) {
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; }
a.nd = a.nd - (1) >> 0;
}
if (a.nd === 0) {
a.dp = 0;
}
};
decimal.ptr.prototype.Assign = function(v) {
var $ptr, a, buf, n, v, v1, x, x$1, x$2;
a = this;
buf = arrayType$1.zero();
n = 0;
while (true) {
if (!((v.$high > 0 || (v.$high === 0 && v.$low > 0)))) { break; }
v1 = $div64(v, new $Uint64(0, 10), false);
v = (x = $mul64(new $Uint64(0, 10), v1), new $Uint64(v.$high - x.$high, v.$low - x.$low));
((n < 0 || n >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[n] = ((new $Uint64(v.$high + 0, v.$low + 48).$low << 24 >>> 24)));
n = n + (1) >> 0;
v = v1;
}
a.nd = 0;
n = n - (1) >> 0;
while (true) {
if (!(n >= 0)) { break; }
(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])));
a.nd = a.nd + (1) >> 0;
n = n - (1) >> 0;
}
a.dp = a.nd;
trim(a);
};
decimal.prototype.Assign = function(v) { return this.$val.Assign(v); };
rightShift = function(a, k) {
var $ptr, 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;
r = 0;
w = 0;
n = 0;
while (true) {
if (!(((y = k, y < 32 ? (n >>> y) : 0) >>> 0) === 0)) { break; }
if (r >= a.nd) {
if (n === 0) {
a.nd = 0;
return;
}
while (true) {
if (!(((y$1 = k, y$1 < 32 ? (n >>> y$1) : 0) >>> 0) === 0)) { break; }
n = n * 10 >>> 0;
r = r + (1) >> 0;
}
break;
}
c = (((x = a.d, ((r < 0 || r >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[r])) >>> 0));
n = ((n * 10 >>> 0) + c >>> 0) - 48 >>> 0;
r = r + (1) >> 0;
}
a.dp = a.dp - ((r - 1 >> 0)) >> 0;
mask = (((y$2 = k, y$2 < 32 ? (1 << y$2) : 0) >>> 0)) - 1 >>> 0;
while (true) {
if (!(r < a.nd)) { break; }
c$1 = (((x$1 = a.d, ((r < 0 || r >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[r])) >>> 0));
dig = (y$3 = k, y$3 < 32 ? (n >>> y$3) : 0) >>> 0;
n = (n & (mask)) >>> 0;
(x$2 = a.d, ((w < 0 || w >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[w] = (((dig + 48 >>> 0) << 24 >>> 24))));
w = w + (1) >> 0;
n = ((n * 10 >>> 0) + c$1 >>> 0) - 48 >>> 0;
r = r + (1) >> 0;
}
while (true) {
if (!(n > 0)) { break; }
dig$1 = (y$4 = k, y$4 < 32 ? (n >>> y$4) : 0) >>> 0;
n = (n & (mask)) >>> 0;
if (w < 800) {
(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))));
w = w + (1) >> 0;
} else if (dig$1 > 0) {
a.trunc = true;
}
n = n * 10 >>> 0;
}
a.nd = w;
trim(a);
};
prefixIsLessThan = function(b, s) {
var $ptr, b, i, s;
i = 0;
while (true) {
if (!(i < s.length)) { break; }
if (i >= b.$length) {
return true;
}
if (!((((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]) === s.charCodeAt(i)))) {
return ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]) < s.charCodeAt(i);
}
i = i + (1) >> 0;
}
return false;
};
leftShift = function(a, k) {
var $ptr, _q, _q$1, a, delta, k, n, quo, quo$1, r, rem, rem$1, w, x, x$1, x$2, y;
delta = ((k < 0 || k >= leftcheats.$length) ? ($throwRuntimeError("index out of range"), undefined) : leftcheats.$array[leftcheats.$offset + k]).delta;
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)) {
delta = delta - (1) >> 0;
}
r = a.nd;
w = a.nd + delta >> 0;
n = 0;
r = r - (1) >> 0;
while (true) {
if (!(r >= 0)) { break; }
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;
quo = (_q = n / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
rem = n - (10 * quo >>> 0) >>> 0;
w = w - (1) >> 0;
if (w < 800) {
(x$1 = a.d, ((w < 0 || w >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[w] = (((rem + 48 >>> 0) << 24 >>> 24))));
} else if (!((rem === 0))) {
a.trunc = true;
}
n = quo;
r = r - (1) >> 0;
}
while (true) {
if (!(n > 0)) { break; }
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"));
rem$1 = n - (10 * quo$1 >>> 0) >>> 0;
w = w - (1) >> 0;
if (w < 800) {
(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))));
} else if (!((rem$1 === 0))) {
a.trunc = true;
}
n = quo$1;
}
a.nd = a.nd + (delta) >> 0;
if (a.nd >= 800) {
a.nd = 800;
}
a.dp = a.dp + (delta) >> 0;
trim(a);
};
decimal.ptr.prototype.Shift = function(k) {
var $ptr, a, k;
a = this;
if ((a.nd === 0)) {
} else if (k > 0) {
while (true) {
if (!(k > 28)) { break; }
leftShift(a, 28);
k = k - (28) >> 0;
}
leftShift(a, ((k >>> 0)));
} else if (k < 0) {
while (true) {
if (!(k < -28)) { break; }
rightShift(a, 28);
k = k + (28) >> 0;
}
rightShift(a, ((-k >>> 0)));
}
};
decimal.prototype.Shift = function(k) { return this.$val.Shift(k); };
shouldRoundUp = function(a, nd) {
var $ptr, _r, a, nd, x, x$1, x$2, x$3;
if (nd < 0 || nd >= a.nd) {
return false;
}
if (((x = a.d, ((nd < 0 || nd >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[nd])) === 53) && ((nd + 1 >> 0) === a.nd)) {
if (a.trunc) {
return true;
}
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));
}
return (x$3 = a.d, ((nd < 0 || nd >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[nd])) >= 53;
};
decimal.ptr.prototype.Round = function(nd) {
var $ptr, a, nd;
a = this;
if (nd < 0 || nd >= a.nd) {
return;
}
if (shouldRoundUp(a, nd)) {
a.RoundUp(nd);
} else {
a.RoundDown(nd);
}
};
decimal.prototype.Round = function(nd) { return this.$val.Round(nd); };
decimal.ptr.prototype.RoundDown = function(nd) {
var $ptr, a, nd;
a = this;
if (nd < 0 || nd >= a.nd) {
return;
}
a.nd = nd;
trim(a);
};
decimal.prototype.RoundDown = function(nd) { return this.$val.RoundDown(nd); };
decimal.ptr.prototype.RoundUp = function(nd) {
var $ptr, a, c, i, nd, x, x$1, x$2;
a = this;
if (nd < 0 || nd >= a.nd) {
return;
}
i = nd - 1 >> 0;
while (true) {
if (!(i >= 0)) { break; }
c = (x = a.d, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i]));
if (c < 57) {
(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)));
a.nd = i + 1 >> 0;
return;
}
i = i - (1) >> 0;
}
a.d[0] = 49;
a.nd = 1;
a.dp = a.dp + (1) >> 0;
};
decimal.prototype.RoundUp = function(nd) { return this.$val.RoundUp(nd); };
decimal.ptr.prototype.RoundedInteger = function() {
var $ptr, a, i, n, x, x$1, x$2, x$3;
a = this;
if (a.dp > 20) {
return new $Uint64(4294967295, 4294967295);
}
i = 0;
n = new $Uint64(0, 0);
i = 0;
while (true) {
if (!(i < a.dp && i < a.nd)) { break; }
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));
i = i + (1) >> 0;
}
while (true) {
if (!(i < a.dp)) { break; }
n = $mul64(n, (new $Uint64(0, 10)));
i = i + (1) >> 0;
}
if (shouldRoundUp(a, a.dp)) {
n = (x$3 = new $Uint64(0, 1), new $Uint64(n.$high + x$3.$high, n.$low + x$3.$low));
}
return n;
};
decimal.prototype.RoundedInteger = function() { return this.$val.RoundedInteger(); };
extFloat.ptr.prototype.floatBits = function(flt) {
var $ptr, 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;
bits = new $Uint64(0, 0);
overflow = false;
f = this;
f.Normalize();
exp = f.exp + 63 >> 0;
if (exp < (flt.bias + 1 >> 0)) {
n = (flt.bias + 1 >> 0) - exp >> 0;
f.mant = $shiftRightUint64(f.mant, (((n >>> 0))));
exp = exp + (n) >> 0;
}
mant = $shiftRightUint64(f.mant, ((63 - flt.mantbits >>> 0)));
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)))) {
mant = (x$3 = new $Uint64(0, 1), new $Uint64(mant.$high + x$3.$high, mant.$low + x$3.$low));
}
if ((x$4 = $shiftLeft64(new $Uint64(0, 2), flt.mantbits), (mant.$high === x$4.$high && mant.$low === x$4.$low))) {
mant = $shiftRightUint64(mant, (1));
exp = exp + (1) >> 0;
}
if ((exp - flt.bias >> 0) >= (((y = flt.expbits, y < 32 ? (1 << y) : 0) >> 0) - 1 >> 0)) {
mant = new $Uint64(0, 0);
exp = (((y$1 = flt.expbits, y$1 < 32 ? (1 << y$1) : 0) >> 0) - 1 >> 0) + flt.bias >> 0;
overflow = true;
} 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))) {
exp = flt.bias;
}
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));
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));
if (f.neg) {
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));
}
return [bits, overflow];
};
extFloat.prototype.floatBits = function(flt) { return this.$val.floatBits(flt); };
extFloat.ptr.prototype.AssignComputeBounds = function(mant, exp, neg, flt) {
var $ptr, _tmp, _tmp$1, exp, expBiased, f, flt, lower, mant, neg, upper, x, x$1, x$2, x$3, x$4;
lower = new extFloat.ptr(new $Uint64(0, 0), 0, false);
upper = new extFloat.ptr(new $Uint64(0, 0), 0, false);
f = this;
f.mant = mant;
f.exp = exp - ((flt.mantbits >> 0)) >> 0;
f.neg = neg;
if (f.exp <= 0 && (x = $shiftLeft64(($shiftRightUint64(mant, ((-f.exp >>> 0)))), ((-f.exp >>> 0))), (mant.$high === x.$high && mant.$low === x.$low))) {
f.mant = $shiftRightUint64(f.mant, (((-f.exp >>> 0))));
f.exp = 0;
_tmp = $clone(f, extFloat);
_tmp$1 = $clone(f, extFloat);
extFloat.copy(lower, _tmp);
extFloat.copy(upper, _tmp$1);
return [lower, upper];
}
expBiased = exp - flt.bias >> 0;
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));
if (!((x$2 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), (mant.$high === x$2.$high && mant.$low === x$2.$low))) || (expBiased === 1)) {
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));
} else {
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));
}
return [lower, upper];
};
extFloat.prototype.AssignComputeBounds = function(mant, exp, neg, flt) { return this.$val.AssignComputeBounds(mant, exp, neg, flt); };
extFloat.ptr.prototype.Normalize = function() {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, exp, f, mant, shift, x, x$1, x$2, x$3, x$4, x$5;
shift = 0;
f = this;
_tmp = f.mant;
_tmp$1 = f.exp;
mant = _tmp;
exp = _tmp$1;
if ((mant.$high === 0 && mant.$low === 0)) {
shift = 0;
return shift;
}
if ((x = $shiftRightUint64(mant, 32), (x.$high === 0 && x.$low === 0))) {
mant = $shiftLeft64(mant, (32));
exp = exp - (32) >> 0;
}
if ((x$1 = $shiftRightUint64(mant, 48), (x$1.$high === 0 && x$1.$low === 0))) {
mant = $shiftLeft64(mant, (16));
exp = exp - (16) >> 0;
}
if ((x$2 = $shiftRightUint64(mant, 56), (x$2.$high === 0 && x$2.$low === 0))) {
mant = $shiftLeft64(mant, (8));
exp = exp - (8) >> 0;
}
if ((x$3 = $shiftRightUint64(mant, 60), (x$3.$high === 0 && x$3.$low === 0))) {
mant = $shiftLeft64(mant, (4));
exp = exp - (4) >> 0;
}
if ((x$4 = $shiftRightUint64(mant, 62), (x$4.$high === 0 && x$4.$low === 0))) {
mant = $shiftLeft64(mant, (2));
exp = exp - (2) >> 0;
}
if ((x$5 = $shiftRightUint64(mant, 63), (x$5.$high === 0 && x$5.$low === 0))) {
mant = $shiftLeft64(mant, (1));
exp = exp - (1) >> 0;
}
shift = (((f.exp - exp >> 0) >>> 0));
_tmp$2 = mant;
_tmp$3 = exp;
f.mant = _tmp$2;
f.exp = _tmp$3;
return shift;
};
extFloat.prototype.Normalize = function() { return this.$val.Normalize(); };
extFloat.ptr.prototype.Multiply = function(g) {
var $ptr, _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;
f = this;
_tmp = $shiftRightUint64(f.mant, 32);
_tmp$1 = (new $Uint64(0, ((f.mant.$low >>> 0))));
fhi = _tmp;
flo = _tmp$1;
_tmp$2 = $shiftRightUint64(g.mant, 32);
_tmp$3 = (new $Uint64(0, ((g.mant.$low >>> 0))));
ghi = _tmp$2;
glo = _tmp$3;
cross1 = $mul64(fhi, glo);
cross2 = $mul64(flo, ghi);
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));
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));
rem = (x$8 = new $Uint64(0, 2147483648), new $Uint64(rem.$high + x$8.$high, rem.$low + x$8.$low));
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));
f.exp = (f.exp + g.exp >> 0) + 64 >> 0;
};
extFloat.prototype.Multiply = function(g) { return this.$val.Multiply(g); };
extFloat.ptr.prototype.AssignDecimal = function(mantissa, exp10, neg, trunc, flt) {
var $ptr, _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;
ok = false;
f = this;
errors$1 = 0;
if (trunc) {
errors$1 = errors$1 + (4) >> 0;
}
f.mant = mantissa;
f.exp = 0;
f.neg = neg;
i = (_q = ((exp10 - -348 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
if (exp10 < -348 || i >= 87) {
ok = false;
return ok;
}
adjExp = (_r = ((exp10 - -348 >> 0)) % 8, _r === _r ? _r : $throwRuntimeError("integer divide by zero"));
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)))) {
f.mant = $mul64(f.mant, (((adjExp < 0 || adjExp >= uint64pow10.length) ? ($throwRuntimeError("index out of range"), undefined) : uint64pow10[adjExp])));
f.Normalize();
} else {
f.Normalize();
f.Multiply($clone(((adjExp < 0 || adjExp >= smallPowersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : smallPowersOfTen[adjExp]), extFloat));
errors$1 = errors$1 + (4) >> 0;
}
f.Multiply($clone(((i < 0 || i >= powersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : powersOfTen[i]), extFloat));
if (errors$1 > 0) {
errors$1 = errors$1 + (1) >> 0;
}
errors$1 = errors$1 + (4) >> 0;
shift = f.Normalize();
errors$1 = (y = (shift), y < 32 ? (errors$1 << y) : 0) >> 0;
denormalExp = flt.bias - 63 >> 0;
extrabits = 0;
if (f.exp <= denormalExp) {
extrabits = ((63 - flt.mantbits >>> 0) + 1 >>> 0) + (((denormalExp - f.exp >> 0) >>> 0)) >>> 0;
} else {
extrabits = 63 - flt.mantbits >>> 0;
}
halfway = $shiftLeft64(new $Uint64(0, 1), ((extrabits - 1 >>> 0)));
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));
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)))) {
ok = false;
return ok;
}
ok = true;
return ok;
};
extFloat.prototype.AssignDecimal = function(mantissa, exp10, neg, trunc, flt) { return this.$val.AssignDecimal(mantissa, exp10, neg, trunc, flt); };
extFloat.ptr.prototype.frexp10 = function() {
var $ptr, _q, _q$1, _tmp, _tmp$1, approxExp10, exp, exp10, f, i, index;
exp10 = 0;
index = 0;
f = this;
approxExp10 = (_q = ($imul(((-46 - f.exp >> 0)), 28)) / 93, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
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"));
Loop:
while (true) {
exp = (f.exp + ((i < 0 || i >= powersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : powersOfTen[i]).exp >> 0) + 64 >> 0;
if (exp < -60) {
i = i + (1) >> 0;
} else if (exp > -32) {
i = i - (1) >> 0;
} else {
break Loop;
}
}
f.Multiply($clone(((i < 0 || i >= powersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : powersOfTen[i]), extFloat));
_tmp = -((-348 + ($imul(i, 8)) >> 0));
_tmp$1 = i;
exp10 = _tmp;
index = _tmp$1;
return [exp10, index];
};
extFloat.prototype.frexp10 = function() { return this.$val.frexp10(); };
frexp10Many = function(a, b, c) {
var $ptr, _tuple, a, b, c, exp10, i;
exp10 = 0;
_tuple = c.frexp10();
exp10 = _tuple[0];
i = _tuple[1];
a.Multiply($clone(((i < 0 || i >= powersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : powersOfTen[i]), extFloat));
b.Multiply($clone(((i < 0 || i >= powersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : powersOfTen[i]), extFloat));
return exp10;
};
extFloat.ptr.prototype.FixedDecimal = function(d, n) {
var $CE$B5, $ptr, _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;
f = this;
if ((x = f.mant, (x.$high === 0 && x.$low === 0))) {
d.nd = 0;
d.dp = 0;
d.neg = f.neg;
return true;
}
if (n === 0) {
$panic(new $String("strconv: internal error: extFloat.FixedDecimal called with n == 0"));
}
f.Normalize();
_tuple = f.frexp10();
exp10 = _tuple[0];
shift = ((-f.exp >>> 0));
integer = (($shiftRightUint64(f.mant, shift).$low >>> 0));
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));
$CE$B5 = new $Uint64(0, 1);
needed = n;
integerDigits = 0;
pow10 = new $Uint64(0, 1);
_tmp = 0;
_tmp$1 = new $Uint64(0, 1);
i = _tmp;
pow = _tmp$1;
while (true) {
if (!(i < 20)) { break; }
if ((x$3 = (new $Uint64(0, integer)), (pow.$high > x$3.$high || (pow.$high === x$3.$high && pow.$low > x$3.$low)))) {
integerDigits = i;
break;
}
pow = $mul64(pow, (new $Uint64(0, 10)));
i = i + (1) >> 0;
}
rest = integer;
if (integerDigits > needed) {
pow10 = (x$4 = integerDigits - needed >> 0, ((x$4 < 0 || x$4 >= uint64pow10.length) ? ($throwRuntimeError("index out of range"), undefined) : uint64pow10[x$4]));
integer = (_q = integer / (((pow10.$low >>> 0))), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
rest = rest - (($imul(integer, ((pow10.$low >>> 0))) >>> 0)) >>> 0;
} else {
rest = 0;
}
buf = arrayType$2.zero();
pos = 32;
v = integer;
while (true) {
if (!(v > 0)) { break; }
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"));
v = v - (($imul(10, v1) >>> 0)) >>> 0;
pos = pos - (1) >> 0;
((pos < 0 || pos >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[pos] = (((v + 48 >>> 0) << 24 >>> 24)));
v = v1;
}
i$1 = pos;
while (true) {
if (!(i$1 < 32)) { break; }
(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])));
i$1 = i$1 + (1) >> 0;
}
nd = 32 - pos >> 0;
d.nd = nd;
d.dp = integerDigits + exp10 >> 0;
needed = needed - (nd) >> 0;
if (needed > 0) {
if (!((rest === 0)) || !((pow10.$high === 0 && pow10.$low === 1))) {
$panic(new $String("strconv: internal error, rest != 0 but needed > 0"));
}
while (true) {
if (!(needed > 0)) { break; }
fraction = $mul64(fraction, (new $Uint64(0, 10)));
$CE$B5 = $mul64($CE$B5, (new $Uint64(0, 10)));
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)))) {
return false;
}
digit = $shiftRightUint64(fraction, shift);
(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))));
fraction = (x$10 = $shiftLeft64(digit, shift), new $Uint64(fraction.$high - x$10.$high, fraction.$low - x$10.$low));
nd = nd + (1) >> 0;
needed = needed - (1) >> 0;
}
d.nd = nd;
}
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);
if (!ok) {
return false;
}
i$2 = d.nd - 1 >> 0;
while (true) {
if (!(i$2 >= 0)) { break; }
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))) {
d.nd = i$2 + 1 >> 0;
break;
}
i$2 = i$2 - (1) >> 0;
}
return true;
};
extFloat.prototype.FixedDecimal = function(d, n) { return this.$val.FixedDecimal(d, n); };
adjustLastDigitFixed = function(d, num, den, shift, $CE$B5) {
var $CE$B5, $ptr, 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;
if ((x = $shiftLeft64(den, shift), (num.$high > x.$high || (num.$high === x.$high && num.$low > x.$low)))) {
$panic(new $String("strconv: num > den<<shift in adjustLastDigitFixed"));
}
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)))) {
$panic(new $String("strconv: \xCE\xB5 > (den<<shift)/2"));
}
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)))) {
return true;
}
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)))) {
i = d.nd - 1 >> 0;
while (true) {
if (!(i >= 0)) { break; }
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) {
d.nd = d.nd - (1) >> 0;
} else {
break;
}
i = i - (1) >> 0;
}
if (i < 0) {
(x$8 = d.d, (0 >= x$8.$length ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + 0] = 49));
d.nd = 1;
d.dp = d.dp + (1) >> 0;
} else {
(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)));
}
return true;
}
return false;
};
extFloat.ptr.prototype.ShortestDecimal = function(d, lower, upper) {
var $ptr, _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;
f = this;
if ((x = f.mant, (x.$high === 0 && x.$low === 0))) {
d.nd = 0;
d.dp = 0;
d.neg = f.neg;
return true;
}
if ((f.exp === 0) && $equal(lower, f, extFloat) && $equal(lower, upper, extFloat)) {
buf = arrayType$1.zero();
n = 23;
v = f.mant;
while (true) {
if (!((v.$high > 0 || (v.$high === 0 && v.$low > 0)))) { break; }
v1 = $div64(v, new $Uint64(0, 10), false);
v = (x$1 = $mul64(new $Uint64(0, 10), v1), new $Uint64(v.$high - x$1.$high, v.$low - x$1.$low));
((n < 0 || n >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[n] = ((new $Uint64(v.$high + 0, v.$low + 48).$low << 24 >>> 24)));
n = n - (1) >> 0;
v = v1;
}
nd = (24 - n >> 0) - 1 >> 0;
i = 0;
while (true) {
if (!(i < nd)) { break; }
(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]))));
i = i + (1) >> 0;
}
_tmp = nd;
_tmp$1 = nd;
d.nd = _tmp;
d.dp = _tmp$1;
while (true) {
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; }
d.nd = d.nd - (1) >> 0;
}
if (d.nd === 0) {
d.dp = 0;
}
d.neg = f.neg;
return true;
}
upper.Normalize();
if (f.exp > upper.exp) {
f.mant = $shiftLeft64(f.mant, ((((f.exp - upper.exp >> 0) >>> 0))));
f.exp = upper.exp;
}
if (lower.exp > upper.exp) {
lower.mant = $shiftLeft64(lower.mant, ((((lower.exp - upper.exp >> 0) >>> 0))));
lower.exp = upper.exp;
}
exp10 = frexp10Many(lower, f, upper);
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));
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));
shift = ((-upper.exp >>> 0));
integer = (($shiftRightUint64(upper.mant, shift).$low >>> 0));
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));
allowance = (x$12 = upper.mant, x$13 = lower.mant, new $Uint64(x$12.$high - x$13.$high, x$12.$low - x$13.$low));
targetDiff = (x$14 = upper.mant, x$15 = f.mant, new $Uint64(x$14.$high - x$15.$high, x$14.$low - x$15.$low));
integerDigits = 0;
_tmp$2 = 0;
_tmp$3 = new $Uint64(0, 1);
i$1 = _tmp$2;
pow = _tmp$3;
while (true) {
if (!(i$1 < 20)) { break; }
if ((x$16 = (new $Uint64(0, integer)), (pow.$high > x$16.$high || (pow.$high === x$16.$high && pow.$low > x$16.$low)))) {
integerDigits = i$1;
break;
}
pow = $mul64(pow, (new $Uint64(0, 10)));
i$1 = i$1 + (1) >> 0;
}
i$2 = 0;
while (true) {
if (!(i$2 < integerDigits)) { break; }
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]));
digit = (_q = integer / ((pow$1.$low >>> 0)), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
(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))));
integer = integer - (($imul(digit, ((pow$1.$low >>> 0))) >>> 0)) >>> 0;
currentDiff = (x$19 = $shiftLeft64((new $Uint64(0, integer)), shift), new $Uint64(x$19.$high + fraction.$high, x$19.$low + fraction.$low));
if ((currentDiff.$high < allowance.$high || (currentDiff.$high === allowance.$high && currentDiff.$low < allowance.$low))) {
d.nd = i$2 + 1 >> 0;
d.dp = integerDigits + exp10 >> 0;
d.neg = f.neg;
return adjustLastDigit(d, currentDiff, targetDiff, allowance, $shiftLeft64(pow$1, shift), new $Uint64(0, 2));
}
i$2 = i$2 + (1) >> 0;
}
d.nd = integerDigits;
d.dp = d.nd + exp10 >> 0;
d.neg = f.neg;
digit$1 = 0;
multiplier = new $Uint64(0, 1);
while (true) {
fraction = $mul64(fraction, (new $Uint64(0, 10)));
multiplier = $mul64(multiplier, (new $Uint64(0, 10)));
digit$1 = (($shiftRightUint64(fraction, shift).$low >> 0));
(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))));
d.nd = d.nd + (1) >> 0;
fraction = (x$22 = $shiftLeft64((new $Uint64(0, digit$1)), shift), new $Uint64(fraction.$high - x$22.$high, fraction.$low - x$22.$low));
if ((x$23 = $mul64(allowance, multiplier), (fraction.$high < x$23.$high || (fraction.$high === x$23.$high && fraction.$low < x$23.$low)))) {
return adjustLastDigit(d, fraction, $mul64(targetDiff, multiplier), $mul64(allowance, multiplier), $shiftLeft64(new $Uint64(0, 1), shift), $mul64(multiplier, new $Uint64(0, 2)));
}
}
};
extFloat.prototype.ShortestDecimal = function(d, lower, upper) { return this.$val.ShortestDecimal(d, lower, upper); };
adjustLastDigit = function(d, currentDiff, targetDiff, maxDiff, ulpDecimal, ulpBinary) {
var $ptr, _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;
if ((x = $mul64(new $Uint64(0, 2), ulpBinary), (ulpDecimal.$high < x.$high || (ulpDecimal.$high === x.$high && ulpDecimal.$low < x.$low)))) {
return false;
}
while (true) {
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; }
_index = d.nd - 1 >> 0;
(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)));
currentDiff = (x$6 = ulpDecimal, new $Uint64(currentDiff.$high + x$6.$high, currentDiff.$low + x$6.$low));
}
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)))) {
return false;
}
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)))) {
return false;
}
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)) {
d.nd = 0;
d.dp = 0;
}
return true;
};
AppendFloat = function(dst, f, fmt, prec, bitSize) {
var $ptr, bitSize, dst, f, fmt, prec;
return genericFtoa(dst, f, fmt, prec, bitSize);
};
$pkg.AppendFloat = AppendFloat;
genericFtoa = function(dst, val, fmt, prec, bitSize) {
var $ptr, _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;
bits = new $Uint64(0, 0);
flt = ptrType$1.nil;
_1 = bitSize;
if (_1 === (32)) {
bits = (new $Uint64(0, math.Float32bits(($fround(val)))));
flt = float32info;
} else if (_1 === (64)) {
bits = math.Float64bits(val);
flt = float64info;
} else {
$panic(new $String("strconv: illegal AppendFloat/FormatFloat bitSize"));
}
neg = !((x = $shiftRightUint64(bits, ((flt.expbits + flt.mantbits >>> 0))), (x.$high === 0 && x.$low === 0)));
exp = (($shiftRightUint64(bits, flt.mantbits).$low >> 0)) & ((((y = flt.expbits, y < 32 ? (1 << y) : 0) >> 0) - 1 >> 0));
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));
_2 = exp;
if (_2 === ((((y$1 = flt.expbits, y$1 < 32 ? (1 << y$1) : 0) >> 0) - 1 >> 0))) {
s = "";
if (!((mant.$high === 0 && mant.$low === 0))) {
s = "NaN";
} else if (neg) {
s = "-Inf";
} else {
s = "+Inf";
}
return $appendSlice(dst, s);
} else if (_2 === (0)) {
exp = exp + (1) >> 0;
} else {
mant = (x$3 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), new $Uint64(mant.$high | x$3.$high, (mant.$low | x$3.$low) >>> 0));
}
exp = exp + (flt.bias) >> 0;
if (fmt === 98) {
return fmtB(dst, neg, mant, exp, flt);
}
if (!optimize) {
return bigFtoa(dst, prec, fmt, neg, mant, exp, flt);
}
digs = new decimalSlice.ptr(sliceType$6.nil, 0, 0, false);
ok = false;
shortest = prec < 0;
if (shortest) {
f = new extFloat.ptr(new $Uint64(0, 0), 0, false);
_tuple = f.AssignComputeBounds(mant, exp, neg, flt);
lower = $clone(_tuple[0], extFloat);
upper = $clone(_tuple[1], extFloat);
buf = arrayType$2.zero();
digs.d = new sliceType$6(buf);
ok = f.ShortestDecimal(digs, lower, upper);
if (!ok) {
return bigFtoa(dst, prec, fmt, neg, mant, exp, flt);
}
_3 = fmt;
if ((_3 === (101)) || (_3 === (69))) {
prec = max(digs.nd - 1 >> 0, 0);
} else if (_3 === (102)) {
prec = max(digs.nd - digs.dp >> 0, 0);
} else if ((_3 === (103)) || (_3 === (71))) {
prec = digs.nd;
}
} else if (!((fmt === 102))) {
digits = prec;
_4 = fmt;
if ((_4 === (101)) || (_4 === (69))) {
digits = digits + (1) >> 0;
} else if ((_4 === (103)) || (_4 === (71))) {
if (prec === 0) {
prec = 1;
}
digits = prec;
}
if (digits <= 15) {
buf$1 = arrayType$1.zero();
digs.d = new sliceType$6(buf$1);
f$1 = new extFloat.ptr(mant, exp - ((flt.mantbits >> 0)) >> 0, neg);
ok = f$1.FixedDecimal(digs, digits);
}
}
if (!ok) {
return bigFtoa(dst, prec, fmt, neg, mant, exp, flt);
}
return formatDigits(dst, shortest, neg, $clone(digs, decimalSlice), prec, fmt);
};
bigFtoa = function(dst, prec, fmt, neg, mant, exp, flt) {
var $ptr, _1, _2, d, digs, dst, exp, flt, fmt, mant, neg, prec, shortest;
d = new decimal.ptr(arrayType.zero(), 0, 0, false, false);
d.Assign(mant);
d.Shift(exp - ((flt.mantbits >> 0)) >> 0);
digs = new decimalSlice.ptr(sliceType$6.nil, 0, 0, false);
shortest = prec < 0;
if (shortest) {
roundShortest(d, mant, exp, flt);
decimalSlice.copy(digs, new decimalSlice.ptr(new sliceType$6(d.d), d.nd, d.dp, false));
_1 = fmt;
if ((_1 === (101)) || (_1 === (69))) {
prec = digs.nd - 1 >> 0;
} else if (_1 === (102)) {
prec = max(digs.nd - digs.dp >> 0, 0);
} else if ((_1 === (103)) || (_1 === (71))) {
prec = digs.nd;
}
} else {
_2 = fmt;
if ((_2 === (101)) || (_2 === (69))) {
d.Round(prec + 1 >> 0);
} else if (_2 === (102)) {
d.Round(d.dp + prec >> 0);
} else if ((_2 === (103)) || (_2 === (71))) {
if (prec === 0) {
prec = 1;
}
d.Round(prec);
}
decimalSlice.copy(digs, new decimalSlice.ptr(new sliceType$6(d.d), d.nd, d.dp, false));
}
return formatDigits(dst, shortest, neg, $clone(digs, decimalSlice), prec, fmt);
};
formatDigits = function(dst, shortest, neg, digs, prec, fmt) {
var $ptr, _1, digs, dst, eprec, exp, fmt, neg, prec, shortest;
_1 = fmt;
if ((_1 === (101)) || (_1 === (69))) {
return fmtE(dst, neg, $clone(digs, decimalSlice), prec, fmt);
} else if (_1 === (102)) {
return fmtF(dst, neg, $clone(digs, decimalSlice), prec);
} else if ((_1 === (103)) || (_1 === (71))) {
eprec = prec;
if (eprec > digs.nd && digs.nd >= digs.dp) {
eprec = digs.nd;
}
if (shortest) {
eprec = 6;
}
exp = digs.dp - 1 >> 0;
if (exp < -4 || exp >= eprec) {
if (prec > digs.nd) {
prec = digs.nd;
}
return fmtE(dst, neg, $clone(digs, decimalSlice), prec - 1 >> 0, (fmt + 101 << 24 >>> 24) - 103 << 24 >>> 24);
}
if (prec > digs.dp) {
prec = digs.nd;
}
return fmtF(dst, neg, $clone(digs, decimalSlice), max(prec - digs.dp >> 0, 0));
}
return $append(dst, 37, fmt);
};
roundShortest = function(d, mant, exp, flt) {
var $ptr, 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;
if ((mant.$high === 0 && mant.$low === 0)) {
d.nd = 0;
return;
}
minexp = flt.bias + 1 >> 0;
if (exp > minexp && ($imul(332, ((d.dp - d.nd >> 0)))) >= ($imul(100, ((exp - ((flt.mantbits >> 0)) >> 0))))) {
return;
}
upper = new decimal.ptr(arrayType.zero(), 0, 0, false, false);
upper.Assign((x = $mul64(mant, new $Uint64(0, 2)), new $Uint64(x.$high + 0, x.$low + 1)));
upper.Shift((exp - ((flt.mantbits >> 0)) >> 0) - 1 >> 0);
mantlo = new $Uint64(0, 0);
explo = 0;
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)) {
mantlo = new $Uint64(mant.$high - 0, mant.$low - 1);
explo = exp;
} else {
mantlo = (x$2 = $mul64(mant, new $Uint64(0, 2)), new $Uint64(x$2.$high - 0, x$2.$low - 1));
explo = exp - 1 >> 0;
}
lower = new decimal.ptr(arrayType.zero(), 0, 0, false, false);
lower.Assign((x$3 = $mul64(mantlo, new $Uint64(0, 2)), new $Uint64(x$3.$high + 0, x$3.$low + 1)));
lower.Shift((explo - ((flt.mantbits >> 0)) >> 0) - 1 >> 0);
inclusive = (x$4 = $div64(mant, new $Uint64(0, 2), true), (x$4.$high === 0 && x$4.$low === 0));
i = 0;
while (true) {
if (!(i < d.nd)) { break; }
l = 48;
if (i < lower.nd) {
l = (x$5 = lower.d, ((i < 0 || i >= x$5.length) ? ($throwRuntimeError("index out of range"), undefined) : x$5[i]));
}
m = (x$6 = d.d, ((i < 0 || i >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[i]));
u = 48;
if (i < upper.nd) {
u = (x$7 = upper.d, ((i < 0 || i >= x$7.length) ? ($throwRuntimeError("index out of range"), undefined) : x$7[i]));
}
okdown = !((l === m)) || inclusive && ((i + 1 >> 0) === lower.nd);
okup = !((m === u)) && (inclusive || (m + 1 << 24 >>> 24) < u || (i + 1 >> 0) < upper.nd);
if (okdown && okup) {
d.Round(i + 1 >> 0);
return;
} else if (okdown) {
d.RoundDown(i + 1 >> 0);
return;
} else if (okup) {
d.RoundUp(i + 1 >> 0);
return;
}
i = i + (1) >> 0;
}
};
fmtE = function(dst, neg, d, prec, fmt) {
var $ptr, _q, _q$1, _q$2, _r, _r$1, _r$2, ch, d, dst, exp, fmt, i, m, neg, prec, x;
if (neg) {
dst = $append(dst, 45);
}
ch = 48;
if (!((d.nd === 0))) {
ch = (x = d.d, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]));
}
dst = $append(dst, ch);
if (prec > 0) {
dst = $append(dst, 46);
i = 1;
m = min(d.nd, prec + 1 >> 0);
if (i < m) {
dst = $appendSlice(dst, $subslice(d.d, i, m));
i = m;
}
while (true) {
if (!(i <= prec)) { break; }
dst = $append(dst, 48);
i = i + (1) >> 0;
}
}
dst = $append(dst, fmt);
exp = d.dp - 1 >> 0;
if (d.nd === 0) {
exp = 0;
}
if (exp < 0) {
ch = 45;
exp = -exp;
} else {
ch = 43;
}
dst = $append(dst, ch);
if (exp < 10) {
dst = $append(dst, 48, ((exp << 24 >>> 24)) + 48 << 24 >>> 24);
} else if (exp < 100) {
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);
} else {
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);
}
return dst;
};
fmtF = function(dst, neg, d, prec) {
var $ptr, ch, d, dst, i, j, m, neg, prec, x;
if (neg) {
dst = $append(dst, 45);
}
if (d.dp > 0) {
m = min(d.nd, d.dp);
dst = $appendSlice(dst, $subslice(d.d, 0, m));
while (true) {
if (!(m < d.dp)) { break; }
dst = $append(dst, 48);
m = m + (1) >> 0;
}
} else {
dst = $append(dst, 48);
}
if (prec > 0) {
dst = $append(dst, 46);
i = 0;
while (true) {
if (!(i < prec)) { break; }
ch = 48;
j = d.dp + i >> 0;
if (0 <= j && j < d.nd) {
ch = (x = d.d, ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j]));
}
dst = $append(dst, ch);
i = i + (1) >> 0;
}
}
return dst;
};
fmtB = function(dst, neg, mant, exp, flt) {
var $ptr, _tuple, _tuple$1, dst, exp, flt, mant, neg;
if (neg) {
dst = $append(dst, 45);
}
_tuple = formatBits(dst, mant, 10, false, true);
dst = _tuple[0];
dst = $append(dst, 112);
exp = exp - (((flt.mantbits >> 0))) >> 0;
if (exp >= 0) {
dst = $append(dst, 43);
}
_tuple$1 = formatBits(dst, (new $Uint64(0, exp)), 10, exp < 0, true);
dst = _tuple$1[0];
return dst;
};
min = function(a, b) {
var $ptr, a, b;
if (a < b) {
return a;
}
return b;
};
max = function(a, b) {
var $ptr, a, b;
if (a > b) {
return a;
}
return b;
};
FormatInt = function(i, base) {
var $ptr, _tuple, base, i, s;
_tuple = formatBits(sliceType$6.nil, (new $Uint64(i.$high, i.$low)), base, (i.$high < 0 || (i.$high === 0 && i.$low < 0)), false);
s = _tuple[1];
return s;
};
$pkg.FormatInt = FormatInt;
Itoa = function(i) {
var $ptr, i;
return FormatInt((new $Int64(0, i)), 10);
};
$pkg.Itoa = Itoa;
AppendInt = function(dst, i, base) {
var $ptr, _tuple, base, dst, i;
_tuple = formatBits(dst, (new $Uint64(i.$high, i.$low)), base, (i.$high < 0 || (i.$high === 0 && i.$low < 0)), true);
dst = _tuple[0];
return dst;
};
$pkg.AppendInt = AppendInt;
formatBits = function(dst, u, base, neg, append_) {
var $ptr, _q, _q$1, a, append_, b, b$1, base, d, dst, i, j, m, neg, q, q$1, q$2, qs, s, s$1, u, us, us$1, x, x$1;
d = sliceType$6.nil;
s = "";
if (base < 2 || base > 36) {
$panic(new $String("strconv: illegal AppendInt/FormatInt base"));
}
a = arrayType$3.zero();
i = 65;
if (neg) {
u = new $Uint64(-u.$high, -u.$low);
}
if (base === 10) {
if (true) {
while (true) {
if (!((u.$high > 0 || (u.$high === 0 && u.$low > 4294967295)))) { break; }
q = $div64(u, new $Uint64(0, 1000000000), false);
us = (((x = $mul64(q, new $Uint64(0, 1000000000)), new $Uint64(u.$high - x.$high, u.$low - x.$low)).$low >>> 0));
j = 9;
while (true) {
if (!(j > 0)) { break; }
i = i - (1) >> 0;
qs = (_q = us / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = ((((us - ($imul(qs, 10) >>> 0) >>> 0) + 48 >>> 0) << 24 >>> 24)));
us = qs;
j = j - (1) >> 0;
}
u = q;
}
}
us$1 = ((u.$low >>> 0));
while (true) {
if (!(us$1 >= 10)) { break; }
i = i - (1) >> 0;
q$1 = (_q$1 = us$1 / 10, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero"));
((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = ((((us$1 - ($imul(q$1, 10) >>> 0) >>> 0) + 48 >>> 0) << 24 >>> 24)));
us$1 = q$1;
}
i = i - (1) >> 0;
((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = (((us$1 + 48 >>> 0) << 24 >>> 24)));
} else {
s$1 = ((base < 0 || base >= shifts.length) ? ($throwRuntimeError("index out of range"), undefined) : shifts[base]);
if (s$1 > 0) {
b = (new $Uint64(0, base));
m = ((b.$low >>> 0)) - 1 >>> 0;
while (true) {
if (!((u.$high > b.$high || (u.$high === b.$high && u.$low >= b.$low)))) { break; }
i = i - (1) >> 0;
((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt(((((u.$low >>> 0)) & m) >>> 0)));
u = $shiftRightUint64(u, (s$1));
}
i = i - (1) >> 0;
((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt(((u.$low >>> 0))));
} else {
b$1 = (new $Uint64(0, base));
while (true) {
if (!((u.$high > b$1.$high || (u.$high === b$1.$high && u.$low >= b$1.$low)))) { break; }
i = i - (1) >> 0;
q$2 = $div64(u, b$1, false);
((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt((((x$1 = $mul64(q$2, b$1), new $Uint64(u.$high - x$1.$high, u.$low - x$1.$low)).$low >>> 0))));
u = q$2;
}
i = i - (1) >> 0;
((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt(((u.$low >>> 0))));
}
}
if (neg) {
i = i - (1) >> 0;
((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = 45);
}
if (append_) {
d = $appendSlice(dst, $subslice(new sliceType$6(a), i));
return [d, s];
}
s = ($bytesToString($subslice(new sliceType$6(a), i)));
return [d, s];
};
quoteWith = function(s, quote, ASCIIonly, graphicOnly) {
var $ptr, ASCIIonly, _q, graphicOnly, quote, s;
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)));
};
appendQuotedWith = function(buf, s, quote, ASCIIonly, graphicOnly) {
var $ptr, ASCIIonly, _tuple, buf, graphicOnly, quote, r, s, width;
buf = $append(buf, quote);
width = 0;
while (true) {
if (!(s.length > 0)) { break; }
r = ((s.charCodeAt(0) >> 0));
width = 1;
if (r >= 128) {
_tuple = utf8.DecodeRuneInString(s);
r = _tuple[0];
width = _tuple[1];
}
if ((width === 1) && (r === 65533)) {
buf = $appendSlice(buf, "\\x");
buf = $append(buf, "0123456789abcdef".charCodeAt((s.charCodeAt(0) >>> 4 << 24 >>> 24)));
buf = $append(buf, "0123456789abcdef".charCodeAt(((s.charCodeAt(0) & 15) >>> 0)));
s = $substring(s, width);
continue;
}
buf = appendEscapedRune(buf, r, width, quote, ASCIIonly, graphicOnly);
s = $substring(s, width);
}
buf = $append(buf, quote);
return buf;
};
appendQuotedRuneWith = function(buf, r, quote, ASCIIonly, graphicOnly) {
var $ptr, ASCIIonly, buf, graphicOnly, quote, r;
buf = $append(buf, quote);
if (!utf8.ValidRune(r)) {
r = 65533;
}
buf = appendEscapedRune(buf, r, utf8.RuneLen(r), quote, ASCIIonly, graphicOnly);
buf = $append(buf, quote);
return buf;
};
appendEscapedRune = function(buf, r, width, quote, ASCIIonly, graphicOnly) {
var $ptr, ASCIIonly, _1, buf, graphicOnly, n, quote, r, runeTmp, s, s$1, width;
runeTmp = arrayType$4.zero();
if ((r === ((quote >> 0))) || (r === 92)) {
buf = $append(buf, 92);
buf = $append(buf, ((r << 24 >>> 24)));
return buf;
}
if (ASCIIonly) {
if (r < 128 && IsPrint(r)) {
buf = $append(buf, ((r << 24 >>> 24)));
return buf;
}
} else if (IsPrint(r) || graphicOnly && isInGraphicList(r)) {
n = utf8.EncodeRune(new sliceType$6(runeTmp), r);
buf = $appendSlice(buf, $subslice(new sliceType$6(runeTmp), 0, n));
return buf;
}
_1 = r;
if (_1 === (7)) {
buf = $appendSlice(buf, "\\a");
} else if (_1 === (8)) {
buf = $appendSlice(buf, "\\b");
} else if (_1 === (12)) {
buf = $appendSlice(buf, "\\f");
} else if (_1 === (10)) {
buf = $appendSlice(buf, "\\n");
} else if (_1 === (13)) {
buf = $appendSlice(buf, "\\r");
} else if (_1 === (9)) {
buf = $appendSlice(buf, "\\t");
} else if (_1 === (11)) {
buf = $appendSlice(buf, "\\v");
} else {
if (r < 32) {
buf = $appendSlice(buf, "\\x");
buf = $append(buf, "0123456789abcdef".charCodeAt((((r << 24 >>> 24)) >>> 4 << 24 >>> 24)));
buf = $append(buf, "0123456789abcdef".charCodeAt(((((r << 24 >>> 24)) & 15) >>> 0)));
} else if (r > 1114111) {
r = 65533;
buf = $appendSlice(buf, "\\u");
s = 12;
while (true) {
if (!(s >= 0)) { break; }
buf = $append(buf, "0123456789abcdef".charCodeAt((((r >> $min(((s >>> 0)), 31)) >> 0) & 15)));
s = s - (4) >> 0;
}
} else if (r < 65536) {
buf = $appendSlice(buf, "\\u");
s = 12;
while (true) {
if (!(s >= 0)) { break; }
buf = $append(buf, "0123456789abcdef".charCodeAt((((r >> $min(((s >>> 0)), 31)) >> 0) & 15)));
s = s - (4) >> 0;
}
} else {
buf = $appendSlice(buf, "\\U");
s$1 = 28;
while (true) {
if (!(s$1 >= 0)) { break; }
buf = $append(buf, "0123456789abcdef".charCodeAt((((r >> $min(((s$1 >>> 0)), 31)) >> 0) & 15)));
s$1 = s$1 - (4) >> 0;
}
}
}
return buf;
};
Quote = function(s) {
var $ptr, s;
return quoteWith(s, 34, false, false);
};
$pkg.Quote = Quote;
AppendQuote = function(dst, s) {
var $ptr, dst, s;
return appendQuotedWith(dst, s, 34, false, false);
};
$pkg.AppendQuote = AppendQuote;
AppendQuoteToASCII = function(dst, s) {
var $ptr, dst, s;
return appendQuotedWith(dst, s, 34, true, false);
};
$pkg.AppendQuoteToASCII = AppendQuoteToASCII;
AppendQuoteRune = function(dst, r) {
var $ptr, dst, r;
return appendQuotedRuneWith(dst, r, 39, false, false);
};
$pkg.AppendQuoteRune = AppendQuoteRune;
AppendQuoteRuneToASCII = function(dst, r) {
var $ptr, dst, r;
return appendQuotedRuneWith(dst, r, 39, true, false);
};
$pkg.AppendQuoteRuneToASCII = AppendQuoteRuneToASCII;
CanBackquote = function(s) {
var $ptr, _tuple, r, s, wid;
while (true) {
if (!(s.length > 0)) { break; }
_tuple = utf8.DecodeRuneInString(s);
r = _tuple[0];
wid = _tuple[1];
s = $substring(s, wid);
if (wid > 1) {
if (r === 65279) {
return false;
}
continue;
}
if (r === 65533) {
return false;
}
if ((r < 32 && !((r === 9))) || (r === 96) || (r === 127)) {
return false;
}
}
return true;
};
$pkg.CanBackquote = CanBackquote;
unhex = function(b) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, b, c, ok, v;
v = 0;
ok = false;
c = ((b >> 0));
if (48 <= c && c <= 57) {
_tmp = c - 48 >> 0;
_tmp$1 = true;
v = _tmp;
ok = _tmp$1;
return [v, ok];
} else if (97 <= c && c <= 102) {
_tmp$2 = (c - 97 >> 0) + 10 >> 0;
_tmp$3 = true;
v = _tmp$2;
ok = _tmp$3;
return [v, ok];
} else if (65 <= c && c <= 70) {
_tmp$4 = (c - 65 >> 0) + 10 >> 0;
_tmp$5 = true;
v = _tmp$4;
ok = _tmp$5;
return [v, ok];
}
return [v, ok];
};
UnquoteChar = function(s, quote) {
var $ptr, _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;
value = 0;
multibyte = false;
tail = "";
err = $ifaceNil;
c = s.charCodeAt(0);
if ((c === quote) && ((quote === 39) || (quote === 34))) {
err = $pkg.ErrSyntax;
return [value, multibyte, tail, err];
} else if (c >= 128) {
_tuple = utf8.DecodeRuneInString(s);
r = _tuple[0];
size = _tuple[1];
_tmp = r;
_tmp$1 = true;
_tmp$2 = $substring(s, size);
_tmp$3 = $ifaceNil;
value = _tmp;
multibyte = _tmp$1;
tail = _tmp$2;
err = _tmp$3;
return [value, multibyte, tail, err];
} else if (!((c === 92))) {
_tmp$4 = ((s.charCodeAt(0) >> 0));
_tmp$5 = false;
_tmp$6 = $substring(s, 1);
_tmp$7 = $ifaceNil;
value = _tmp$4;
multibyte = _tmp$5;
tail = _tmp$6;
err = _tmp$7;
return [value, multibyte, tail, err];
}
if (s.length <= 1) {
err = $pkg.ErrSyntax;
return [value, multibyte, tail, err];
}
c$1 = s.charCodeAt(1);
s = $substring(s, 2);
switch (0) { default:
_1 = c$1;
if (_1 === (97)) {
value = 7;
} else if (_1 === (98)) {
value = 8;
} else if (_1 === (102)) {
value = 12;
} else if (_1 === (110)) {
value = 10;
} else if (_1 === (114)) {
value = 13;
} else if (_1 === (116)) {
value = 9;
} else if (_1 === (118)) {
value = 11;
} else if ((_1 === (120)) || (_1 === (117)) || (_1 === (85))) {
n = 0;
_2 = c$1;
if (_2 === (120)) {
n = 2;
} else if (_2 === (117)) {
n = 4;
} else if (_2 === (85)) {
n = 8;
}
v = 0;
if (s.length < n) {
err = $pkg.ErrSyntax;
return [value, multibyte, tail, err];
}
j = 0;
while (true) {
if (!(j < n)) { break; }
_tuple$1 = unhex(s.charCodeAt(j));
x = _tuple$1[0];
ok = _tuple$1[1];
if (!ok) {
err = $pkg.ErrSyntax;
return [value, multibyte, tail, err];
}
v = (v << 4 >> 0) | x;
j = j + (1) >> 0;
}
s = $substring(s, n);
if (c$1 === 120) {
value = v;
break;
}
if (v > 1114111) {
err = $pkg.ErrSyntax;
return [value, multibyte, tail, err];
}
value = v;
multibyte = true;
} else if ((_1 === (48)) || (_1 === (49)) || (_1 === (50)) || (_1 === (51)) || (_1 === (52)) || (_1 === (53)) || (_1 === (54)) || (_1 === (55))) {
v$1 = ((c$1 >> 0)) - 48 >> 0;
if (s.length < 2) {
err = $pkg.ErrSyntax;
return [value, multibyte, tail, err];
}
j$1 = 0;
while (true) {
if (!(j$1 < 2)) { break; }
x$1 = ((s.charCodeAt(j$1) >> 0)) - 48 >> 0;
if (x$1 < 0 || x$1 > 7) {
err = $pkg.ErrSyntax;
return [value, multibyte, tail, err];
}
v$1 = ((v$1 << 3 >> 0)) | x$1;
j$1 = j$1 + (1) >> 0;
}
s = $substring(s, 2);
if (v$1 > 255) {
err = $pkg.ErrSyntax;
return [value, multibyte, tail, err];
}
value = v$1;
} else if (_1 === (92)) {
value = 92;
} else if ((_1 === (39)) || (_1 === (34))) {
if (!((c$1 === quote))) {
err = $pkg.ErrSyntax;
return [value, multibyte, tail, err];
}
value = ((c$1 >> 0));
} else {
err = $pkg.ErrSyntax;
return [value, multibyte, tail, err];
}
}
tail = s;
return [value, multibyte, tail, err];
};
$pkg.UnquoteChar = UnquoteChar;
Unquote = function(s) {
var $ptr, _1, _q, _tuple, _tuple$1, buf, buf$1, c, err, i, multibyte, n, n$1, quote, r, runeTmp, s, size, ss;
n = s.length;
if (n < 2) {
return ["", $pkg.ErrSyntax];
}
quote = s.charCodeAt(0);
if (!((quote === s.charCodeAt((n - 1 >> 0))))) {
return ["", $pkg.ErrSyntax];
}
s = $substring(s, 1, (n - 1 >> 0));
if (quote === 96) {
if (contains(s, 96)) {
return ["", $pkg.ErrSyntax];
}
if (contains(s, 13)) {
buf = $makeSlice(sliceType$6, 0, (s.length - 1 >> 0));
i = 0;
while (true) {
if (!(i < s.length)) { break; }
if (!((s.charCodeAt(i) === 13))) {
buf = $append(buf, s.charCodeAt(i));
}
i = i + (1) >> 0;
}
return [($bytesToString(buf)), $ifaceNil];
}
return [s, $ifaceNil];
}
if (!((quote === 34)) && !((quote === 39))) {
return ["", $pkg.ErrSyntax];
}
if (contains(s, 10)) {
return ["", $pkg.ErrSyntax];
}
if (!contains(s, 92) && !contains(s, quote)) {
_1 = quote;
if (_1 === (34)) {
return [s, $ifaceNil];
} else if (_1 === (39)) {
_tuple = utf8.DecodeRuneInString(s);
r = _tuple[0];
size = _tuple[1];
if ((size === s.length) && (!((r === 65533)) || !((size === 1)))) {
return [s, $ifaceNil];
}
}
}
runeTmp = arrayType$4.zero();
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")));
while (true) {
if (!(s.length > 0)) { break; }
_tuple$1 = UnquoteChar(s, quote);
c = _tuple$1[0];
multibyte = _tuple$1[1];
ss = _tuple$1[2];
err = _tuple$1[3];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return ["", err];
}
s = ss;
if (c < 128 || !multibyte) {
buf$1 = $append(buf$1, ((c << 24 >>> 24)));
} else {
n$1 = utf8.EncodeRune(new sliceType$6(runeTmp), c);
buf$1 = $appendSlice(buf$1, $subslice(new sliceType$6(runeTmp), 0, n$1));
}
if ((quote === 39) && !((s.length === 0))) {
return ["", $pkg.ErrSyntax];
}
}
return [($bytesToString(buf$1)), $ifaceNil];
};
$pkg.Unquote = Unquote;
contains = function(s, c) {
var $ptr, c, i, s;
i = 0;
while (true) {
if (!(i < s.length)) { break; }
if (s.charCodeAt(i) === c) {
return true;
}
i = i + (1) >> 0;
}
return false;
};
bsearch16 = function(a, x) {
var $ptr, _q, _tmp, _tmp$1, a, h, i, j, x;
_tmp = 0;
_tmp$1 = a.$length;
i = _tmp;
j = _tmp$1;
while (true) {
if (!(i < j)) { break; }
h = i + (_q = ((j - i >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
if (((h < 0 || h >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + h]) < x) {
i = h + 1 >> 0;
} else {
j = h;
}
}
return i;
};
bsearch32 = function(a, x) {
var $ptr, _q, _tmp, _tmp$1, a, h, i, j, x;
_tmp = 0;
_tmp$1 = a.$length;
i = _tmp;
j = _tmp$1;
while (true) {
if (!(i < j)) { break; }
h = i + (_q = ((j - i >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
if (((h < 0 || h >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + h]) < x) {
i = h + 1 >> 0;
} else {
j = h;
}
}
return i;
};
IsPrint = function(r) {
var $ptr, _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;
if (r <= 255) {
if (32 <= r && r <= 126) {
return true;
}
if (161 <= r && r <= 255) {
return !((r === 173));
}
return false;
}
if (0 <= r && r < 65536) {
_tmp = ((r << 16 >>> 16));
_tmp$1 = isPrint16;
_tmp$2 = isNotPrint16;
rr = _tmp;
isPrint = _tmp$1;
isNotPrint = _tmp$2;
i = bsearch16(isPrint, rr);
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) {
return false;
}
j = bsearch16(isNotPrint, rr);
return j >= isNotPrint.$length || !((((j < 0 || j >= isNotPrint.$length) ? ($throwRuntimeError("index out of range"), undefined) : isNotPrint.$array[isNotPrint.$offset + j]) === rr));
}
_tmp$3 = ((r >>> 0));
_tmp$4 = isPrint32;
_tmp$5 = isNotPrint32;
rr$1 = _tmp$3;
isPrint$1 = _tmp$4;
isNotPrint$1 = _tmp$5;
i$1 = bsearch32(isPrint$1, rr$1);
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) {
return false;
}
if (r >= 131072) {
return true;
}
r = r - (65536) >> 0;
j$1 = bsearch16(isNotPrint$1, ((r << 16 >>> 16)));
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))));
};
$pkg.IsPrint = IsPrint;
isInGraphicList = function(r) {
var $ptr, i, r, rr;
if (r > 65535) {
return false;
}
rr = ((r << 16 >>> 16));
i = bsearch16(isGraphic, rr);
return i < isGraphic.$length && (rr === ((i < 0 || i >= isGraphic.$length) ? ($throwRuntimeError("index out of range"), undefined) : isGraphic.$array[isGraphic.$offset + i]));
};
ptrType.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
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)}];
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)}];
NumError.init("", [{prop: "Func", name: "Func", exported: true, typ: $String, tag: ""}, {prop: "Num", name: "Num", exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", exported: true, typ: $error, tag: ""}]);
decimal.init("strconv", [{prop: "d", name: "d", exported: false, typ: arrayType, tag: ""}, {prop: "nd", name: "nd", exported: false, typ: $Int, tag: ""}, {prop: "dp", name: "dp", exported: false, typ: $Int, tag: ""}, {prop: "neg", name: "neg", exported: false, typ: $Bool, tag: ""}, {prop: "trunc", name: "trunc", exported: false, typ: $Bool, tag: ""}]);
leftCheat.init("strconv", [{prop: "delta", name: "delta", exported: false, typ: $Int, tag: ""}, {prop: "cutoff", name: "cutoff", exported: false, typ: $String, tag: ""}]);
extFloat.init("strconv", [{prop: "mant", name: "mant", exported: false, typ: $Uint64, tag: ""}, {prop: "exp", name: "exp", exported: false, typ: $Int, tag: ""}, {prop: "neg", name: "neg", exported: false, typ: $Bool, tag: ""}]);
floatInfo.init("strconv", [{prop: "mantbits", name: "mantbits", exported: false, typ: $Uint, tag: ""}, {prop: "expbits", name: "expbits", exported: false, typ: $Uint, tag: ""}, {prop: "bias", name: "bias", exported: false, typ: $Int, tag: ""}]);
decimalSlice.init("strconv", [{prop: "d", name: "d", exported: false, typ: sliceType$6, tag: ""}, {prop: "nd", name: "nd", exported: false, typ: $Int, tag: ""}, {prop: "dp", name: "dp", exported: false, typ: $Int, tag: ""}, {prop: "neg", name: "neg", exported: false, typ: $Bool, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = math.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = utf8.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
optimize = true;
powtab = new sliceType([1, 3, 6, 9, 13, 16, 19, 23, 26]);
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]);
float32pow10 = new sliceType$2([1, 10, 100, 1000, 10000, 100000, 1e+06, 1e+07, 1e+08, 1e+09, 1e+10]);
$pkg.ErrRange = errors.New("value out of range");
$pkg.ErrSyntax = errors.New("invalid syntax");
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")]);
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)]);
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)]);
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)]);
float32info = new floatInfo.ptr(23, 8, -127);
float64info = new floatInfo.ptr(52, 11, -1023);
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, 2142, 2208, 2237, 2260, 2444, 2447, 2448, 2451, 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2531, 2534, 2555, 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, 2809, 2817, 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, 3329, 3386, 3389, 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, 7669, 7675, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8061, 8064, 8147, 8150, 8175, 8178, 8190, 8208, 8231, 8240, 8286, 8304, 8305, 8308, 8348, 8352, 8382, 8400, 8432, 8448, 8587, 8592, 9254, 9280, 9290, 9312, 11123, 11126, 11157, 11160, 11193, 11197, 11217, 11244, 11247, 11264, 11507, 11513, 11559, 11565, 11565, 11568, 11623, 11631, 11632, 11647, 11670, 11680, 11844, 11904, 12019, 12032, 12245, 12272, 12283, 12289, 12438, 12441, 12543, 12549, 12589, 12593, 12730, 12736, 12771, 12784, 19893, 19904, 40917, 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]);
isNotPrint16 = new sliceType$4([173, 907, 909, 930, 1328, 1376, 1416, 1424, 1757, 2111, 2229, 2274, 2436, 2473, 2481, 2526, 2564, 2601, 2609, 2612, 2615, 2621, 2653, 2692, 2702, 2706, 2729, 2737, 2740, 2758, 2762, 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, 7415, 8024, 8026, 8028, 8030, 8117, 8133, 8156, 8181, 8335, 9215, 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]);
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, 66352, 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, 72384, 72440, 72704, 72773, 72784, 72812, 72816, 72847, 72850, 72886, 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, 94176, 94208, 100332, 100352, 101106, 110592, 110593, 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, 127744, 128722, 128736, 128748, 128752, 128758, 128768, 128883, 128896, 128980, 129024, 129035, 129040, 129095, 129104, 129113, 129120, 129159, 129168, 129197, 129296, 129319, 129328, 129328, 129331, 129355, 129360, 129374, 129408, 129425, 129472, 129472, 131072, 173782, 173824, 177972, 177984, 178205, 178208, 183969, 194560, 195101, 917760, 917999]);
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, 7177, 7223, 7336, 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, 63775, 63807]);
isGraphic = new sliceType$4([160, 5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200, 8201, 8202, 8239, 8287, 12288]);
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]);
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["encoding/base64"] = (function() {
var $pkg = {}, $init, io, strconv, Encoding, CorruptInputError, arrayType, arrayType$1, sliceType, ptrType, arrayType$4, NewEncoding;
io = $packages["io"];
strconv = $packages["strconv"];
Encoding = $pkg.Encoding = $newType(0, $kindStruct, "base64.Encoding", true, "encoding/base64", true, function(encode_, decodeMap_, padChar_, strict_) {
this.$val = this;
if (arguments.length === 0) {
this.encode = arrayType.zero();
this.decodeMap = arrayType$1.zero();
this.padChar = 0;
this.strict = false;
return;
}
this.encode = encode_;
this.decodeMap = decodeMap_;
this.padChar = padChar_;
this.strict = strict_;
});
CorruptInputError = $pkg.CorruptInputError = $newType(8, $kindInt64, "base64.CorruptInputError", true, "encoding/base64", true, null);
arrayType = $arrayType($Uint8, 64);
arrayType$1 = $arrayType($Uint8, 256);
sliceType = $sliceType($Uint8);
ptrType = $ptrType(Encoding);
arrayType$4 = $arrayType($Uint8, 4);
NewEncoding = function(encoder$1) {
var $ptr, e, encoder$1, i, i$1, x, x$1, x$2;
if (!((encoder$1.length === 64))) {
$panic(new $String("encoding alphabet is not 64-bytes long"));
}
e = new Encoding.ptr(arrayType.zero(), arrayType$1.zero(), 0, false);
e.padChar = 61;
$copyString(new sliceType(e.encode), encoder$1);
i = 0;
while (true) {
if (!(i < 256)) { break; }
(x = e.decodeMap, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i] = 255));
i = i + (1) >> 0;
}
i$1 = 0;
while (true) {
if (!(i$1 < encoder$1.length)) { break; }
(x$1 = e.decodeMap, x$2 = encoder$1.charCodeAt(i$1), ((x$2 < 0 || x$2 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[x$2] = ((i$1 << 24 >>> 24))));
i$1 = i$1 + (1) >> 0;
}
return e;
};
$pkg.NewEncoding = NewEncoding;
Encoding.ptr.prototype.WithPadding = function(padding) {
var $ptr, enc, padding;
enc = this;
enc.padChar = padding;
return enc;
};
Encoding.prototype.WithPadding = function(padding) { return this.$val.WithPadding(padding); };
Encoding.ptr.prototype.Strict = function() {
var $ptr, enc;
enc = this;
enc.strict = true;
return enc;
};
Encoding.prototype.Strict = function() { return this.$val.Strict(); };
Encoding.ptr.prototype.Encode = function(dst, src) {
var $ptr, _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;
enc = this;
if (src.$length === 0) {
return;
}
_tmp = 0;
_tmp$1 = 0;
di = _tmp;
si = _tmp$1;
n = $imul(((_q = src.$length / 3, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))), 3);
while (true) {
if (!(si < n)) { break; }
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;
(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]))));
(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]))));
(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]))));
(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]))));
si = si + (3) >> 0;
di = di + (4) >> 0;
}
remain = src.$length - si >> 0;
if (remain === 0) {
return;
}
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;
if (remain === 2) {
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;
}
(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]))));
(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]))));
_1 = remain;
if (_1 === (2)) {
(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]))));
if (!((enc.padChar === -1))) {
(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))));
}
} else if (_1 === (1)) {
if (!((enc.padChar === -1))) {
(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))));
(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))));
}
}
};
Encoding.prototype.Encode = function(dst, src) { return this.$val.Encode(dst, src); };
Encoding.ptr.prototype.EncodeToString = function(src) {
var $ptr, buf, enc, src;
enc = this;
buf = $makeSlice(sliceType, enc.EncodedLen(src.$length));
enc.Encode(buf, src);
return ($bytesToString(buf));
};
Encoding.prototype.EncodeToString = function(src) { return this.$val.EncodeToString(src); };
Encoding.ptr.prototype.EncodedLen = function(n) {
var $ptr, _q, _q$1, enc, n;
enc = this;
if (enc.padChar === -1) {
return (_q = ((($imul(n, 8)) + 5 >> 0)) / 6, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
}
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);
};
Encoding.prototype.EncodedLen = function(n) { return this.$val.EncodedLen(n); };
CorruptInputError.prototype.Error = function() {
var $ptr, e;
e = this;
return "illegal base64 data at input byte " + strconv.FormatInt((new $Int64(e.$high, e.$low)), 10);
};
$ptrType(CorruptInputError).prototype.Error = function() { return this.$get().Error(); };
Encoding.ptr.prototype.decode = function(dst, src) {
var $ptr, _1, _2, _i, _ref, _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, dbuf, dinc, dlen, dst, enc, end, err, in$1, j, n, si, src, val, x;
n = 0;
end = false;
err = $ifaceNil;
enc = this;
si = 0;
while (true) {
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; }
si = si + (1) >> 0;
}
while (true) {
if (!(si < src.$length && !end)) { break; }
dbuf = arrayType$4.zero();
_tmp = 3;
_tmp$1 = 4;
dinc = _tmp;
dlen = _tmp$1;
_ref = dbuf;
_i = 0;
while (true) {
if (!(_i < 4)) { break; }
j = _i;
if (src.$length === si) {
if (!((enc.padChar === -1)) || j < 2) {
_tmp$2 = n;
_tmp$3 = false;
_tmp$4 = (new CorruptInputError(0, (si - j >> 0)));
n = _tmp$2;
end = _tmp$3;
err = _tmp$4;
return [n, end, err];
}
_tmp$5 = j - 1 >> 0;
_tmp$6 = j;
_tmp$7 = true;
dinc = _tmp$5;
dlen = _tmp$6;
end = _tmp$7;
break;
}
in$1 = ((si < 0 || si >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + si]);
si = si + (1) >> 0;
while (true) {
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; }
si = si + (1) >> 0;
}
if (((in$1 >> 0)) === enc.padChar) {
_1 = j;
if ((_1 === (0)) || (_1 === (1))) {
_tmp$8 = n;
_tmp$9 = false;
_tmp$10 = (new CorruptInputError(0, (si - 1 >> 0)));
n = _tmp$8;
end = _tmp$9;
err = _tmp$10;
return [n, end, err];
} else if (_1 === (2)) {
if (si === src.$length) {
_tmp$11 = n;
_tmp$12 = false;
_tmp$13 = (new CorruptInputError(0, src.$length));
n = _tmp$11;
end = _tmp$12;
err = _tmp$13;
return [n, end, err];
}
if (!((((((si < 0 || si >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + si]) >> 0)) === enc.padChar))) {
_tmp$14 = n;
_tmp$15 = false;
_tmp$16 = (new CorruptInputError(0, (si - 1 >> 0)));
n = _tmp$14;
end = _tmp$15;
err = _tmp$16;
return [n, end, err];
}
si = si + (1) >> 0;
while (true) {
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; }
si = si + (1) >> 0;
}
}
if (si < src.$length) {
err = (new CorruptInputError(0, si));
}
_tmp$17 = 3;
_tmp$18 = j;
_tmp$19 = true;
dinc = _tmp$17;
dlen = _tmp$18;
end = _tmp$19;
break;
}
((j < 0 || j >= dbuf.length) ? ($throwRuntimeError("index out of range"), undefined) : dbuf[j] = (x = enc.decodeMap, ((in$1 < 0 || in$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[in$1])));
if (((j < 0 || j >= dbuf.length) ? ($throwRuntimeError("index out of range"), undefined) : dbuf[j]) === 255) {
_tmp$20 = n;
_tmp$21 = false;
_tmp$22 = (new CorruptInputError(0, (si - 1 >> 0)));
n = _tmp$20;
end = _tmp$21;
err = _tmp$22;
return [n, end, err];
}
_i++;
}
val = ((((((((dbuf[0] >>> 0)) << 18 >>> 0) | (((dbuf[1] >>> 0)) << 12 >>> 0)) >>> 0) | (((dbuf[2] >>> 0)) << 6 >>> 0)) >>> 0) | ((dbuf[3] >>> 0))) >>> 0;
_tmp$23 = (((val >>> 0 >>> 0) << 24 >>> 24));
_tmp$24 = (((val >>> 8 >>> 0) << 24 >>> 24));
_tmp$25 = (((val >>> 16 >>> 0) << 24 >>> 24));
dbuf[2] = _tmp$23;
dbuf[1] = _tmp$24;
dbuf[0] = _tmp$25;
_2 = dlen;
if (_2 === (4)) {
(2 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 2] = dbuf[2]);
dbuf[2] = 0;
(1 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 1] = dbuf[1]);
if (enc.strict && !((dbuf[2] === 0))) {
_tmp$26 = n;
_tmp$27 = end;
_tmp$28 = (new CorruptInputError(0, (si - 1 >> 0)));
n = _tmp$26;
end = _tmp$27;
err = _tmp$28;
return [n, end, err];
}
dbuf[1] = 0;
(0 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 0] = dbuf[0]);
if (enc.strict && (!((dbuf[1] === 0)) || !((dbuf[2] === 0)))) {
_tmp$29 = n;
_tmp$30 = end;
_tmp$31 = (new CorruptInputError(0, (si - 2 >> 0)));
n = _tmp$29;
end = _tmp$30;
err = _tmp$31;
return [n, end, err];
}
} else if (_2 === (3)) {
(1 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 1] = dbuf[1]);
if (enc.strict && !((dbuf[2] === 0))) {
_tmp$32 = n;
_tmp$33 = end;
_tmp$34 = (new CorruptInputError(0, (si - 1 >> 0)));
n = _tmp$32;
end = _tmp$33;
err = _tmp$34;
return [n, end, err];
}
dbuf[1] = 0;
(0 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 0] = dbuf[0]);
if (enc.strict && (!((dbuf[1] === 0)) || !((dbuf[2] === 0)))) {
_tmp$35 = n;
_tmp$36 = end;
_tmp$37 = (new CorruptInputError(0, (si - 2 >> 0)));
n = _tmp$35;
end = _tmp$36;
err = _tmp$37;
return [n, end, err];
}
} else if (_2 === (2)) {
(0 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 0] = dbuf[0]);
if (enc.strict && (!((dbuf[1] === 0)) || !((dbuf[2] === 0)))) {
_tmp$38 = n;
_tmp$39 = end;
_tmp$40 = (new CorruptInputError(0, (si - 2 >> 0)));
n = _tmp$38;
end = _tmp$39;
err = _tmp$40;
return [n, end, err];
}
}
dst = $subslice(dst, dinc);
n = n + ((dlen - 1 >> 0)) >> 0;
}
_tmp$41 = n;
_tmp$42 = end;
_tmp$43 = err;
n = _tmp$41;
end = _tmp$42;
err = _tmp$43;
return [n, end, err];
};
Encoding.prototype.decode = function(dst, src) { return this.$val.decode(dst, src); };
Encoding.ptr.prototype.Decode = function(dst, src) {
var $ptr, _tuple, dst, enc, err, n, src;
n = 0;
err = $ifaceNil;
enc = this;
_tuple = enc.decode(dst, src);
n = _tuple[0];
err = _tuple[2];
return [n, err];
};
Encoding.prototype.Decode = function(dst, src) { return this.$val.Decode(dst, src); };
Encoding.ptr.prototype.DecodeString = function(s) {
var $ptr, _tuple, dbuf, enc, err, n, s;
enc = this;
dbuf = $makeSlice(sliceType, enc.DecodedLen(s.length));
_tuple = enc.decode(dbuf, (new sliceType($stringToBytes(s))));
n = _tuple[0];
err = _tuple[2];
return [$subslice(dbuf, 0, n), err];
};
Encoding.prototype.DecodeString = function(s) { return this.$val.DecodeString(s); };
Encoding.ptr.prototype.DecodedLen = function(n) {
var $ptr, _q, _q$1, enc, n;
enc = this;
if (enc.padChar === -1) {
return (_q = ($imul(n, 6)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
}
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);
};
Encoding.prototype.DecodedLen = function(n) { return this.$val.DecodedLen(n); };
Encoding.methods = [{prop: "WithPadding", name: "WithPadding", pkg: "", typ: $funcType([$Int32], [ptrType], false)}, {prop: "Strict", name: "Strict", pkg: "", typ: $funcType([], [ptrType], false)}];
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: "decode", name: "decode", pkg: "encoding/base64", typ: $funcType([sliceType, sliceType], [$Int, $Bool, $error], false)}, {prop: "Decode", name: "Decode", pkg: "", typ: $funcType([sliceType, sliceType], [$Int, $error], false)}, {prop: "DecodeString", name: "DecodeString", pkg: "", typ: $funcType([$String], [sliceType, $error], false)}, {prop: "DecodedLen", name: "DecodedLen", pkg: "", typ: $funcType([$Int], [$Int], false)}];
CorruptInputError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
Encoding.init("encoding/base64", [{prop: "encode", name: "encode", exported: false, typ: arrayType, tag: ""}, {prop: "decodeMap", name: "decodeMap", exported: false, typ: arrayType$1, tag: ""}, {prop: "padChar", name: "padChar", exported: false, typ: $Int32, tag: ""}, {prop: "strict", name: "strict", exported: false, typ: $Bool, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = io.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strconv.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$pkg.StdEncoding = NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/");
$pkg.URLEncoding = NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_");
$pkg.RawStdEncoding = $clone($pkg.StdEncoding, Encoding).WithPadding(-1);
$pkg.RawURLEncoding = $clone($pkg.URLEncoding, Encoding).WithPadding(-1);
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["internal/syscall/windows/sysdll"] = (function() {
var $pkg = {}, $init, Add;
Add = function(dll) {
var $ptr, _key, dll;
_key = dll; ($pkg.IsSystemDLL || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: true };
return dll;
};
$pkg.Add = Add;
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$pkg.IsSystemDLL = $makeMap($String.keyFor, []);
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["unicode/utf16"] = (function() {
var $pkg = {}, $init, sliceType, sliceType$1, IsSurrogate, DecodeRune, EncodeRune, Encode, Decode;
sliceType = $sliceType($Uint16);
sliceType$1 = $sliceType($Int32);
IsSurrogate = function(r) {
var $ptr, r;
return 55296 <= r && r < 57344;
};
$pkg.IsSurrogate = IsSurrogate;
DecodeRune = function(r1, r2) {
var $ptr, r1, r2;
if (55296 <= r1 && r1 < 56320 && 56320 <= r2 && r2 < 57344) {
return ((((r1 - 55296 >> 0)) << 10 >> 0) | ((r2 - 56320 >> 0))) + 65536 >> 0;
}
return 65533;
};
$pkg.DecodeRune = DecodeRune;
EncodeRune = function(r) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, r, r1, r2;
r1 = 0;
r2 = 0;
if (r < 65536 || r > 1114111) {
_tmp = 65533;
_tmp$1 = 65533;
r1 = _tmp;
r2 = _tmp$1;
return [r1, r2];
}
r = r - (65536) >> 0;
_tmp$2 = 55296 + (((r >> 10 >> 0)) & 1023) >> 0;
_tmp$3 = 56320 + (r & 1023) >> 0;
r1 = _tmp$2;
r2 = _tmp$3;
return [r1, r2];
};
$pkg.EncodeRune = EncodeRune;
Encode = function(s) {
var $ptr, _i, _i$1, _ref, _ref$1, _tuple, a, n, r1, r2, s, v, v$1, x;
n = s.$length;
_ref = s;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (v >= 65536) {
n = n + (1) >> 0;
}
_i++;
}
a = $makeSlice(sliceType, n);
n = 0;
_ref$1 = s;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
v$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
if ((0 <= v$1 && v$1 < 55296) || (57344 <= v$1 && v$1 < 65536)) {
((n < 0 || n >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + n] = ((v$1 << 16 >>> 16)));
n = n + (1) >> 0;
} else if (65536 <= v$1 && v$1 <= 1114111) {
_tuple = EncodeRune(v$1);
r1 = _tuple[0];
r2 = _tuple[1];
((n < 0 || n >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + n] = ((r1 << 16 >>> 16)));
(x = n + 1 >> 0, ((x < 0 || x >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x] = ((r2 << 16 >>> 16))));
n = n + (2) >> 0;
} else {
((n < 0 || n >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + n] = 65533);
n = n + (1) >> 0;
}
_i$1++;
}
return $subslice(a, 0, n);
};
$pkg.Encode = Encode;
Decode = function(s) {
var $ptr, a, i, n, r, s, x, x$1, x$2;
a = $makeSlice(sliceType$1, s.$length);
n = 0;
i = 0;
while (true) {
if (!(i < s.$length)) { break; }
r = ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]);
if ((r < 55296) || (57344 <= r)) {
((n < 0 || n >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + n] = ((r >> 0)));
} else if (55296 <= r && r < 56320 && (i + 1 >> 0) < s.$length && 56320 <= (x = i + 1 >> 0, ((x < 0 || x >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x])) && (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x$1])) < 57344) {
((n < 0 || n >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + n] = DecodeRune(((r >> 0)), (((x$2 = i + 1 >> 0, ((x$2 < 0 || x$2 >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x$2])) >> 0))));
i = i + (1) >> 0;
} else {
((n < 0 || n >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + n] = 65533);
}
n = n + (1) >> 0;
i = i + (1) >> 0;
}
return $subslice(a, 0, n);
};
$pkg.Decode = Decode;
$init = function() {
$pkg.$init = function() {};
/* */ 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:
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["syscall"] = (function() {
var $pkg = {}, $init, errors, js, race, sysdll, runtime, sync, atomic, utf16, DummyError, DLLError, DLL, Proc, LazyDLL, LazyProc, Handle, Errno, RawSockaddrInet4, RawSockaddrInet6, RawSockaddr, RawSockaddrAny, Sockaddr, SockaddrInet4, SockaddrInet6, SockaddrUnix, Linger, sysLinger, SecurityAttributes, Overlapped, Filetime, Win32finddata, win32finddata1, ByHandleFileInformation, Win32FileAttributeData, WSABuf, Protoent, DNSSRVData, DNSPTRData, DNSMXData, DNSTXTData, DNSRecord, TransmitFileBuffers, CertContext, CertChainContext, CertSimpleChain, CertChainElement, CertRevocationInfo, CertTrustStatus, CertUsageMatch, CertEnhKeyUsage, CertChainPara, CertChainPolicyPara, SSLExtraCertChainPolicyPara, CertChainPolicyStatus, AddrinfoW, GUID, TCPKeepalive, symbolicLinkReparseBuffer, mountPointReparseBuffer, reparseDataBuffer, sliceType, sliceType$2, structType, ptrType$1, arrayType, ptrType$2, arrayType$1, ptrType$3, ptrType$4, ptrType$5, ptrType$6, sliceType$3, sliceType$4, ptrType$7, ptrType$10, ptrType$11, ptrType$12, arrayType$2, ptrType$18, ptrType$19, ptrType$20, ptrType$21, arrayType$3, arrayType$4, arrayType$5, arrayType$6, arrayType$7, ptrType$22, arrayType$8, arrayType$9, arrayType$10, ptrType$24, ptrType$26, ptrType$28, ptrType$29, ptrType$30, ptrType$31, ptrType$32, ptrType$33, ptrType$34, arrayType$11, arrayType$12, arrayType$14, ptrType$37, arrayType$15, ptrType$40, ptrType$41, ptrType$42, ptrType$43, ptrType$44, ptrType$45, ptrType$46, ptrType$47, ptrType$48, warningPrinted, lineBuffer, minusOne, ioSync, ioSync$24ptr, connectExFunc, errors$1, errERROR_IO_PENDING, modkernel32, modadvapi32, modshell32, modmswsock, modcrypt32, modws2_32, moddnsapi, modiphlpapi, modsecur32, modnetapi32, moduserenv, procGetLastError, procLoadLibraryW, procFreeLibrary, procGetProcAddress, procGetVersion, procFormatMessageW, procExitProcess, procCreateFileW, procReadFile, procWriteFile, procSetFilePointer, procCloseHandle, procGetStdHandle, procFindFirstFileW, procFindNextFileW, procFindClose, procGetFileInformationByHandle, procGetCurrentDirectoryW, procSetCurrentDirectoryW, procCreateDirectoryW, procRemoveDirectoryW, procDeleteFileW, procMoveFileW, procGetComputerNameW, procSetEndOfFile, procGetSystemTimeAsFileTime, procGetTimeZoneInformation, procCreateIoCompletionPort, procGetQueuedCompletionStatus, procPostQueuedCompletionStatus, procCancelIo, procCancelIoEx, procCreateProcessW, procOpenProcess, procTerminateProcess, procGetExitCodeProcess, procGetStartupInfoW, procGetCurrentProcess, procGetProcessTimes, procDuplicateHandle, procWaitForSingleObject, procGetTempPathW, procCreatePipe, procGetFileType, procCryptAcquireContextW, procCryptReleaseContext, procCryptGenRandom, procGetEnvironmentStringsW, procFreeEnvironmentStringsW, procGetEnvironmentVariableW, procSetEnvironmentVariableW, procSetFileTime, procGetFileAttributesW, procSetFileAttributesW, procGetFileAttributesExW, procGetCommandLineW, procCommandLineToArgvW, procLocalFree, procSetHandleInformation, procFlushFileBuffers, procGetFullPathNameW, procGetLongPathNameW, procGetShortPathNameW, procCreateFileMappingW, procMapViewOfFile, procUnmapViewOfFile, procFlushViewOfFile, procVirtualLock, procVirtualUnlock, procTransmitFile, procReadDirectoryChangesW, procCertOpenSystemStoreW, procCertOpenStore, procCertEnumCertificatesInStore, procCertAddCertificateContextToStore, procCertCloseStore, procCertGetCertificateChain, procCertFreeCertificateChain, procCertCreateCertificateContext, procCertFreeCertificateContext, procCertVerifyCertificateChainPolicy, procRegOpenKeyExW, procRegCloseKey, procRegQueryInfoKeyW, procRegEnumKeyExW, procRegQueryValueExW, procGetCurrentProcessId, procGetConsoleMode, procWriteConsoleW, procReadConsoleW, procCreateToolhelp32Snapshot, procProcess32FirstW, procProcess32NextW, procDeviceIoControl, procCreateSymbolicLinkW, procCreateHardLinkW, procWSAStartup, procWSACleanup, procWSAIoctl, procsocket, procsetsockopt, procgetsockopt, procbind, procconnect, procgetsockname, procgetpeername, proclisten, procshutdown, procclosesocket, procAcceptEx, procGetAcceptExSockaddrs, procWSARecv, procWSASend, procWSARecvFrom, procWSASendTo, procgethostbyname, procgetservbyname, procntohs, procgetprotobyname, procDnsQuery_W, procDnsRecordListFree, procDnsNameCompare_W, procGetAddrInfoW, procFreeAddrInfoW, procGetIfEntry, procGetAdaptersInfo, procSetFileCompletionNotificationModes, procWSAEnumProtocolsW, procTranslateNameW, procGetUserNameExW, procNetUserGetInfo, procNetGetJoinInformation, procNetApiBufferFree, procLookupAccountSidW, procLookupAccountNameW, procConvertSidToStringSidW, procConvertStringSidToSidW, procGetLengthSid, procCopySid, procOpenProcessToken, procGetTokenInformation, procGetUserProfileDirectoryW, init, printWarning, printToConsole, use, indexByte, Syscall, Syscall6, Syscall9, Syscall12, Syscall15, getprocaddress, getStdHandle, GetConsoleMode, WriteFile, ExitProcess, GetCommandLine, CommandLineToArgv, Getenv, NewLazyDLL, CloseOnExec, FullPath, msanRead, msanWrite, itoa, uitoa, ByteSliceFromString, BytePtrFromString, StringToUTF16, UTF16FromString, UTF16ToString, StringToUTF16Ptr, UTF16PtrFromString, langid, Exit, makeInheritSa, Open, Read, Write, Seek, Ftruncate, Fsync, Socket, SetsockoptInt, Bind, Connect, Getsockname, Getpeername, Listen, Shutdown, WSASendto, LoadConnectEx, connectEx, ConnectEx, SetsockoptLinger, Getpid, FindFirstFile, FindNextFile, Fchdir, Fchmod, Fchown, Readlink, errnoErr, FreeLibrary, formatMessage, CreateFile, ReadFile, SetFilePointer, CloseHandle, findFirstFile1, findNextFile1, FindClose, GetFileInformationByHandle, RemoveDirectory, DeleteFile, SetEndOfFile, CancelIo, CancelIoEx, GetTempPath, GetFileType, GetFileAttributes, SetFileAttributes, GetFileAttributesEx, LocalFree, SetHandleInformation, FlushFileBuffers, GetFullPathName, TransmitFile, CertOpenStore, CertAddCertificateContextToStore, CertCloseStore, CertGetCertificateChain, CertFreeCertificateChain, CertCreateCertificateContext, CertFreeCertificateContext, CertVerifyCertificateChainPolicy, RegOpenKeyEx, RegCloseKey, RegQueryInfoKey, RegEnumKeyEx, RegQueryValueEx, getCurrentProcessId, WriteConsole, ReadConsole, DeviceIoControl, WSAIoctl, socket, Setsockopt, bind, connect, getsockname, getpeername, listen, shutdown, Closesocket, AcceptEx, GetAcceptExSockaddrs, WSARecv, WSASend, WSARecvFrom, WSASendTo, Ntohs, GetProtoByName, _GetProtoByName, DnsQuery, _DnsQuery, DnsRecordListFree, DnsNameCompare, GetAddrInfoW, FreeAddrInfoW, SetFileCompletionNotificationModes, NsecToFiletime, copyFindData;
errors = $packages["errors"];
js = $packages["github.com/gopherjs/gopherjs/js"];
race = $packages["internal/race"];
sysdll = $packages["internal/syscall/windows/sysdll"];
runtime = $packages["runtime"];
sync = $packages["sync"];
atomic = $packages["sync/atomic"];
utf16 = $packages["unicode/utf16"];
DummyError = $pkg.DummyError = $newType(0, $kindStruct, "syscall.DummyError", true, "syscall", true, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
DLLError = $pkg.DLLError = $newType(0, $kindStruct, "syscall.DLLError", true, "syscall", true, function(Err_, ObjName_, Msg_) {
this.$val = this;
if (arguments.length === 0) {
this.Err = $ifaceNil;
this.ObjName = "";
this.Msg = "";
return;
}
this.Err = Err_;
this.ObjName = ObjName_;
this.Msg = Msg_;
});
DLL = $pkg.DLL = $newType(0, $kindStruct, "syscall.DLL", true, "syscall", true, function(Name_, Handle_) {
this.$val = this;
if (arguments.length === 0) {
this.Name = "";
this.Handle = 0;
return;
}
this.Name = Name_;
this.Handle = Handle_;
});
Proc = $pkg.Proc = $newType(0, $kindStruct, "syscall.Proc", true, "syscall", true, function(Dll_, Name_, addr_) {
this.$val = this;
if (arguments.length === 0) {
this.Dll = ptrType$4.nil;
this.Name = "";
this.addr = 0;
return;
}
this.Dll = Dll_;
this.Name = Name_;
this.addr = addr_;
});
LazyDLL = $pkg.LazyDLL = $newType(0, $kindStruct, "syscall.LazyDLL", true, "syscall", true, function(mu_, dll_, Name_) {
this.$val = this;
if (arguments.length === 0) {
this.mu = new sync.Mutex.ptr(0, 0);
this.dll = ptrType$4.nil;
this.Name = "";
return;
}
this.mu = mu_;
this.dll = dll_;
this.Name = Name_;
});
LazyProc = $pkg.LazyProc = $newType(0, $kindStruct, "syscall.LazyProc", true, "syscall", true, function(mu_, Name_, l_, proc_) {
this.$val = this;
if (arguments.length === 0) {
this.mu = new sync.Mutex.ptr(0, 0);
this.Name = "";
this.l = ptrType$6.nil;
this.proc = ptrType$5.nil;
return;
}
this.mu = mu_;
this.Name = Name_;
this.l = l_;
this.proc = proc_;
});
Handle = $pkg.Handle = $newType(4, $kindUintptr, "syscall.Handle", true, "syscall", true, null);
Errno = $pkg.Errno = $newType(4, $kindUintptr, "syscall.Errno", true, "syscall", true, null);
RawSockaddrInet4 = $pkg.RawSockaddrInet4 = $newType(0, $kindStruct, "syscall.RawSockaddrInet4", true, "syscall", true, function(Family_, Port_, Addr_, Zero_) {
this.$val = this;
if (arguments.length === 0) {
this.Family = 0;
this.Port = 0;
this.Addr = arrayType$3.zero();
this.Zero = arrayType$4.zero();
return;
}
this.Family = Family_;
this.Port = Port_;
this.Addr = Addr_;
this.Zero = Zero_;
});
RawSockaddrInet6 = $pkg.RawSockaddrInet6 = $newType(0, $kindStruct, "syscall.RawSockaddrInet6", true, "syscall", true, function(Family_, Port_, Flowinfo_, Addr_, Scope_id_) {
this.$val = this;
if (arguments.length === 0) {
this.Family = 0;
this.Port = 0;
this.Flowinfo = 0;
this.Addr = arrayType$5.zero();
this.Scope_id = 0;
return;
}
this.Family = Family_;
this.Port = Port_;
this.Flowinfo = Flowinfo_;
this.Addr = Addr_;
this.Scope_id = Scope_id_;
});
RawSockaddr = $pkg.RawSockaddr = $newType(0, $kindStruct, "syscall.RawSockaddr", true, "syscall", true, function(Family_, Data_) {
this.$val = this;
if (arguments.length === 0) {
this.Family = 0;
this.Data = arrayType$6.zero();
return;
}
this.Family = Family_;
this.Data = Data_;
});
RawSockaddrAny = $pkg.RawSockaddrAny = $newType(0, $kindStruct, "syscall.RawSockaddrAny", true, "syscall", true, function(Addr_, Pad_) {
this.$val = this;
if (arguments.length === 0) {
this.Addr = new RawSockaddr.ptr(0, arrayType$6.zero());
this.Pad = arrayType$7.zero();
return;
}
this.Addr = Addr_;
this.Pad = Pad_;
});
Sockaddr = $pkg.Sockaddr = $newType(8, $kindInterface, "syscall.Sockaddr", true, "syscall", true, null);
SockaddrInet4 = $pkg.SockaddrInet4 = $newType(0, $kindStruct, "syscall.SockaddrInet4", true, "syscall", true, function(Port_, Addr_, raw_) {
this.$val = this;
if (arguments.length === 0) {
this.Port = 0;
this.Addr = arrayType$3.zero();
this.raw = new RawSockaddrInet4.ptr(0, 0, arrayType$3.zero(), arrayType$4.zero());
return;
}
this.Port = Port_;
this.Addr = Addr_;
this.raw = raw_;
});
SockaddrInet6 = $pkg.SockaddrInet6 = $newType(0, $kindStruct, "syscall.SockaddrInet6", true, "syscall", true, function(Port_, ZoneId_, Addr_, raw_) {
this.$val = this;
if (arguments.length === 0) {
this.Port = 0;
this.ZoneId = 0;
this.Addr = arrayType$5.zero();
this.raw = new RawSockaddrInet6.ptr(0, 0, 0, arrayType$5.zero(), 0);
return;
}
this.Port = Port_;
this.ZoneId = ZoneId_;
this.Addr = Addr_;
this.raw = raw_;
});
SockaddrUnix = $pkg.SockaddrUnix = $newType(0, $kindStruct, "syscall.SockaddrUnix", true, "syscall", true, function(Name_) {
this.$val = this;
if (arguments.length === 0) {
this.Name = "";
return;
}
this.Name = Name_;
});
Linger = $pkg.Linger = $newType(0, $kindStruct, "syscall.Linger", true, "syscall", true, function(Onoff_, Linger_) {
this.$val = this;
if (arguments.length === 0) {
this.Onoff = 0;
this.Linger = 0;
return;
}
this.Onoff = Onoff_;
this.Linger = Linger_;
});
sysLinger = $pkg.sysLinger = $newType(0, $kindStruct, "syscall.sysLinger", true, "syscall", false, function(Onoff_, Linger_) {
this.$val = this;
if (arguments.length === 0) {
this.Onoff = 0;
this.Linger = 0;
return;
}
this.Onoff = Onoff_;
this.Linger = Linger_;
});
SecurityAttributes = $pkg.SecurityAttributes = $newType(0, $kindStruct, "syscall.SecurityAttributes", true, "syscall", true, function(Length_, SecurityDescriptor_, InheritHandle_) {
this.$val = this;
if (arguments.length === 0) {
this.Length = 0;
this.SecurityDescriptor = 0;
this.InheritHandle = 0;
return;
}
this.Length = Length_;
this.SecurityDescriptor = SecurityDescriptor_;
this.InheritHandle = InheritHandle_;
});
Overlapped = $pkg.Overlapped = $newType(0, $kindStruct, "syscall.Overlapped", true, "syscall", true, function(Internal_, InternalHigh_, Offset_, OffsetHigh_, HEvent_) {
this.$val = this;
if (arguments.length === 0) {
this.Internal = 0;
this.InternalHigh = 0;
this.Offset = 0;
this.OffsetHigh = 0;
this.HEvent = 0;
return;
}
this.Internal = Internal_;
this.InternalHigh = InternalHigh_;
this.Offset = Offset_;
this.OffsetHigh = OffsetHigh_;
this.HEvent = HEvent_;
});
Filetime = $pkg.Filetime = $newType(0, $kindStruct, "syscall.Filetime", true, "syscall", true, function(LowDateTime_, HighDateTime_) {
this.$val = this;
if (arguments.length === 0) {
this.LowDateTime = 0;
this.HighDateTime = 0;
return;
}
this.LowDateTime = LowDateTime_;
this.HighDateTime = HighDateTime_;
});
Win32finddata = $pkg.Win32finddata = $newType(0, $kindStruct, "syscall.Win32finddata", true, "syscall", true, function(FileAttributes_, CreationTime_, LastAccessTime_, LastWriteTime_, FileSizeHigh_, FileSizeLow_, Reserved0_, Reserved1_, FileName_, AlternateFileName_) {
this.$val = this;
if (arguments.length === 0) {
this.FileAttributes = 0;
this.CreationTime = new Filetime.ptr(0, 0);
this.LastAccessTime = new Filetime.ptr(0, 0);
this.LastWriteTime = new Filetime.ptr(0, 0);
this.FileSizeHigh = 0;
this.FileSizeLow = 0;
this.Reserved0 = 0;
this.Reserved1 = 0;
this.FileName = arrayType$11.zero();
this.AlternateFileName = arrayType$12.zero();
return;
}
this.FileAttributes = FileAttributes_;
this.CreationTime = CreationTime_;
this.LastAccessTime = LastAccessTime_;
this.LastWriteTime = LastWriteTime_;
this.FileSizeHigh = FileSizeHigh_;
this.FileSizeLow = FileSizeLow_;
this.Reserved0 = Reserved0_;
this.Reserved1 = Reserved1_;
this.FileName = FileName_;
this.AlternateFileName = AlternateFileName_;
});
win32finddata1 = $pkg.win32finddata1 = $newType(0, $kindStruct, "syscall.win32finddata1", true, "syscall", false, function(FileAttributes_, CreationTime_, LastAccessTime_, LastWriteTime_, FileSizeHigh_, FileSizeLow_, Reserved0_, Reserved1_, FileName_, AlternateFileName_) {
this.$val = this;
if (arguments.length === 0) {
this.FileAttributes = 0;
this.CreationTime = new Filetime.ptr(0, 0);
this.LastAccessTime = new Filetime.ptr(0, 0);
this.LastWriteTime = new Filetime.ptr(0, 0);
this.FileSizeHigh = 0;
this.FileSizeLow = 0;
this.Reserved0 = 0;
this.Reserved1 = 0;
this.FileName = arrayType$8.zero();
this.AlternateFileName = arrayType$9.zero();
return;
}
this.FileAttributes = FileAttributes_;
this.CreationTime = CreationTime_;
this.LastAccessTime = LastAccessTime_;
this.LastWriteTime = LastWriteTime_;
this.FileSizeHigh = FileSizeHigh_;
this.FileSizeLow = FileSizeLow_;
this.Reserved0 = Reserved0_;
this.Reserved1 = Reserved1_;
this.FileName = FileName_;
this.AlternateFileName = AlternateFileName_;
});
ByHandleFileInformation = $pkg.ByHandleFileInformation = $newType(0, $kindStruct, "syscall.ByHandleFileInformation", true, "syscall", true, function(FileAttributes_, CreationTime_, LastAccessTime_, LastWriteTime_, VolumeSerialNumber_, FileSizeHigh_, FileSizeLow_, NumberOfLinks_, FileIndexHigh_, FileIndexLow_) {
this.$val = this;
if (arguments.length === 0) {
this.FileAttributes = 0;
this.CreationTime = new Filetime.ptr(0, 0);
this.LastAccessTime = new Filetime.ptr(0, 0);
this.LastWriteTime = new Filetime.ptr(0, 0);
this.VolumeSerialNumber = 0;
this.FileSizeHigh = 0;
this.FileSizeLow = 0;
this.NumberOfLinks = 0;
this.FileIndexHigh = 0;
this.FileIndexLow = 0;
return;
}
this.FileAttributes = FileAttributes_;
this.CreationTime = CreationTime_;
this.LastAccessTime = LastAccessTime_;
this.LastWriteTime = LastWriteTime_;
this.VolumeSerialNumber = VolumeSerialNumber_;
this.FileSizeHigh = FileSizeHigh_;
this.FileSizeLow = FileSizeLow_;
this.NumberOfLinks = NumberOfLinks_;
this.FileIndexHigh = FileIndexHigh_;
this.FileIndexLow = FileIndexLow_;
});
Win32FileAttributeData = $pkg.Win32FileAttributeData = $newType(0, $kindStruct, "syscall.Win32FileAttributeData", true, "syscall", true, function(FileAttributes_, CreationTime_, LastAccessTime_, LastWriteTime_, FileSizeHigh_, FileSizeLow_) {
this.$val = this;
if (arguments.length === 0) {
this.FileAttributes = 0;
this.CreationTime = new Filetime.ptr(0, 0);
this.LastAccessTime = new Filetime.ptr(0, 0);
this.LastWriteTime = new Filetime.ptr(0, 0);
this.FileSizeHigh = 0;
this.FileSizeLow = 0;
return;
}
this.FileAttributes = FileAttributes_;
this.CreationTime = CreationTime_;
this.LastAccessTime = LastAccessTime_;
this.LastWriteTime = LastWriteTime_;
this.FileSizeHigh = FileSizeHigh_;
this.FileSizeLow = FileSizeLow_;
});
WSABuf = $pkg.WSABuf = $newType(0, $kindStruct, "syscall.WSABuf", true, "syscall", true, function(Len_, Buf_) {
this.$val = this;
if (arguments.length === 0) {
this.Len = 0;
this.Buf = ptrType$10.nil;
return;
}
this.Len = Len_;
this.Buf = Buf_;
});
Protoent = $pkg.Protoent = $newType(0, $kindStruct, "syscall.Protoent", true, "syscall", true, function(Name_, Aliases_, Proto_) {
this.$val = this;
if (arguments.length === 0) {
this.Name = ptrType$10.nil;
this.Aliases = ptrType$26.nil;
this.Proto = 0;
return;
}
this.Name = Name_;
this.Aliases = Aliases_;
this.Proto = Proto_;
});
DNSSRVData = $pkg.DNSSRVData = $newType(0, $kindStruct, "syscall.DNSSRVData", true, "syscall", true, function(Target_, Priority_, Weight_, Port_, Pad_) {
this.$val = this;
if (arguments.length === 0) {
this.Target = ptrType$1.nil;
this.Priority = 0;
this.Weight = 0;
this.Port = 0;
this.Pad = 0;
return;
}
this.Target = Target_;
this.Priority = Priority_;
this.Weight = Weight_;
this.Port = Port_;
this.Pad = Pad_;
});
DNSPTRData = $pkg.DNSPTRData = $newType(0, $kindStruct, "syscall.DNSPTRData", true, "syscall", true, function(Host_) {
this.$val = this;
if (arguments.length === 0) {
this.Host = ptrType$1.nil;
return;
}
this.Host = Host_;
});
DNSMXData = $pkg.DNSMXData = $newType(0, $kindStruct, "syscall.DNSMXData", true, "syscall", true, function(NameExchange_, Preference_, Pad_) {
this.$val = this;
if (arguments.length === 0) {
this.NameExchange = ptrType$1.nil;
this.Preference = 0;
this.Pad = 0;
return;
}
this.NameExchange = NameExchange_;
this.Preference = Preference_;
this.Pad = Pad_;
});
DNSTXTData = $pkg.DNSTXTData = $newType(0, $kindStruct, "syscall.DNSTXTData", true, "syscall", true, function(StringCount_, StringArray_) {
this.$val = this;
if (arguments.length === 0) {
this.StringCount = 0;
this.StringArray = arrayType$14.zero();
return;
}
this.StringCount = StringCount_;
this.StringArray = StringArray_;
});
DNSRecord = $pkg.DNSRecord = $newType(0, $kindStruct, "syscall.DNSRecord", true, "syscall", true, function(Next_, Name_, Type_, Length_, Dw_, Ttl_, Reserved_, Data_) {
this.$val = this;
if (arguments.length === 0) {
this.Next = ptrType$37.nil;
this.Name = ptrType$1.nil;
this.Type = 0;
this.Length = 0;
this.Dw = 0;
this.Ttl = 0;
this.Reserved = 0;
this.Data = arrayType$15.zero();
return;
}
this.Next = Next_;
this.Name = Name_;
this.Type = Type_;
this.Length = Length_;
this.Dw = Dw_;
this.Ttl = Ttl_;
this.Reserved = Reserved_;
this.Data = Data_;
});
TransmitFileBuffers = $pkg.TransmitFileBuffers = $newType(0, $kindStruct, "syscall.TransmitFileBuffers", true, "syscall", true, function(Head_, HeadLength_, Tail_, TailLength_) {
this.$val = this;
if (arguments.length === 0) {
this.Head = 0;
this.HeadLength = 0;
this.Tail = 0;
this.TailLength = 0;
return;
}
this.Head = Head_;
this.HeadLength = HeadLength_;
this.Tail = Tail_;
this.TailLength = TailLength_;
});
CertContext = $pkg.CertContext = $newType(0, $kindStruct, "syscall.CertContext", true, "syscall", true, function(EncodingType_, EncodedCert_, Length_, CertInfo_, Store_) {
this.$val = this;
if (arguments.length === 0) {
this.EncodingType = 0;
this.EncodedCert = ptrType$10.nil;
this.Length = 0;
this.CertInfo = 0;
this.Store = 0;
return;
}
this.EncodingType = EncodingType_;
this.EncodedCert = EncodedCert_;
this.Length = Length_;
this.CertInfo = CertInfo_;
this.Store = Store_;
});
CertChainContext = $pkg.CertChainContext = $newType(0, $kindStruct, "syscall.CertChainContext", true, "syscall", true, function(Size_, TrustStatus_, ChainCount_, Chains_, LowerQualityChainCount_, LowerQualityChains_, HasRevocationFreshnessTime_, RevocationFreshnessTime_) {
this.$val = this;
if (arguments.length === 0) {
this.Size = 0;
this.TrustStatus = new CertTrustStatus.ptr(0, 0);
this.ChainCount = 0;
this.Chains = ptrType$41.nil;
this.LowerQualityChainCount = 0;
this.LowerQualityChains = ptrType$43.nil;
this.HasRevocationFreshnessTime = 0;
this.RevocationFreshnessTime = 0;
return;
}
this.Size = Size_;
this.TrustStatus = TrustStatus_;
this.ChainCount = ChainCount_;
this.Chains = Chains_;
this.LowerQualityChainCount = LowerQualityChainCount_;
this.LowerQualityChains = LowerQualityChains_;
this.HasRevocationFreshnessTime = HasRevocationFreshnessTime_;
this.RevocationFreshnessTime = RevocationFreshnessTime_;
});
CertSimpleChain = $pkg.CertSimpleChain = $newType(0, $kindStruct, "syscall.CertSimpleChain", true, "syscall", true, function(Size_, TrustStatus_, NumElements_, Elements_, TrustListInfo_, HasRevocationFreshnessTime_, RevocationFreshnessTime_) {
this.$val = this;
if (arguments.length === 0) {
this.Size = 0;
this.TrustStatus = new CertTrustStatus.ptr(0, 0);
this.NumElements = 0;
this.Elements = ptrType$45.nil;
this.TrustListInfo = 0;
this.HasRevocationFreshnessTime = 0;
this.RevocationFreshnessTime = 0;
return;
}
this.Size = Size_;
this.TrustStatus = TrustStatus_;
this.NumElements = NumElements_;
this.Elements = Elements_;
this.TrustListInfo = TrustListInfo_;
this.HasRevocationFreshnessTime = HasRevocationFreshnessTime_;
this.RevocationFreshnessTime = RevocationFreshnessTime_;
});
CertChainElement = $pkg.CertChainElement = $newType(0, $kindStruct, "syscall.CertChainElement", true, "syscall", true, function(Size_, CertContext_, TrustStatus_, RevocationInfo_, IssuanceUsage_, ApplicationUsage_, ExtendedErrorInfo_) {
this.$val = this;
if (arguments.length === 0) {
this.Size = 0;
this.CertContext = ptrType$24.nil;
this.TrustStatus = new CertTrustStatus.ptr(0, 0);
this.RevocationInfo = ptrType$46.nil;
this.IssuanceUsage = ptrType$47.nil;
this.ApplicationUsage = ptrType$47.nil;
this.ExtendedErrorInfo = ptrType$1.nil;
return;
}
this.Size = Size_;
this.CertContext = CertContext_;
this.TrustStatus = TrustStatus_;
this.RevocationInfo = RevocationInfo_;
this.IssuanceUsage = IssuanceUsage_;
this.ApplicationUsage = ApplicationUsage_;
this.ExtendedErrorInfo = ExtendedErrorInfo_;
});
CertRevocationInfo = $pkg.CertRevocationInfo = $newType(0, $kindStruct, "syscall.CertRevocationInfo", true, "syscall", true, function(Size_, RevocationResult_, RevocationOid_, OidSpecificInfo_, HasFreshnessTime_, FreshnessTime_, CrlInfo_) {
this.$val = this;
if (arguments.length === 0) {
this.Size = 0;
this.RevocationResult = 0;
this.RevocationOid = ptrType$10.nil;
this.OidSpecificInfo = 0;
this.HasFreshnessTime = 0;
this.FreshnessTime = 0;
this.CrlInfo = 0;
return;
}
this.Size = Size_;
this.RevocationResult = RevocationResult_;
this.RevocationOid = RevocationOid_;
this.OidSpecificInfo = OidSpecificInfo_;
this.HasFreshnessTime = HasFreshnessTime_;
this.FreshnessTime = FreshnessTime_;
this.CrlInfo = CrlInfo_;
});
CertTrustStatus = $pkg.CertTrustStatus = $newType(0, $kindStruct, "syscall.CertTrustStatus", true, "syscall", true, function(ErrorStatus_, InfoStatus_) {
this.$val = this;
if (arguments.length === 0) {
this.ErrorStatus = 0;
this.InfoStatus = 0;
return;
}
this.ErrorStatus = ErrorStatus_;
this.InfoStatus = InfoStatus_;
});
CertUsageMatch = $pkg.CertUsageMatch = $newType(0, $kindStruct, "syscall.CertUsageMatch", true, "syscall", true, function(Type_, Usage_) {
this.$val = this;
if (arguments.length === 0) {
this.Type = 0;
this.Usage = new CertEnhKeyUsage.ptr(0, ptrType$26.nil);
return;
}
this.Type = Type_;
this.Usage = Usage_;
});
CertEnhKeyUsage = $pkg.CertEnhKeyUsage = $newType(0, $kindStruct, "syscall.CertEnhKeyUsage", true, "syscall", true, function(Length_, UsageIdentifiers_) {
this.$val = this;
if (arguments.length === 0) {
this.Length = 0;
this.UsageIdentifiers = ptrType$26.nil;
return;
}
this.Length = Length_;
this.UsageIdentifiers = UsageIdentifiers_;
});
CertChainPara = $pkg.CertChainPara = $newType(0, $kindStruct, "syscall.CertChainPara", true, "syscall", true, function(Size_, RequestedUsage_, RequstedIssuancePolicy_, URLRetrievalTimeout_, CheckRevocationFreshnessTime_, RevocationFreshnessTime_, CacheResync_) {
this.$val = this;
if (arguments.length === 0) {
this.Size = 0;
this.RequestedUsage = new CertUsageMatch.ptr(0, new CertEnhKeyUsage.ptr(0, ptrType$26.nil));
this.RequstedIssuancePolicy = new CertUsageMatch.ptr(0, new CertEnhKeyUsage.ptr(0, ptrType$26.nil));
this.URLRetrievalTimeout = 0;
this.CheckRevocationFreshnessTime = 0;
this.RevocationFreshnessTime = 0;
this.CacheResync = ptrType$21.nil;
return;
}
this.Size = Size_;
this.RequestedUsage = RequestedUsage_;
this.RequstedIssuancePolicy = RequstedIssuancePolicy_;
this.URLRetrievalTimeout = URLRetrievalTimeout_;
this.CheckRevocationFreshnessTime = CheckRevocationFreshnessTime_;
this.RevocationFreshnessTime = RevocationFreshnessTime_;
this.CacheResync = CacheResync_;
});
CertChainPolicyPara = $pkg.CertChainPolicyPara = $newType(0, $kindStruct, "syscall.CertChainPolicyPara", true, "syscall", true, function(Size_, Flags_, ExtraPolicyPara_) {
this.$val = this;
if (arguments.length === 0) {
this.Size = 0;
this.Flags = 0;
this.ExtraPolicyPara = 0;
return;
}
this.Size = Size_;
this.Flags = Flags_;
this.ExtraPolicyPara = ExtraPolicyPara_;
});
SSLExtraCertChainPolicyPara = $pkg.SSLExtraCertChainPolicyPara = $newType(0, $kindStruct, "syscall.SSLExtraCertChainPolicyPara", true, "syscall", true, function(Size_, AuthType_, Checks_, ServerName_) {
this.$val = this;
if (arguments.length === 0) {
this.Size = 0;
this.AuthType = 0;
this.Checks = 0;
this.ServerName = ptrType$1.nil;
return;
}
this.Size = Size_;
this.AuthType = AuthType_;
this.Checks = Checks_;
this.ServerName = ServerName_;
});
CertChainPolicyStatus = $pkg.CertChainPolicyStatus = $newType(0, $kindStruct, "syscall.CertChainPolicyStatus", true, "syscall", true, function(Size_, Error_, ChainIndex_, ElementIndex_, ExtraPolicyStatus_) {
this.$val = this;
if (arguments.length === 0) {
this.Size = 0;
this.Error = 0;
this.ChainIndex = 0;
this.ElementIndex = 0;
this.ExtraPolicyStatus = 0;
return;
}
this.Size = Size_;
this.Error = Error_;
this.ChainIndex = ChainIndex_;
this.ElementIndex = ElementIndex_;
this.ExtraPolicyStatus = ExtraPolicyStatus_;
});
AddrinfoW = $pkg.AddrinfoW = $newType(0, $kindStruct, "syscall.AddrinfoW", true, "syscall", true, function(Flags_, Family_, Socktype_, Protocol_, Addrlen_, Canonname_, Addr_, Next_) {
this.$val = this;
if (arguments.length === 0) {
this.Flags = 0;
this.Family = 0;
this.Socktype = 0;
this.Protocol = 0;
this.Addrlen = 0;
this.Canonname = ptrType$1.nil;
this.Addr = 0;
this.Next = ptrType$48.nil;
return;
}
this.Flags = Flags_;
this.Family = Family_;
this.Socktype = Socktype_;
this.Protocol = Protocol_;
this.Addrlen = Addrlen_;
this.Canonname = Canonname_;
this.Addr = Addr_;
this.Next = Next_;
});
GUID = $pkg.GUID = $newType(0, $kindStruct, "syscall.GUID", true, "syscall", true, function(Data1_, Data2_, Data3_, Data4_) {
this.$val = this;
if (arguments.length === 0) {
this.Data1 = 0;
this.Data2 = 0;
this.Data3 = 0;
this.Data4 = arrayType$4.zero();
return;
}
this.Data1 = Data1_;
this.Data2 = Data2_;
this.Data3 = Data3_;
this.Data4 = Data4_;
});
TCPKeepalive = $pkg.TCPKeepalive = $newType(0, $kindStruct, "syscall.TCPKeepalive", true, "syscall", true, function(OnOff_, Time_, Interval_) {
this.$val = this;
if (arguments.length === 0) {
this.OnOff = 0;
this.Time = 0;
this.Interval = 0;
return;
}
this.OnOff = OnOff_;
this.Time = Time_;
this.Interval = Interval_;
});
symbolicLinkReparseBuffer = $pkg.symbolicLinkReparseBuffer = $newType(0, $kindStruct, "syscall.symbolicLinkReparseBuffer", true, "syscall", false, function(SubstituteNameOffset_, SubstituteNameLength_, PrintNameOffset_, PrintNameLength_, Flags_, PathBuffer_) {
this.$val = this;
if (arguments.length === 0) {
this.SubstituteNameOffset = 0;
this.SubstituteNameLength = 0;
this.PrintNameOffset = 0;
this.PrintNameLength = 0;
this.Flags = 0;
this.PathBuffer = arrayType$10.zero();
return;
}
this.SubstituteNameOffset = SubstituteNameOffset_;
this.SubstituteNameLength = SubstituteNameLength_;
this.PrintNameOffset = PrintNameOffset_;
this.PrintNameLength = PrintNameLength_;
this.Flags = Flags_;
this.PathBuffer = PathBuffer_;
});
mountPointReparseBuffer = $pkg.mountPointReparseBuffer = $newType(0, $kindStruct, "syscall.mountPointReparseBuffer", true, "syscall", false, function(SubstituteNameOffset_, SubstituteNameLength_, PrintNameOffset_, PrintNameLength_, PathBuffer_) {
this.$val = this;
if (arguments.length === 0) {
this.SubstituteNameOffset = 0;
this.SubstituteNameLength = 0;
this.PrintNameOffset = 0;
this.PrintNameLength = 0;
this.PathBuffer = arrayType$10.zero();
return;
}
this.SubstituteNameOffset = SubstituteNameOffset_;
this.SubstituteNameLength = SubstituteNameLength_;
this.PrintNameOffset = PrintNameOffset_;
this.PrintNameLength = PrintNameLength_;
this.PathBuffer = PathBuffer_;
});
reparseDataBuffer = $pkg.reparseDataBuffer = $newType(0, $kindStruct, "syscall.reparseDataBuffer", true, "syscall", false, function(ReparseTag_, ReparseDataLength_, Reserved_, reparseBuffer_) {
this.$val = this;
if (arguments.length === 0) {
this.ReparseTag = 0;
this.ReparseDataLength = 0;
this.Reserved = 0;
this.reparseBuffer = 0;
return;
}
this.ReparseTag = ReparseTag_;
this.ReparseDataLength = ReparseDataLength_;
this.Reserved = Reserved_;
this.reparseBuffer = reparseBuffer_;
});
sliceType = $sliceType($Uint8);
sliceType$2 = $sliceType($Uintptr);
structType = $structType("syscall", [{prop: "once", name: "once", exported: false, typ: sync.Once, tag: ""}, {prop: "addr", name: "addr", exported: false, typ: $Uintptr, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}]);
ptrType$1 = $ptrType($Uint16);
arrayType = $arrayType($Uint16, 8192);
ptrType$2 = $ptrType(arrayType);
arrayType$1 = $arrayType(ptrType$2, 8192);
ptrType$3 = $ptrType(arrayType$1);
ptrType$4 = $ptrType(DLL);
ptrType$5 = $ptrType(Proc);
ptrType$6 = $ptrType(LazyDLL);
sliceType$3 = $sliceType($Uint16);
sliceType$4 = $sliceType($Int32);
ptrType$7 = $ptrType(ptrType$1);
ptrType$10 = $ptrType($Uint8);
ptrType$11 = $ptrType(SecurityAttributes);
ptrType$12 = $ptrType($Uint32);
arrayType$2 = $arrayType($Uint8, 32);
ptrType$18 = $ptrType(Overlapped);
ptrType$19 = $ptrType($Int64);
ptrType$20 = $ptrType($Int32);
ptrType$21 = $ptrType(Filetime);
arrayType$3 = $arrayType($Uint8, 4);
arrayType$4 = $arrayType($Uint8, 8);
arrayType$5 = $arrayType($Uint8, 16);
arrayType$6 = $arrayType($Int8, 14);
arrayType$7 = $arrayType($Int8, 96);
ptrType$22 = $ptrType($Uintptr);
arrayType$8 = $arrayType($Uint16, 260);
arrayType$9 = $arrayType($Uint16, 14);
arrayType$10 = $arrayType($Uint16, 1);
ptrType$24 = $ptrType(CertContext);
ptrType$26 = $ptrType(ptrType$10);
ptrType$28 = $ptrType(Protoent);
ptrType$29 = $ptrType(DLLError);
ptrType$30 = $ptrType(LazyProc);
ptrType$31 = $ptrType(RawSockaddrAny);
ptrType$32 = $ptrType(SockaddrInet4);
ptrType$33 = $ptrType(SockaddrInet6);
ptrType$34 = $ptrType(SockaddrUnix);
arrayType$11 = $arrayType($Uint16, 259);
arrayType$12 = $arrayType($Uint16, 13);
arrayType$14 = $arrayType(ptrType$1, 1);
ptrType$37 = $ptrType(DNSRecord);
arrayType$15 = $arrayType($Uint8, 40);
ptrType$40 = $ptrType(CertSimpleChain);
ptrType$41 = $ptrType(ptrType$40);
ptrType$42 = $ptrType(CertChainContext);
ptrType$43 = $ptrType(ptrType$42);
ptrType$44 = $ptrType(CertChainElement);
ptrType$45 = $ptrType(ptrType$44);
ptrType$46 = $ptrType(CertRevocationInfo);
ptrType$47 = $ptrType(CertEnhKeyUsage);
ptrType$48 = $ptrType(AddrinfoW);
init = function() {
var $ptr;
$flushConsole = (function() {
var $ptr;
if (!((lineBuffer.$length === 0))) {
$global.console.log($externalize(($bytesToString(lineBuffer)), $String));
lineBuffer = sliceType.nil;
}
});
};
printWarning = function() {
var $ptr;
if (!warningPrinted) {
$global.console.error($externalize("warning: system calls not available, see https://github.com/gopherjs/gopherjs/blob/master/doc/syscalls.md", $String));
}
warningPrinted = true;
};
printToConsole = function(b) {
var $ptr, b, goPrintToConsole, i;
goPrintToConsole = $global.goPrintToConsole;
if (!(goPrintToConsole === undefined)) {
goPrintToConsole(b);
return;
}
lineBuffer = $appendSlice(lineBuffer, b);
while (true) {
i = indexByte(lineBuffer, 10);
if (i === -1) {
break;
}
$global.console.log($externalize(($bytesToString($subslice(lineBuffer, 0, i))), $String));
lineBuffer = $subslice(lineBuffer, (i + 1 >> 0));
}
};
use = function(p) {
var $ptr, p;
};
indexByte = function(s, c) {
var $ptr, _i, _ref, b, c, i, s;
_ref = s;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (b === c) {
return i;
}
_i++;
}
return -1;
};
Syscall = function(trap, nargs, a1, a2, a3) {
var $ptr, _tmp, _tmp$1, _tmp$2, a1, a2, a3, err, nargs, r1, r2, trap;
r1 = 0;
r2 = 0;
err = 0;
printWarning();
_tmp = ((minusOne >>> 0));
_tmp$1 = 0;
_tmp$2 = 536870913;
r1 = _tmp;
r2 = _tmp$1;
err = _tmp$2;
return [r1, r2, err];
};
$pkg.Syscall = Syscall;
Syscall6 = function(trap, nargs, a1, a2, a3, a4, a5, a6) {
var $ptr, _tmp, _tmp$1, _tmp$2, a1, a2, a3, a4, a5, a6, err, nargs, r1, r2, trap;
r1 = 0;
r2 = 0;
err = 0;
printWarning();
_tmp = ((minusOne >>> 0));
_tmp$1 = 0;
_tmp$2 = 536870913;
r1 = _tmp;
r2 = _tmp$1;
err = _tmp$2;
return [r1, r2, err];
};
$pkg.Syscall6 = Syscall6;
Syscall9 = function(trap, nargs, a1, a2, a3, a4, a5, a6, a7, a8, a9) {
var $ptr, _tmp, _tmp$1, _tmp$2, a1, a2, a3, a4, a5, a6, a7, a8, a9, err, nargs, r1, r2, trap;
r1 = 0;
r2 = 0;
err = 0;
printWarning();
_tmp = ((minusOne >>> 0));
_tmp$1 = 0;
_tmp$2 = 536870913;
r1 = _tmp;
r2 = _tmp$1;
err = _tmp$2;
return [r1, r2, err];
};
$pkg.Syscall9 = Syscall9;
Syscall12 = function(trap, nargs, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {
var $ptr, _tmp, _tmp$1, _tmp$2, a1, a10, a11, a12, a2, a3, a4, a5, a6, a7, a8, a9, err, nargs, r1, r2, trap;
r1 = 0;
r2 = 0;
err = 0;
printWarning();
_tmp = ((minusOne >>> 0));
_tmp$1 = 0;
_tmp$2 = 536870913;
r1 = _tmp;
r2 = _tmp$1;
err = _tmp$2;
return [r1, r2, err];
};
$pkg.Syscall12 = Syscall12;
Syscall15 = function(trap, nargs, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {
var $ptr, _tmp, _tmp$1, _tmp$2, a1, a10, a11, a12, a13, a14, a15, a2, a3, a4, a5, a6, a7, a8, a9, err, nargs, r1, r2, trap;
r1 = 0;
r2 = 0;
err = 0;
printWarning();
_tmp = ((minusOne >>> 0));
_tmp$1 = 0;
_tmp$2 = 536870913;
r1 = _tmp;
r2 = _tmp$1;
err = _tmp$2;
return [r1, r2, err];
};
$pkg.Syscall15 = Syscall15;
getprocaddress = function(handle, procname) {
var $ptr, _tmp, _tmp$1, err, handle, proc, procname;
proc = 0;
err = 0;
printWarning();
_tmp = ((minusOne >>> 0));
_tmp$1 = 536870913;
proc = _tmp;
err = _tmp$1;
return [proc, err];
};
LazyDLL.ptr.prototype.Load = function() {
var $ptr, d;
d = this;
return new DLLError.ptr($ifaceNil, "", "system calls not available, see https://github.com/gopherjs/gopherjs/blob/master/doc/syscalls.md");
};
LazyDLL.prototype.Load = function() { return this.$val.Load(); };
LazyProc.ptr.prototype.Find = function() {
var $ptr, p;
p = this;
return new DLLError.ptr($ifaceNil, "", "system calls not available, see https://github.com/gopherjs/gopherjs/blob/master/doc/syscalls.md");
};
LazyProc.prototype.Find = function() { return this.$val.Find(); };
getStdHandle = function(h) {
var $ptr, fd, h;
fd = 0;
if (h === -11) {
fd = 1;
return fd;
}
if (h === -12) {
fd = 2;
return fd;
}
fd = 0;
return fd;
};
GetConsoleMode = function(console, mode) {
var $ptr, console, err, mode, x;
err = $ifaceNil;
err = (x = new DummyError.ptr(), new x.constructor.elem(x));
return err;
};
$pkg.GetConsoleMode = GetConsoleMode;
WriteFile = function(handle, buf, done, overlapped) {
var $ptr, buf, done, err, handle, overlapped;
err = $ifaceNil;
if ((handle === 1) || (handle === 2)) {
printToConsole(buf);
done.$set(((buf.$length >>> 0)));
err = $ifaceNil;
return err;
}
printWarning();
err = $ifaceNil;
return err;
};
$pkg.WriteFile = WriteFile;
ExitProcess = function(exitcode) {
var $ptr, exitcode;
runtime.Goexit();
};
$pkg.ExitProcess = ExitProcess;
GetCommandLine = function() {
var $ptr, cmd;
cmd = ptrType$1.nil;
return cmd;
};
$pkg.GetCommandLine = GetCommandLine;
CommandLineToArgv = function(cmd, argc) {
var $ptr, _tmp, _tmp$1, argc, argv, cmd, err, x;
argv = ptrType$3.nil;
err = $ifaceNil;
_tmp = ptrType$3.nil;
_tmp$1 = (x = new DummyError.ptr(), new x.constructor.elem(x));
argv = _tmp;
err = _tmp$1;
return [argv, err];
};
$pkg.CommandLineToArgv = CommandLineToArgv;
Getenv = function(key) {
var $ptr, _tmp, _tmp$1, found, key, value;
value = "";
found = false;
_tmp = "";
_tmp$1 = false;
value = _tmp;
found = _tmp$1;
return [value, found];
};
$pkg.Getenv = Getenv;
DummyError.ptr.prototype.Error = function() {
var $ptr, e;
e = this;
return "";
};
DummyError.prototype.Error = function() { return this.$val.Error(); };
DLLError.ptr.prototype.Error = function() {
var $ptr, e;
e = this;
return e.Msg;
};
DLLError.prototype.Error = function() { return this.$val.Error(); };
DLL.ptr.prototype.FindProc = function(name) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, a, d, e, err, name, namep, p, proc;
proc = ptrType$5.nil;
err = $ifaceNil;
d = this;
_tuple = BytePtrFromString(name);
namep = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = ptrType$5.nil;
_tmp$1 = err;
proc = _tmp;
err = _tmp$1;
return [proc, err];
}
_tuple$1 = getprocaddress(((d.Handle >>> 0)), namep);
a = _tuple$1[0];
e = _tuple$1[1];
use((namep));
if (!((e === 0))) {
_tmp$2 = ptrType$5.nil;
_tmp$3 = new DLLError.ptr(new Errno(e), name, "Failed to find " + name + " procedure in " + d.Name + ": " + new Errno(e).Error());
proc = _tmp$2;
err = _tmp$3;
return [proc, err];
}
p = new Proc.ptr(d, name, a);
_tmp$4 = p;
_tmp$5 = $ifaceNil;
proc = _tmp$4;
err = _tmp$5;
return [proc, err];
};
DLL.prototype.FindProc = function(name) { return this.$val.FindProc(name); };
DLL.ptr.prototype.MustFindProc = function(name) {
var $ptr, _tuple, d, e, name, p;
d = this;
_tuple = d.FindProc(name);
p = _tuple[0];
e = _tuple[1];
if (!($interfaceIsEqual(e, $ifaceNil))) {
$panic(e);
}
return p;
};
DLL.prototype.MustFindProc = function(name) { return this.$val.MustFindProc(name); };
DLL.ptr.prototype.Release = function() {
var $ptr, d, err;
err = $ifaceNil;
d = this;
err = FreeLibrary(d.Handle);
return err;
};
DLL.prototype.Release = function() { return this.$val.Release(); };
Proc.ptr.prototype.Addr = function() {
var $ptr, p;
p = this;
return p.addr;
};
Proc.prototype.Addr = function() { return this.$val.Addr(); };
Proc.ptr.prototype.Call = function(a) {
var $ptr, _1, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$12, _tuple$13, _tuple$14, _tuple$15, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, a, lastErr, p, r1, r2;
r1 = 0;
r2 = 0;
lastErr = $ifaceNil;
p = this;
_1 = a.$length;
if (_1 === (0)) {
_tuple = Syscall(p.Addr(), ((a.$length >>> 0)), 0, 0, 0);
r1 = _tuple[0];
r2 = _tuple[1];
lastErr = new Errno(_tuple[2]);
return [r1, r2, lastErr];
} else if (_1 === (1)) {
_tuple$1 = Syscall(p.Addr(), ((a.$length >>> 0)), (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]), 0, 0);
r1 = _tuple$1[0];
r2 = _tuple$1[1];
lastErr = new Errno(_tuple$1[2]);
return [r1, r2, lastErr];
} else if (_1 === (2)) {
_tuple$2 = Syscall(p.Addr(), ((a.$length >>> 0)), (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]), (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]), 0);
r1 = _tuple$2[0];
r2 = _tuple$2[1];
lastErr = new Errno(_tuple$2[2]);
return [r1, r2, lastErr];
} else if (_1 === (3)) {
_tuple$3 = Syscall(p.Addr(), ((a.$length >>> 0)), (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]), (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]), (2 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 2]));
r1 = _tuple$3[0];
r2 = _tuple$3[1];
lastErr = new Errno(_tuple$3[2]);
return [r1, r2, lastErr];
} else if (_1 === (4)) {
_tuple$4 = Syscall6(p.Addr(), ((a.$length >>> 0)), (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]), (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]), (2 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 2]), (3 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 3]), 0, 0);
r1 = _tuple$4[0];
r2 = _tuple$4[1];
lastErr = new Errno(_tuple$4[2]);
return [r1, r2, lastErr];
} else if (_1 === (5)) {
_tuple$5 = Syscall6(p.Addr(), ((a.$length >>> 0)), (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]), (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]), (2 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 2]), (3 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 3]), (4 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 4]), 0);
r1 = _tuple$5[0];
r2 = _tuple$5[1];
lastErr = new Errno(_tuple$5[2]);
return [r1, r2, lastErr];
} else if (_1 === (6)) {
_tuple$6 = Syscall6(p.Addr(), ((a.$length >>> 0)), (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]), (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]), (2 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 2]), (3 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 3]), (4 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 4]), (5 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 5]));
r1 = _tuple$6[0];
r2 = _tuple$6[1];
lastErr = new Errno(_tuple$6[2]);
return [r1, r2, lastErr];
} else if (_1 === (7)) {
_tuple$7 = Syscall9(p.Addr(), ((a.$length >>> 0)), (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]), (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]), (2 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 2]), (3 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 3]), (4 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 4]), (5 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 5]), (6 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 6]), 0, 0);
r1 = _tuple$7[0];
r2 = _tuple$7[1];
lastErr = new Errno(_tuple$7[2]);
return [r1, r2, lastErr];
} else if (_1 === (8)) {
_tuple$8 = Syscall9(p.Addr(), ((a.$length >>> 0)), (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]), (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]), (2 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 2]), (3 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 3]), (4 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 4]), (5 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 5]), (6 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 6]), (7 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 7]), 0);
r1 = _tuple$8[0];
r2 = _tuple$8[1];
lastErr = new Errno(_tuple$8[2]);
return [r1, r2, lastErr];
} else if (_1 === (9)) {
_tuple$9 = Syscall9(p.Addr(), ((a.$length >>> 0)), (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]), (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]), (2 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 2]), (3 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 3]), (4 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 4]), (5 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 5]), (6 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 6]), (7 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 7]), (8 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 8]));
r1 = _tuple$9[0];
r2 = _tuple$9[1];
lastErr = new Errno(_tuple$9[2]);
return [r1, r2, lastErr];
} else if (_1 === (10)) {
_tuple$10 = Syscall12(p.Addr(), ((a.$length >>> 0)), (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]), (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]), (2 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 2]), (3 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 3]), (4 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 4]), (5 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 5]), (6 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 6]), (7 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 7]), (8 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 8]), (9 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 9]), 0, 0);
r1 = _tuple$10[0];
r2 = _tuple$10[1];
lastErr = new Errno(_tuple$10[2]);
return [r1, r2, lastErr];
} else if (_1 === (11)) {
_tuple$11 = Syscall12(p.Addr(), ((a.$length >>> 0)), (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]), (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]), (2 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 2]), (3 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 3]), (4 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 4]), (5 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 5]), (6 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 6]), (7 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 7]), (8 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 8]), (9 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 9]), (10 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 10]), 0);
r1 = _tuple$11[0];
r2 = _tuple$11[1];
lastErr = new Errno(_tuple$11[2]);
return [r1, r2, lastErr];
} else if (_1 === (12)) {
_tuple$12 = Syscall12(p.Addr(), ((a.$length >>> 0)), (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]), (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]), (2 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 2]), (3 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 3]), (4 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 4]), (5 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 5]), (6 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 6]), (7 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 7]), (8 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 8]), (9 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 9]), (10 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 10]), (11 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 11]));
r1 = _tuple$12[0];
r2 = _tuple$12[1];
lastErr = new Errno(_tuple$12[2]);
return [r1, r2, lastErr];
} else if (_1 === (13)) {
_tuple$13 = Syscall15(p.Addr(), ((a.$length >>> 0)), (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]), (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]), (2 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 2]), (3 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 3]), (4 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 4]), (5 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 5]), (6 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 6]), (7 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 7]), (8 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 8]), (9 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 9]), (10 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 10]), (11 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 11]), (12 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 12]), 0, 0);
r1 = _tuple$13[0];
r2 = _tuple$13[1];
lastErr = new Errno(_tuple$13[2]);
return [r1, r2, lastErr];
} else if (_1 === (14)) {
_tuple$14 = Syscall15(p.Addr(), ((a.$length >>> 0)), (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]), (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]), (2 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 2]), (3 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 3]), (4 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 4]), (5 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 5]), (6 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 6]), (7 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 7]), (8 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 8]), (9 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 9]), (10 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 10]), (11 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 11]), (12 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 12]), (13 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 13]), 0);
r1 = _tuple$14[0];
r2 = _tuple$14[1];
lastErr = new Errno(_tuple$14[2]);
return [r1, r2, lastErr];
} else if (_1 === (15)) {
_tuple$15 = Syscall15(p.Addr(), ((a.$length >>> 0)), (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]), (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]), (2 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 2]), (3 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 3]), (4 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 4]), (5 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 5]), (6 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 6]), (7 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 7]), (8 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 8]), (9 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 9]), (10 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 10]), (11 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 11]), (12 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 12]), (13 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 13]), (14 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 14]));
r1 = _tuple$15[0];
r2 = _tuple$15[1];
lastErr = new Errno(_tuple$15[2]);
return [r1, r2, lastErr];
} else {
$panic(new $String("Call " + p.Name + " with too many arguments " + itoa(a.$length) + "."));
}
};
Proc.prototype.Call = function(a) { return this.$val.Call(a); };
LazyDLL.ptr.prototype.mustLoad = function() {
var $ptr, d, e;
d = this;
e = d.Load();
if (!($interfaceIsEqual(e, $ifaceNil))) {
$panic(e);
}
};
LazyDLL.prototype.mustLoad = function() { return this.$val.mustLoad(); };
LazyDLL.ptr.prototype.Handle = function() {
var $ptr, d;
d = this;
d.mustLoad();
return ((d.dll.Handle >>> 0));
};
LazyDLL.prototype.Handle = function() { return this.$val.Handle(); };
LazyDLL.ptr.prototype.NewProc = function(name) {
var $ptr, d, name;
d = this;
return new LazyProc.ptr(new sync.Mutex.ptr(0, 0), name, d, ptrType$5.nil);
};
LazyDLL.prototype.NewProc = function(name) { return this.$val.NewProc(name); };
NewLazyDLL = function(name) {
var $ptr, name;
return new LazyDLL.ptr(new sync.Mutex.ptr(0, 0), ptrType$4.nil, name);
};
$pkg.NewLazyDLL = NewLazyDLL;
LazyProc.ptr.prototype.mustFind = function() {
var $ptr, e, p;
p = this;
e = p.Find();
if (!($interfaceIsEqual(e, $ifaceNil))) {
$panic(e);
}
};
LazyProc.prototype.mustFind = function() { return this.$val.mustFind(); };
LazyProc.ptr.prototype.Addr = function() {
var $ptr, p;
p = this;
p.mustFind();
return p.proc.Addr();
};
LazyProc.prototype.Addr = function() { return this.$val.Addr(); };
LazyProc.ptr.prototype.Call = function(a) {
var $ptr, _tuple, a, lastErr, p, r1, r2;
r1 = 0;
r2 = 0;
lastErr = $ifaceNil;
p = this;
p.mustFind();
_tuple = p.proc.Call(a);
r1 = _tuple[0];
r2 = _tuple[1];
lastErr = _tuple[2];
return [r1, r2, lastErr];
};
LazyProc.prototype.Call = function(a) { return this.$val.Call(a); };
CloseOnExec = function(fd) {
var $ptr, fd;
SetHandleInformation((fd), 1, 0);
};
$pkg.CloseOnExec = CloseOnExec;
FullPath = function(name) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, buf, err, n, name, p, path;
path = "";
err = $ifaceNil;
_tuple = UTF16PtrFromString(name);
p = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = "";
_tmp$1 = err;
path = _tmp;
err = _tmp$1;
return [path, err];
}
n = 100;
while (true) {
buf = $makeSlice(sliceType$3, n);
_tuple$1 = GetFullPathName(p, ((buf.$length >>> 0)), $indexPtr(buf.$array, buf.$offset + 0, ptrType$1), ptrType$7.nil);
n = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$2 = "";
_tmp$3 = err;
path = _tmp$2;
err = _tmp$3;
return [path, err];
}
if (n <= ((buf.$length >>> 0))) {
_tmp$4 = UTF16ToString($subslice(buf, 0, n));
_tmp$5 = $ifaceNil;
path = _tmp$4;
err = _tmp$5;
return [path, err];
}
}
};
$pkg.FullPath = FullPath;
msanRead = function(addr, len) {
var $ptr, addr, len;
};
msanWrite = function(addr, len) {
var $ptr, addr, len;
};
itoa = function(val) {
var $ptr, val;
if (val < 0) {
return "-" + uitoa(((-val >>> 0)));
}
return uitoa(((val >>> 0)));
};
uitoa = function(val) {
var $ptr, _q, _r, buf, i, val;
buf = arrayType$2.zero();
i = 31;
while (true) {
if (!(val >= 10)) { break; }
((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)));
i = i - (1) >> 0;
val = (_q = val / (10), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
}
((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = (((val + 48 >>> 0) << 24 >>> 24)));
return ($bytesToString($subslice(new sliceType(buf), i)));
};
ByteSliceFromString = function(s) {
var $ptr, a, i, s;
i = 0;
while (true) {
if (!(i < s.length)) { break; }
if (s.charCodeAt(i) === 0) {
return [sliceType.nil, new Errno(536870951)];
}
i = i + (1) >> 0;
}
a = $makeSlice(sliceType, (s.length + 1 >> 0));
$copyString(a, s);
return [a, $ifaceNil];
};
$pkg.ByteSliceFromString = ByteSliceFromString;
BytePtrFromString = function(s) {
var $ptr, _tuple, a, err, s;
_tuple = ByteSliceFromString(s);
a = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [ptrType$10.nil, err];
}
return [$indexPtr(a.$array, a.$offset + 0, ptrType$10), $ifaceNil];
};
$pkg.BytePtrFromString = BytePtrFromString;
StringToUTF16 = function(s) {
var $ptr, _tuple, a, err, s;
_tuple = UTF16FromString(s);
a = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$panic(new $String("syscall: string with NUL passed to StringToUTF16"));
}
return a;
};
$pkg.StringToUTF16 = StringToUTF16;
UTF16FromString = function(s) {
var $ptr, i, s;
i = 0;
while (true) {
if (!(i < s.length)) { break; }
if (s.charCodeAt(i) === 0) {
return [sliceType$3.nil, new Errno(536870951)];
}
i = i + (1) >> 0;
}
return [utf16.Encode((new sliceType$4($stringToRunes(s + "\x00")))), $ifaceNil];
};
$pkg.UTF16FromString = UTF16FromString;
UTF16ToString = function(s) {
var $ptr, _i, _ref, i, s, v;
_ref = s;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (v === 0) {
s = $subslice(s, 0, i);
break;
}
_i++;
}
return ($runesToString(utf16.Decode(s)));
};
$pkg.UTF16ToString = UTF16ToString;
StringToUTF16Ptr = function(s) {
var $ptr, s, x;
return (x = StringToUTF16(s), $indexPtr(x.$array, x.$offset + 0, ptrType$1));
};
$pkg.StringToUTF16Ptr = StringToUTF16Ptr;
UTF16PtrFromString = function(s) {
var $ptr, _tuple, a, err, s;
_tuple = UTF16FromString(s);
a = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [ptrType$1.nil, err];
}
return [$indexPtr(a.$array, a.$offset + 0, ptrType$1), $ifaceNil];
};
$pkg.UTF16PtrFromString = UTF16PtrFromString;
langid = function(pri, sub) {
var $ptr, pri, sub;
return ((((sub >>> 0)) << 10 >>> 0) | ((pri >>> 0))) >>> 0;
};
Errno.prototype.Error = function() {
var $ptr, _tuple, _tuple$1, b, e, err, flags, idx, n, x, x$1;
e = this.$val;
idx = (((e - 536870912 >>> 0) >> 0));
if (0 <= idx && idx < 131) {
return ((idx < 0 || idx >= errors$1.length) ? ($throwRuntimeError("index out of range"), undefined) : errors$1[idx]);
}
flags = 12800;
b = $makeSlice(sliceType$3, 300);
_tuple = formatMessage(flags, 0, ((e >>> 0)), langid(9, 1), b, ptrType$10.nil);
n = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tuple$1 = formatMessage(flags, 0, ((e >>> 0)), 0, b, ptrType$10.nil);
n = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return "winapi error #" + itoa(((e >> 0)));
}
}
while (true) {
if (!(n > 0 && (((x = n - 1 >>> 0, ((x < 0 || x >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x])) === 10) || ((x$1 = n - 1 >>> 0, ((x$1 < 0 || x$1 >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x$1])) === 13)))) { break; }
n = n - (1) >>> 0;
}
return ($runesToString(utf16.Decode($subslice(b, 0, n))));
};
$ptrType(Errno).prototype.Error = function() { return new Errno(this.$get()).Error(); };
Errno.prototype.Temporary = function() {
var $ptr, e;
e = this.$val;
return (e === 536870950) || (e === 536870971) || new Errno(e).Timeout();
};
$ptrType(Errno).prototype.Temporary = function() { return new Errno(this.$get()).Temporary(); };
Errno.prototype.Timeout = function() {
var $ptr, e;
e = this.$val;
return (e === 536870918) || (e === 536871039) || (e === 536871033);
};
$ptrType(Errno).prototype.Timeout = function() { return new Errno(this.$get()).Timeout(); };
Exit = function(code) {
var $ptr, code;
ExitProcess(((code >>> 0)));
};
$pkg.Exit = Exit;
makeInheritSa = function() {
var $ptr, sa;
sa = new SecurityAttributes.ptr(0, 0, 0);
sa.Length = 12;
sa.InheritHandle = 1;
return sa;
};
Open = function(path, mode, perm) {
var $ptr, _1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, access, createmode, e, err, fd, h, mode, path, pathp, perm, sa, sharemode;
fd = 0;
err = $ifaceNil;
if (path.length === 0) {
_tmp = 4294967295;
_tmp$1 = new Errno(2);
fd = _tmp;
err = _tmp$1;
return [fd, err];
}
_tuple = UTF16PtrFromString(path);
pathp = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$2 = 4294967295;
_tmp$3 = err;
fd = _tmp$2;
err = _tmp$3;
return [fd, err];
}
access = 0;
_1 = mode & 3;
if (_1 === (0)) {
access = 2147483648;
} else if (_1 === (1)) {
access = 1073741824;
} else if (_1 === (2)) {
access = 3221225472;
}
if (!(((mode & 64) === 0))) {
access = (access | (1073741824)) >>> 0;
}
if (!(((mode & 1024) === 0))) {
access = (access & ~(1073741824)) >>> 0;
access = (access | (4)) >>> 0;
}
sharemode = 3;
sa = ptrType$11.nil;
if ((mode & 524288) === 0) {
sa = makeInheritSa();
}
createmode = 0;
if (((mode & 192) === 192)) {
createmode = 1;
} else if (((mode & 576) === 576)) {
createmode = 2;
} else if (((mode & 64) === 64)) {
createmode = 4;
} else if (((mode & 512) === 512)) {
createmode = 5;
} else {
createmode = 3;
}
_tuple$1 = CreateFile(pathp, access, sharemode, sa, createmode, 128, 0);
h = _tuple$1[0];
e = _tuple$1[1];
_tmp$4 = h;
_tmp$5 = e;
fd = _tmp$4;
err = _tmp$5;
return [fd, err];
};
$pkg.Open = Open;
Read = function(fd, p) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, done, done$24ptr, e, err, fd, n, p;
n = 0;
err = $ifaceNil;
done = 0;
e = ReadFile(fd, p, (done$24ptr || (done$24ptr = new ptrType$12(function() { return done; }, function($v) { done = $v; }))), ptrType$18.nil);
if (!($interfaceIsEqual(e, $ifaceNil))) {
if ($interfaceIsEqual(e, new Errno(109))) {
_tmp = 0;
_tmp$1 = $ifaceNil;
n = _tmp;
err = _tmp$1;
return [n, err];
}
_tmp$2 = 0;
_tmp$3 = e;
n = _tmp$2;
err = _tmp$3;
return [n, err];
}
if (false) {
if (done > 0) {
race.WriteRange(($sliceToArray(p)), ((done >> 0)));
}
race.Acquire(((ioSync$24ptr || (ioSync$24ptr = new ptrType$19(function() { return ioSync; }, function($v) { ioSync = $v; })))));
}
if (false && done > 0) {
msanWrite(($sliceToArray(p)), ((done >> 0)));
}
_tmp$4 = ((done >> 0));
_tmp$5 = $ifaceNil;
n = _tmp$4;
err = _tmp$5;
return [n, err];
};
$pkg.Read = Read;
Write = function(fd, p) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, done, done$24ptr, e, err, fd, n, p;
n = 0;
err = $ifaceNil;
if (false) {
race.ReleaseMerge(((ioSync$24ptr || (ioSync$24ptr = new ptrType$19(function() { return ioSync; }, function($v) { ioSync = $v; })))));
}
done = 0;
e = WriteFile(fd, p, (done$24ptr || (done$24ptr = new ptrType$12(function() { return done; }, function($v) { done = $v; }))), ptrType$18.nil);
if (!($interfaceIsEqual(e, $ifaceNil))) {
_tmp = 0;
_tmp$1 = e;
n = _tmp;
err = _tmp$1;
return [n, err];
}
if (false && done > 0) {
race.ReadRange(($sliceToArray(p)), ((done >> 0)));
}
if (false && done > 0) {
msanRead(($sliceToArray(p)), ((done >> 0)));
}
_tmp$2 = ((done >> 0));
_tmp$3 = $ifaceNil;
n = _tmp$2;
err = _tmp$3;
return [n, err];
};
$pkg.Write = Write;
Seek = function(fd, offset, whence) {
var $ptr, _1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, e, err, fd, ft, hi, hi$24ptr, lo, newoffset, offset, rlo, w, whence, x, x$1, x$2;
newoffset = new $Int64(0, 0);
err = $ifaceNil;
w = 0;
_1 = whence;
if (_1 === (0)) {
w = 0;
} else if (_1 === (1)) {
w = 1;
} else if (_1 === (2)) {
w = 2;
}
hi = (((x = $shiftRightInt64(offset, 32), x.$low + ((x.$high >> 31) * 4294967296)) >> 0));
lo = (((offset.$low + ((offset.$high >> 31) * 4294967296)) >> 0));
_tuple = GetFileType(fd);
ft = _tuple[0];
if (ft === 3) {
_tmp = new $Int64(0, 0);
_tmp$1 = new Errno(536871015);
newoffset = _tmp;
err = _tmp$1;
return [newoffset, err];
}
_tuple$1 = SetFilePointer(fd, lo, (hi$24ptr || (hi$24ptr = new ptrType$20(function() { return hi; }, function($v) { hi = $v; }))), w);
rlo = _tuple$1[0];
e = _tuple$1[1];
if (!($interfaceIsEqual(e, $ifaceNil))) {
_tmp$2 = new $Int64(0, 0);
_tmp$3 = e;
newoffset = _tmp$2;
err = _tmp$3;
return [newoffset, err];
}
_tmp$4 = (x$1 = $shiftLeft64((new $Int64(0, hi)), 32), x$2 = (new $Int64(0, rlo)), new $Int64(x$1.$high + x$2.$high, x$1.$low + x$2.$low));
_tmp$5 = $ifaceNil;
newoffset = _tmp$4;
err = _tmp$5;
return [newoffset, err];
};
$pkg.Seek = Seek;
Ftruncate = function(fd, length) {
var $ptr, _tuple, _tuple$1, curoffset, e, err, fd, length, $deferred;
/* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
err = $ifaceNil;
_tuple = Seek(fd, new $Int64(0, 0), 1);
curoffset = _tuple[0];
e = _tuple[1];
if (!($interfaceIsEqual(e, $ifaceNil))) {
err = e;
return err;
}
$deferred.push([Seek, [fd, curoffset, 0]]);
_tuple$1 = Seek(fd, length, 0);
e = _tuple$1[1];
if (!($interfaceIsEqual(e, $ifaceNil))) {
err = e;
return err;
}
e = SetEndOfFile(fd);
if (!($interfaceIsEqual(e, $ifaceNil))) {
err = e;
return err;
}
err = $ifaceNil;
return err;
/* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return err; } }
};
$pkg.Ftruncate = Ftruncate;
Fsync = function(fd) {
var $ptr, err, fd;
err = $ifaceNil;
err = FlushFileBuffers(fd);
return err;
};
$pkg.Fsync = Fsync;
SockaddrInet4.ptr.prototype.sockaddr = function() {
var $ptr, _array, _struct, _view, i, p, sa, x, x$1, x$2;
sa = this;
if (sa.Port < 0 || sa.Port > 65535) {
return [0, 0, new Errno(536870951)];
}
sa.raw.Family = 2;
p = (((x = sa.raw, (x.$ptr_Port || (x.$ptr_Port = new ptrType$1(function() { return this.$target.Port; }, function($v) { this.$target.Port = $v; }, x))))));
p.nilCheck, p[0] = (((sa.Port >> 8 >> 0) << 24 >>> 24));
p.nilCheck, p[1] = ((sa.Port << 24 >>> 24));
i = 0;
while (true) {
if (!(i < 4)) { break; }
(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]))));
i = i + (1) >> 0;
}
_array = new Uint8Array(16);
return [(_array), 16, $ifaceNil];
};
SockaddrInet4.prototype.sockaddr = function() { return this.$val.sockaddr(); };
SockaddrInet6.ptr.prototype.sockaddr = function() {
var $ptr, _array, _struct, _view, i, p, sa, x, x$1, x$2;
sa = this;
if (sa.Port < 0 || sa.Port > 65535) {
return [0, 0, new Errno(536870951)];
}
sa.raw.Family = 23;
p = (((x = sa.raw, (x.$ptr_Port || (x.$ptr_Port = new ptrType$1(function() { return this.$target.Port; }, function($v) { this.$target.Port = $v; }, x))))));
p.nilCheck, p[0] = (((sa.Port >> 8 >> 0) << 24 >>> 24));
p.nilCheck, p[1] = ((sa.Port << 24 >>> 24));
sa.raw.Scope_id = sa.ZoneId;
i = 0;
while (true) {
if (!(i < 16)) { break; }
(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]))));
i = i + (1) >> 0;
}
_array = new Uint8Array(28);
return [(_array), 28, $ifaceNil];
};
SockaddrInet6.prototype.sockaddr = function() { return this.$val.sockaddr(); };
SockaddrUnix.ptr.prototype.sockaddr = function() {
var $ptr, sa;
sa = this;
return [0, 0, new Errno(536871042)];
};
SockaddrUnix.prototype.sockaddr = function() { return this.$val.sockaddr(); };
RawSockaddrAny.ptr.prototype.Sockaddr = function() {
var $ptr, _1, _array, _array$1, _array$2, _array$3, _struct, _struct$1, _struct$2, _struct$3, _view, _view$1, _view$2, _view$3, i, i$1, p, p$1, pp, pp$1, rsa, sa, sa$1, x, x$1, x$2, x$3;
rsa = this;
_1 = rsa.Addr.Family;
if (_1 === (1)) {
return [$ifaceNil, new Errno(536871042)];
} else if (_1 === (2)) {
_array$1 = new Uint8Array(112);
pp = ((_array = (_array$1), _struct = new RawSockaddrInet4.ptr(0, 0, arrayType$3.zero(), arrayType$4.zero()), _view = new DataView(_array.buffer, _array.byteOffset), _struct.Family = _view.getUint16(0, true), _struct.Port = _view.getUint16(2, true), _struct.Addr = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 4, _array.buffer.byteLength)), _struct.Zero = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 8, _array.buffer.byteLength)), _struct));
_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));
sa = new SockaddrInet4.ptr(0, arrayType$3.zero(), new RawSockaddrInet4.ptr(0, 0, arrayType$3.zero(), arrayType$4.zero()));
p = (((pp.$ptr_Port || (pp.$ptr_Port = new ptrType$1(function() { return this.$target.Port; }, function($v) { this.$target.Port = $v; }, pp)))));
sa.Port = ((((p.nilCheck, p[0]) >> 0)) << 8 >> 0) + (((p.nilCheck, p[1]) >> 0)) >> 0;
i = 0;
while (true) {
if (!(i < 4)) { break; }
(x$1 = sa.Addr, ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i] = (x = pp.Addr, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i]))));
i = i + (1) >> 0;
}
return [sa, $ifaceNil];
} else if (_1 === (23)) {
_array$3 = new Uint8Array(112);
pp$1 = ((_array$2 = (_array$3), _struct$2 = new RawSockaddrInet6.ptr(0, 0, 0, arrayType$5.zero(), 0), _view$2 = new DataView(_array$2.buffer, _array$2.byteOffset), _struct$2.Family = _view$2.getUint16(0, true), _struct$2.Port = _view$2.getUint16(2, true), _struct$2.Flowinfo = _view$2.getUint32(4, true), _struct$2.Addr = new ($nativeArray($kindUint8))(_array$2.buffer, $min(_array$2.byteOffset + 8, _array$2.buffer.byteLength)), _struct$2.Scope_id = _view$2.getUint32(24, true), _struct$2));
_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));
sa$1 = new SockaddrInet6.ptr(0, 0, arrayType$5.zero(), new RawSockaddrInet6.ptr(0, 0, 0, arrayType$5.zero(), 0));
p$1 = (((pp$1.$ptr_Port || (pp$1.$ptr_Port = new ptrType$1(function() { return this.$target.Port; }, function($v) { this.$target.Port = $v; }, pp$1)))));
sa$1.Port = ((((p$1.nilCheck, p$1[0]) >> 0)) << 8 >> 0) + (((p$1.nilCheck, p$1[1]) >> 0)) >> 0;
sa$1.ZoneId = pp$1.Scope_id;
i$1 = 0;
while (true) {
if (!(i$1 < 16)) { break; }
(x$3 = sa$1.Addr, ((i$1 < 0 || i$1 >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[i$1] = (x$2 = pp$1.Addr, ((i$1 < 0 || i$1 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i$1]))));
i$1 = i$1 + (1) >> 0;
}
return [sa$1, $ifaceNil];
}
return [$ifaceNil, new Errno(536870917)];
};
RawSockaddrAny.prototype.Sockaddr = function() { return this.$val.Sockaddr(); };
Socket = function(domain, typ, proto) {
var $ptr, _tmp, _tmp$1, _tuple, domain, err, fd, proto, typ;
fd = 0;
err = $ifaceNil;
if ((domain === 23) && $pkg.SocketDisableIPv6) {
_tmp = 4294967295;
_tmp$1 = new Errno(536870917);
fd = _tmp;
err = _tmp$1;
return [fd, err];
}
_tuple = socket(((domain >> 0)), ((typ >> 0)), ((proto >> 0)));
fd = _tuple[0];
err = _tuple[1];
return [fd, err];
};
$pkg.Socket = Socket;
SetsockoptInt = function(fd, level, opt, value) {
var $ptr, err, fd, level, opt, v, v$24ptr, value;
err = $ifaceNil;
v = ((value >> 0));
err = Setsockopt(fd, ((level >> 0)), ((opt >> 0)), (((v$24ptr || (v$24ptr = new ptrType$20(function() { return v; }, function($v) { v = $v; }))))), 4);
return err;
};
$pkg.SetsockoptInt = SetsockoptInt;
Bind = function(fd, sa) {
var $ptr, _r, _tuple, err, fd, n, ptr, sa, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
err = $ifaceNil;
_r = sa.sockaddr(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
ptr = _tuple[0];
n = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = err;
$s = -1; return err;
}
err = bind(fd, ptr, n);
$s = -1; return err;
/* */ } return; } if ($f === undefined) { $f = { $blk: Bind }; } $f.$ptr = $ptr; $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;
};
$pkg.Bind = Bind;
Connect = function(fd, sa) {
var $ptr, _r, _tuple, err, fd, n, ptr, sa, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
err = $ifaceNil;
_r = sa.sockaddr(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
ptr = _tuple[0];
n = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = err;
$s = -1; return err;
}
err = connect(fd, ptr, n);
$s = -1; return err;
/* */ } return; } if ($f === undefined) { $f = { $blk: Connect }; } $f.$ptr = $ptr; $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;
};
$pkg.Connect = Connect;
Getsockname = function(fd) {
var $ptr, _tuple, err, fd, l, l$24ptr, rsa, sa;
sa = $ifaceNil;
err = $ifaceNil;
rsa = new RawSockaddrAny.ptr(new RawSockaddr.ptr(0, arrayType$6.zero()), arrayType$7.zero());
l = 112;
err = getsockname(fd, rsa, (l$24ptr || (l$24ptr = new ptrType$20(function() { return l; }, function($v) { l = $v; }))));
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [sa, err];
}
_tuple = rsa.Sockaddr();
sa = _tuple[0];
err = _tuple[1];
return [sa, err];
};
$pkg.Getsockname = Getsockname;
Getpeername = function(fd) {
var $ptr, _tuple, err, fd, l, l$24ptr, rsa, sa;
sa = $ifaceNil;
err = $ifaceNil;
rsa = new RawSockaddrAny.ptr(new RawSockaddr.ptr(0, arrayType$6.zero()), arrayType$7.zero());
l = 112;
err = getpeername(fd, rsa, (l$24ptr || (l$24ptr = new ptrType$20(function() { return l; }, function($v) { l = $v; }))));
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [sa, err];
}
_tuple = rsa.Sockaddr();
sa = _tuple[0];
err = _tuple[1];
return [sa, err];
};
$pkg.Getpeername = Getpeername;
Listen = function(s, n) {
var $ptr, err, n, s;
err = $ifaceNil;
err = listen(s, ((n >> 0)));
return err;
};
$pkg.Listen = Listen;
Shutdown = function(fd, how) {
var $ptr, err, fd, how;
err = $ifaceNil;
err = shutdown(fd, ((how >> 0)));
return err;
};
$pkg.Shutdown = Shutdown;
WSASendto = function(s, bufs, bufcnt, sent, flags, to, overlapped, croutine) {
var $ptr, _array, _r, _struct, _tuple, _view, bufcnt, bufs, croutine, err, flags, l, overlapped, rsa, s, sent, to, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _array = $f._array; _r = $f._r; _struct = $f._struct; _tuple = $f._tuple; _view = $f._view; bufcnt = $f.bufcnt; bufs = $f.bufs; croutine = $f.croutine; err = $f.err; flags = $f.flags; l = $f.l; overlapped = $f.overlapped; rsa = $f.rsa; s = $f.s; sent = $f.sent; to = $f.to; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
err = $ifaceNil;
_r = to.sockaddr(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
rsa = _tuple[0];
l = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = err;
$s = -1; return err;
}
err = WSASendTo(s, bufs, bufcnt, sent, flags, ((_array = (rsa), _struct = new RawSockaddrAny.ptr(new RawSockaddr.ptr(0, arrayType$6.zero()), arrayType$7.zero()), _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)), _struct)), l, overlapped, croutine);
$s = -1; return err;
/* */ } return; } if ($f === undefined) { $f = { $blk: WSASendto }; } $f.$ptr = $ptr; $f._array = _array; $f._r = _r; $f._struct = _struct; $f._tuple = _tuple; $f._view = _view; $f.bufcnt = bufcnt; $f.bufs = bufs; $f.croutine = croutine; $f.err = err; $f.flags = flags; $f.l = l; $f.overlapped = overlapped; $f.rsa = rsa; $f.s = s; $f.sent = sent; $f.to = to; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.WSASendto = WSASendto;
LoadConnectEx = function() {
var $ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = connectExFunc.once.Do((function() {
var $ptr, _array, _struct, _tuple, _view, n, n$24ptr, s, $deferred;
/* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
s = 0;
_tuple = Socket(2, 1, 6);
s = _tuple[0];
connectExFunc.err = _tuple[1];
if (!($interfaceIsEqual(connectExFunc.err, $ifaceNil))) {
return;
}
$deferred.push([CloseHandle, [s]]);
n = 0;
_array = new Uint8Array(16);
connectExFunc.err = WSAIoctl(s, 3355443206, ((_array)), 16, (((connectExFunc.$ptr_addr || (connectExFunc.$ptr_addr = new ptrType$22(function() { return this.$target.addr; }, function($v) { this.$target.addr = $v; }, connectExFunc))))), 4, (n$24ptr || (n$24ptr = new ptrType$12(function() { return n; }, function($v) { n = $v; }))), ptrType$18.nil, 0);
_struct = $pkg.WSAID_CONNECTEX, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Data1 = _view.getUint32(0, true), _struct.Data2 = _view.getUint16(4, true), _struct.Data3 = _view.getUint16(6, true), _struct.Data4 = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 8, _array.buffer.byteLength));
/* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); }
})); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return connectExFunc.err;
/* */ } return; } if ($f === undefined) { $f = { $blk: LoadConnectEx }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.LoadConnectEx = LoadConnectEx;
connectEx = function(s, name, namelen, sendBuf, sendDataLen, bytesSent, overlapped) {
var $ptr, _array, _struct, _tuple, _view, bytesSent, e1, err, name, namelen, overlapped, r1, s, sendBuf, sendDataLen;
err = $ifaceNil;
_array = new Uint8Array(20);
_tuple = Syscall9(connectExFunc.addr, 7, ((s >>> 0)), (name), ((namelen >>> 0)), ((sendBuf)), ((sendDataLen >>> 0)), ((bytesSent)), ((_array)), 0, 0);
_struct = overlapped, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Internal = _view.getUintptr(0, true), _struct.InternalHigh = _view.getUintptr(4, true), _struct.Offset = _view.getUint32(8, true), _struct.OffsetHigh = _view.getUint32(12, true), _struct.HEvent = _view.getUintptr(16, true);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = (new Errno(e1));
} else {
err = new Errno(536870951);
}
}
return err;
};
ConnectEx = function(fd, sa, sendBuf, sendDataLen, bytesSent, overlapped) {
var $ptr, _r, _r$1, _r$2, _r$3, _tuple, bytesSent, err, fd, n, overlapped, ptr, sa, sendBuf, sendDataLen, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; bytesSent = $f.bytesSent; err = $f.err; fd = $f.fd; n = $f.n; overlapped = $f.overlapped; ptr = $f.ptr; sa = $f.sa; sendBuf = $f.sendBuf; sendDataLen = $f.sendDataLen; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = LoadConnectEx(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
_r$1 = err.Error(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$2 = errors.New("failed to find ConnectEx: " + _r$1); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$s = -1; return _r$2;
/* } */ case 3:
_r$3 = sa.sockaddr(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple = _r$3;
ptr = _tuple[0];
n = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
$s = -1; return connectEx(fd, ptr, n, sendBuf, sendDataLen, bytesSent, overlapped);
/* */ } return; } if ($f === undefined) { $f = { $blk: ConnectEx }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.bytesSent = bytesSent; $f.err = err; $f.fd = fd; $f.n = n; $f.overlapped = overlapped; $f.ptr = ptr; $f.sa = sa; $f.sendBuf = sendBuf; $f.sendDataLen = sendDataLen; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.ConnectEx = ConnectEx;
SetsockoptLinger = function(fd, level, opt, l) {
var $ptr, _array, _struct, _view, err, fd, l, level, opt, sys;
err = $ifaceNil;
sys = new sysLinger.ptr(((l.Onoff << 16 >>> 16)), ((l.Linger << 16 >>> 16)));
_array = new Uint8Array(4);
err = Setsockopt(fd, ((level >> 0)), ((opt >> 0)), ((_array)), 4);
_struct = sys, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Onoff = _view.getUint16(0, true), _struct.Linger = _view.getUint16(2, true);
return err;
};
$pkg.SetsockoptLinger = SetsockoptLinger;
Getpid = function() {
var $ptr, pid;
pid = 0;
pid = ((getCurrentProcessId() >> 0));
return pid;
};
$pkg.Getpid = Getpid;
FindFirstFile = function(name, data) {
var $ptr, _tuple, data, data1, err, handle, name;
handle = 0;
err = $ifaceNil;
data1 = new win32finddata1.ptr(0, new Filetime.ptr(0, 0), new Filetime.ptr(0, 0), new Filetime.ptr(0, 0), 0, 0, 0, 0, arrayType$8.zero(), arrayType$9.zero());
_tuple = findFirstFile1(name, data1);
handle = _tuple[0];
err = _tuple[1];
if ($interfaceIsEqual(err, $ifaceNil)) {
copyFindData(data, data1);
}
return [handle, err];
};
$pkg.FindFirstFile = FindFirstFile;
FindNextFile = function(handle, data) {
var $ptr, data, data1, err, handle;
err = $ifaceNil;
data1 = new win32finddata1.ptr(0, new Filetime.ptr(0, 0), new Filetime.ptr(0, 0), new Filetime.ptr(0, 0), 0, 0, 0, 0, arrayType$8.zero(), arrayType$9.zero());
err = findNextFile1(handle, data1);
if ($interfaceIsEqual(err, $ifaceNil)) {
copyFindData(data, data1);
}
return err;
};
$pkg.FindNextFile = FindNextFile;
Fchdir = function(fd) {
var $ptr, err, fd;
err = $ifaceNil;
err = new Errno(536871042);
return err;
};
$pkg.Fchdir = Fchdir;
Fchmod = function(fd, mode) {
var $ptr, err, fd, mode;
err = $ifaceNil;
err = new Errno(536871042);
return err;
};
$pkg.Fchmod = Fchmod;
Fchown = function(fd, uid, gid) {
var $ptr, err, fd, gid, uid;
err = $ifaceNil;
err = new Errno(536871042);
return err;
};
$pkg.Fchown = Fchown;
Readlink = function(path, buf) {
var $ptr, _1, _array, _array$1, _array$2, _q, _q$1, _q$2, _q$3, _struct, _struct$1, _struct$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _view, _view$1, _view$2, buf, bytesReturned, bytesReturned$24ptr, data, data$1, err, fd, n, p, p$1, path, rdb, rdbbuf, s, $deferred;
/* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
n = 0;
err = $ifaceNil;
_tuple = CreateFile(StringToUTF16Ptr(path), 2147483648, 0, ptrType$11.nil, 3, 35651584, 0);
fd = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = -1;
_tmp$1 = err;
n = _tmp;
err = _tmp$1;
return [n, err];
}
$deferred.push([CloseHandle, [fd]]);
rdbbuf = $makeSlice(sliceType, 16384);
bytesReturned = 0;
err = DeviceIoControl(fd, 589992, ptrType$10.nil, 0, $indexPtr(rdbbuf.$array, rdbbuf.$offset + 0, ptrType$10), ((rdbbuf.$length >>> 0)), (bytesReturned$24ptr || (bytesReturned$24ptr = new ptrType$12(function() { return bytesReturned; }, function($v) { bytesReturned = $v; }))), ptrType$18.nil);
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$2 = -1;
_tmp$3 = err;
n = _tmp$2;
err = _tmp$3;
return [n, err];
}
rdb = ((_array = ($sliceToArray(rdbbuf)), _struct = new reparseDataBuffer.ptr(0, 0, 0, 0), _view = new DataView(_array.buffer, _array.byteOffset), _struct.ReparseTag = _view.getUint32(0, true), _struct.ReparseDataLength = _view.getUint16(4, true), _struct.Reserved = _view.getUint16(6, true), _struct.reparseBuffer = _view.getUint8(8, true), _struct));
s = "";
_1 = rdb.ReparseTag;
if (_1 === (2684354572)) {
data = ((_array$1 = ((rdb.$ptr_reparseBuffer || (rdb.$ptr_reparseBuffer = new ptrType$10(function() { return this.$target.reparseBuffer; }, function($v) { this.$target.reparseBuffer = $v; }, rdb)))), _struct$1 = new symbolicLinkReparseBuffer.ptr(0, 0, 0, 0, 0, arrayType$10.zero()), _view$1 = new DataView(_array$1.buffer, _array$1.byteOffset), _struct$1.SubstituteNameOffset = _view$1.getUint16(0, true), _struct$1.SubstituteNameLength = _view$1.getUint16(2, true), _struct$1.PrintNameOffset = _view$1.getUint16(4, true), _struct$1.PrintNameLength = _view$1.getUint16(6, true), _struct$1.Flags = _view$1.getUint32(8, true), _struct$1.PathBuffer = new ($nativeArray($kindUint16))(_array$1.buffer, $min(_array$1.byteOffset + 12, _array$1.buffer.byteLength)), _struct$1));
p = (($sliceToArray(new sliceType(data.PathBuffer))));
s = UTF16ToString($subslice(new sliceType$3(p), (_q = data.SubstituteNameOffset / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")), (_q$1 = ((data.SubstituteNameOffset + data.SubstituteNameLength << 16 >>> 16)) / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero"))));
if (((data.Flags & 1) >>> 0) === 0) {
if (s.length >= 4 && $substring(s, 0, 4) === "\\??\\") {
s = $substring(s, 4);
if (s.length >= 2 && (s.charCodeAt(1) === 58)) {
} else if (s.length >= 4 && $substring(s, 0, 4) === "UNC\\") {
s = "\\\\" + $substring(s, 4);
}
} else {
}
}
} else if (_1 === (2684354563)) {
data$1 = ((_array$2 = ((rdb.$ptr_reparseBuffer || (rdb.$ptr_reparseBuffer = new ptrType$10(function() { return this.$target.reparseBuffer; }, function($v) { this.$target.reparseBuffer = $v; }, rdb)))), _struct$2 = new mountPointReparseBuffer.ptr(0, 0, 0, 0, arrayType$10.zero()), _view$2 = new DataView(_array$2.buffer, _array$2.byteOffset), _struct$2.SubstituteNameOffset = _view$2.getUint16(0, true), _struct$2.SubstituteNameLength = _view$2.getUint16(2, true), _struct$2.PrintNameOffset = _view$2.getUint16(4, true), _struct$2.PrintNameLength = _view$2.getUint16(6, true), _struct$2.PathBuffer = new ($nativeArray($kindUint16))(_array$2.buffer, $min(_array$2.byteOffset + 8, _array$2.buffer.byteLength)), _struct$2));
p$1 = (($sliceToArray(new sliceType(data$1.PathBuffer))));
s = UTF16ToString($subslice(new sliceType$3(p$1), (_q$2 = data$1.SubstituteNameOffset / 2, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >>> 0 : $throwRuntimeError("integer divide by zero")), (_q$3 = ((data$1.SubstituteNameOffset + data$1.SubstituteNameLength << 16 >>> 16)) / 2, (_q$3 === _q$3 && _q$3 !== 1/0 && _q$3 !== -1/0) ? _q$3 >>> 0 : $throwRuntimeError("integer divide by zero"))));
if (s.length >= 4 && $substring(s, 0, 4) === "\\??\\") {
s = $substring(s, 4);
} else {
}
} else {
_tmp$4 = -1;
_tmp$5 = new Errno(2);
n = _tmp$4;
err = _tmp$5;
return [n, err];
}
n = $copySlice(buf, (new sliceType($stringToBytes(s))));
_tmp$6 = n;
_tmp$7 = $ifaceNil;
n = _tmp$6;
err = _tmp$7;
return [n, err];
/* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [n, err]; } }
};
$pkg.Readlink = Readlink;
errnoErr = function(e) {
var $ptr, _1, e;
_1 = e;
if (_1 === (0)) {
return $ifaceNil;
} else if (_1 === (997)) {
return errERROR_IO_PENDING;
}
return new Errno(e);
};
FreeLibrary = function(handle) {
var $ptr, _tuple, e1, err, handle, r1;
err = $ifaceNil;
_tuple = Syscall(procFreeLibrary.Addr(), 1, ((handle >>> 0)), 0, 0);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.FreeLibrary = FreeLibrary;
formatMessage = function(flags, msgsrc, msgid, langid$1, buf, args) {
var $ptr, _p0, _tuple, args, buf, e1, err, flags, langid$1, msgid, msgsrc, n, r0;
n = 0;
err = $ifaceNil;
_p0 = ptrType$1.nil;
if (buf.$length > 0) {
_p0 = $indexPtr(buf.$array, buf.$offset + 0, ptrType$1);
}
_tuple = Syscall9(procFormatMessageW.Addr(), 7, ((flags >>> 0)), (msgsrc), ((msgid >>> 0)), ((langid$1 >>> 0)), ((_p0)), ((buf.$length >>> 0)), ((args)), 0, 0);
r0 = _tuple[0];
e1 = _tuple[2];
n = ((r0 >>> 0));
if (n === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return [n, err];
};
CreateFile = function(name, access, mode, sa, createmode, attrs, templatefile) {
var $ptr, _array, _struct, _tuple, _view, access, attrs, createmode, e1, err, handle, mode, name, r0, sa, templatefile;
handle = 0;
err = $ifaceNil;
_array = new Uint8Array(12);
_tuple = Syscall9(procCreateFileW.Addr(), 7, ((name)), ((access >>> 0)), ((mode >>> 0)), ((_array)), ((createmode >>> 0)), ((attrs >>> 0)), ((templatefile >>> 0)), 0, 0);
_struct = sa, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Length = _view.getUint32(0, true), _struct.SecurityDescriptor = _view.getUintptr(4, true), _struct.InheritHandle = _view.getUint32(8, true);
r0 = _tuple[0];
e1 = _tuple[2];
handle = ((r0 >>> 0));
if (handle === 4294967295) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return [handle, err];
};
$pkg.CreateFile = CreateFile;
ReadFile = function(handle, buf, done, overlapped) {
var $ptr, _array, _p0, _struct, _tuple, _view, buf, done, e1, err, handle, overlapped, r1;
err = $ifaceNil;
_p0 = ptrType$10.nil;
if (buf.$length > 0) {
_p0 = $indexPtr(buf.$array, buf.$offset + 0, ptrType$10);
}
_array = new Uint8Array(20);
_tuple = Syscall6(procReadFile.Addr(), 5, ((handle >>> 0)), ((_p0)), ((buf.$length >>> 0)), ((done)), ((_array)), 0);
_struct = overlapped, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Internal = _view.getUintptr(0, true), _struct.InternalHigh = _view.getUintptr(4, true), _struct.Offset = _view.getUint32(8, true), _struct.OffsetHigh = _view.getUint32(12, true), _struct.HEvent = _view.getUintptr(16, true);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.ReadFile = ReadFile;
SetFilePointer = function(handle, lowoffset, highoffsetptr, whence) {
var $ptr, _tuple, e1, err, handle, highoffsetptr, lowoffset, newlowoffset, r0, whence;
newlowoffset = 0;
err = $ifaceNil;
_tuple = Syscall6(procSetFilePointer.Addr(), 4, ((handle >>> 0)), ((lowoffset >>> 0)), ((highoffsetptr)), ((whence >>> 0)), 0, 0);
r0 = _tuple[0];
e1 = _tuple[2];
newlowoffset = ((r0 >>> 0));
if (newlowoffset === 4294967295) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return [newlowoffset, err];
};
$pkg.SetFilePointer = SetFilePointer;
CloseHandle = function(handle) {
var $ptr, _tuple, e1, err, handle, r1;
err = $ifaceNil;
_tuple = Syscall(procCloseHandle.Addr(), 1, ((handle >>> 0)), 0, 0);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.CloseHandle = CloseHandle;
findFirstFile1 = function(name, data) {
var $ptr, _array, _struct, _tuple, _view, data, e1, err, handle, name, r0;
handle = 0;
err = $ifaceNil;
_array = new Uint8Array(592);
_tuple = Syscall(procFindFirstFileW.Addr(), 2, ((name)), ((_array)), 0);
_struct = data, _view = new DataView(_array.buffer, _array.byteOffset), _struct.FileAttributes = _view.getUint32(0, true), _struct.CreationTime.LowDateTime = _view.getUint32(4, true), _struct.CreationTime.HighDateTime = _view.getUint32(8, true), _struct.LastAccessTime.LowDateTime = _view.getUint32(12, true), _struct.LastAccessTime.HighDateTime = _view.getUint32(16, true), _struct.LastWriteTime.LowDateTime = _view.getUint32(20, true), _struct.LastWriteTime.HighDateTime = _view.getUint32(24, true), _struct.FileSizeHigh = _view.getUint32(28, true), _struct.FileSizeLow = _view.getUint32(32, true), _struct.Reserved0 = _view.getUint32(36, true), _struct.Reserved1 = _view.getUint32(40, true), _struct.FileName = new ($nativeArray($kindUint16))(_array.buffer, $min(_array.byteOffset + 44, _array.buffer.byteLength)), _struct.AlternateFileName = new ($nativeArray($kindUint16))(_array.buffer, $min(_array.byteOffset + 564, _array.buffer.byteLength));
r0 = _tuple[0];
e1 = _tuple[2];
handle = ((r0 >>> 0));
if (handle === 4294967295) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return [handle, err];
};
findNextFile1 = function(handle, data) {
var $ptr, _array, _struct, _tuple, _view, data, e1, err, handle, r1;
err = $ifaceNil;
_array = new Uint8Array(592);
_tuple = Syscall(procFindNextFileW.Addr(), 2, ((handle >>> 0)), ((_array)), 0);
_struct = data, _view = new DataView(_array.buffer, _array.byteOffset), _struct.FileAttributes = _view.getUint32(0, true), _struct.CreationTime.LowDateTime = _view.getUint32(4, true), _struct.CreationTime.HighDateTime = _view.getUint32(8, true), _struct.LastAccessTime.LowDateTime = _view.getUint32(12, true), _struct.LastAccessTime.HighDateTime = _view.getUint32(16, true), _struct.LastWriteTime.LowDateTime = _view.getUint32(20, true), _struct.LastWriteTime.HighDateTime = _view.getUint32(24, true), _struct.FileSizeHigh = _view.getUint32(28, true), _struct.FileSizeLow = _view.getUint32(32, true), _struct.Reserved0 = _view.getUint32(36, true), _struct.Reserved1 = _view.getUint32(40, true), _struct.FileName = new ($nativeArray($kindUint16))(_array.buffer, $min(_array.byteOffset + 44, _array.buffer.byteLength)), _struct.AlternateFileName = new ($nativeArray($kindUint16))(_array.buffer, $min(_array.byteOffset + 564, _array.buffer.byteLength));
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
FindClose = function(handle) {
var $ptr, _tuple, e1, err, handle, r1;
err = $ifaceNil;
_tuple = Syscall(procFindClose.Addr(), 1, ((handle >>> 0)), 0, 0);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.FindClose = FindClose;
GetFileInformationByHandle = function(handle, data) {
var $ptr, _array, _struct, _tuple, _view, data, e1, err, handle, r1;
err = $ifaceNil;
_array = new Uint8Array(52);
_tuple = Syscall(procGetFileInformationByHandle.Addr(), 2, ((handle >>> 0)), ((_array)), 0);
_struct = data, _view = new DataView(_array.buffer, _array.byteOffset), _struct.FileAttributes = _view.getUint32(0, true), _struct.CreationTime.LowDateTime = _view.getUint32(4, true), _struct.CreationTime.HighDateTime = _view.getUint32(8, true), _struct.LastAccessTime.LowDateTime = _view.getUint32(12, true), _struct.LastAccessTime.HighDateTime = _view.getUint32(16, true), _struct.LastWriteTime.LowDateTime = _view.getUint32(20, true), _struct.LastWriteTime.HighDateTime = _view.getUint32(24, true), _struct.VolumeSerialNumber = _view.getUint32(28, true), _struct.FileSizeHigh = _view.getUint32(32, true), _struct.FileSizeLow = _view.getUint32(36, true), _struct.NumberOfLinks = _view.getUint32(40, true), _struct.FileIndexHigh = _view.getUint32(44, true), _struct.FileIndexLow = _view.getUint32(48, true);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.GetFileInformationByHandle = GetFileInformationByHandle;
RemoveDirectory = function(path) {
var $ptr, _tuple, e1, err, path, r1;
err = $ifaceNil;
_tuple = Syscall(procRemoveDirectoryW.Addr(), 1, ((path)), 0, 0);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.RemoveDirectory = RemoveDirectory;
DeleteFile = function(path) {
var $ptr, _tuple, e1, err, path, r1;
err = $ifaceNil;
_tuple = Syscall(procDeleteFileW.Addr(), 1, ((path)), 0, 0);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.DeleteFile = DeleteFile;
SetEndOfFile = function(handle) {
var $ptr, _tuple, e1, err, handle, r1;
err = $ifaceNil;
_tuple = Syscall(procSetEndOfFile.Addr(), 1, ((handle >>> 0)), 0, 0);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.SetEndOfFile = SetEndOfFile;
CancelIo = function(s) {
var $ptr, _tuple, e1, err, r1, s;
err = $ifaceNil;
_tuple = Syscall(procCancelIo.Addr(), 1, ((s >>> 0)), 0, 0);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.CancelIo = CancelIo;
CancelIoEx = function(s, o) {
var $ptr, _array, _struct, _tuple, _view, e1, err, o, r1, s;
err = $ifaceNil;
_array = new Uint8Array(20);
_tuple = Syscall(procCancelIoEx.Addr(), 2, ((s >>> 0)), ((_array)), 0);
_struct = o, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Internal = _view.getUintptr(0, true), _struct.InternalHigh = _view.getUintptr(4, true), _struct.Offset = _view.getUint32(8, true), _struct.OffsetHigh = _view.getUint32(12, true), _struct.HEvent = _view.getUintptr(16, true);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.CancelIoEx = CancelIoEx;
GetTempPath = function(buflen, buf) {
var $ptr, _tuple, buf, buflen, e1, err, n, r0;
n = 0;
err = $ifaceNil;
_tuple = Syscall(procGetTempPathW.Addr(), 2, ((buflen >>> 0)), ((buf)), 0);
r0 = _tuple[0];
e1 = _tuple[2];
n = ((r0 >>> 0));
if (n === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return [n, err];
};
$pkg.GetTempPath = GetTempPath;
GetFileType = function(filehandle) {
var $ptr, _tuple, e1, err, filehandle, n, r0;
n = 0;
err = $ifaceNil;
_tuple = Syscall(procGetFileType.Addr(), 1, ((filehandle >>> 0)), 0, 0);
r0 = _tuple[0];
e1 = _tuple[2];
n = ((r0 >>> 0));
if (n === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return [n, err];
};
$pkg.GetFileType = GetFileType;
GetFileAttributes = function(name) {
var $ptr, _tuple, attrs, e1, err, name, r0;
attrs = 0;
err = $ifaceNil;
_tuple = Syscall(procGetFileAttributesW.Addr(), 1, ((name)), 0, 0);
r0 = _tuple[0];
e1 = _tuple[2];
attrs = ((r0 >>> 0));
if (attrs === 4294967295) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return [attrs, err];
};
$pkg.GetFileAttributes = GetFileAttributes;
SetFileAttributes = function(name, attrs) {
var $ptr, _tuple, attrs, e1, err, name, r1;
err = $ifaceNil;
_tuple = Syscall(procSetFileAttributesW.Addr(), 2, ((name)), ((attrs >>> 0)), 0);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.SetFileAttributes = SetFileAttributes;
GetFileAttributesEx = function(name, level, info) {
var $ptr, _tuple, e1, err, info, level, name, r1;
err = $ifaceNil;
_tuple = Syscall(procGetFileAttributesExW.Addr(), 3, ((name)), ((level >>> 0)), ((info)));
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.GetFileAttributesEx = GetFileAttributesEx;
LocalFree = function(hmem) {
var $ptr, _tuple, e1, err, handle, hmem, r0;
handle = 0;
err = $ifaceNil;
_tuple = Syscall(procLocalFree.Addr(), 1, ((hmem >>> 0)), 0, 0);
r0 = _tuple[0];
e1 = _tuple[2];
handle = ((r0 >>> 0));
if (!((handle === 0))) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return [handle, err];
};
$pkg.LocalFree = LocalFree;
SetHandleInformation = function(handle, mask, flags) {
var $ptr, _tuple, e1, err, flags, handle, mask, r1;
err = $ifaceNil;
_tuple = Syscall(procSetHandleInformation.Addr(), 3, ((handle >>> 0)), ((mask >>> 0)), ((flags >>> 0)));
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.SetHandleInformation = SetHandleInformation;
FlushFileBuffers = function(handle) {
var $ptr, _tuple, e1, err, handle, r1;
err = $ifaceNil;
_tuple = Syscall(procFlushFileBuffers.Addr(), 1, ((handle >>> 0)), 0, 0);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.FlushFileBuffers = FlushFileBuffers;
GetFullPathName = function(path, buflen, buf, fname) {
var $ptr, _tuple, buf, buflen, e1, err, fname, n, path, r0;
n = 0;
err = $ifaceNil;
_tuple = Syscall6(procGetFullPathNameW.Addr(), 4, ((path)), ((buflen >>> 0)), ((buf)), ((fname)), 0, 0);
r0 = _tuple[0];
e1 = _tuple[2];
n = ((r0 >>> 0));
if (n === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return [n, err];
};
$pkg.GetFullPathName = GetFullPathName;
TransmitFile = function(s, handle, bytesToWrite, bytsPerSend, overlapped, transmitFileBuf, flags) {
var $ptr, _array, _array$1, _struct, _struct$1, _tuple, _view, _view$1, bytesToWrite, bytsPerSend, e1, err, flags, handle, overlapped, r1, s, transmitFileBuf;
err = $ifaceNil;
_array = new Uint8Array(20);
_array$1 = new Uint8Array(16);
_struct = overlapped, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Internal = _view.getUintptr(0, true), _struct.InternalHigh = _view.getUintptr(4, true), _struct.Offset = _view.getUint32(8, true), _struct.OffsetHigh = _view.getUint32(12, true), _struct.HEvent = _view.getUintptr(16, true);
_tuple = Syscall9(procTransmitFile.Addr(), 7, ((s >>> 0)), ((handle >>> 0)), ((bytesToWrite >>> 0)), ((bytsPerSend >>> 0)), ((_array)), ((_array$1)), ((flags >>> 0)), 0, 0);
_struct$1 = transmitFileBuf, _view$1 = new DataView(_array$1.buffer, _array$1.byteOffset), _struct$1.Head = _view$1.getUintptr(0, true), _struct$1.HeadLength = _view$1.getUint32(4, true), _struct$1.Tail = _view$1.getUintptr(8, true), _struct$1.TailLength = _view$1.getUint32(12, true);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.TransmitFile = TransmitFile;
CertOpenStore = function(storeProvider, msgAndCertEncodingType, cryptProv, flags, para) {
var $ptr, _tuple, cryptProv, e1, err, flags, handle, msgAndCertEncodingType, para, r0, storeProvider;
handle = 0;
err = $ifaceNil;
_tuple = Syscall6(procCertOpenStore.Addr(), 5, (storeProvider), ((msgAndCertEncodingType >>> 0)), (cryptProv), ((flags >>> 0)), (para), 0);
r0 = _tuple[0];
e1 = _tuple[2];
handle = ((r0 >>> 0));
if (handle === 4294967295) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return [handle, err];
};
$pkg.CertOpenStore = CertOpenStore;
CertAddCertificateContextToStore = function(store, certContext, addDisposition, storeContext) {
var $ptr, _array, _struct, _tuple, _view, addDisposition, certContext, e1, err, r1, store, storeContext;
err = $ifaceNil;
_array = new Uint8Array(20);
_tuple = Syscall6(procCertAddCertificateContextToStore.Addr(), 4, ((store >>> 0)), ((_array)), ((addDisposition >>> 0)), ((storeContext)), 0, 0);
_struct = certContext, _view = new DataView(_array.buffer, _array.byteOffset), _struct.EncodingType = _view.getUint32(0, true), _struct.Length = _view.getUint32(8, true), _struct.CertInfo = _view.getUintptr(12, true), _struct.Store = _view.getUintptr(16, true);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.CertAddCertificateContextToStore = CertAddCertificateContextToStore;
CertCloseStore = function(store, flags) {
var $ptr, _tuple, e1, err, flags, r1, store;
err = $ifaceNil;
_tuple = Syscall(procCertCloseStore.Addr(), 2, ((store >>> 0)), ((flags >>> 0)), 0);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.CertCloseStore = CertCloseStore;
CertGetCertificateChain = function(engine, leaf, time, additionalStore, para, flags, reserved, chainCtx) {
var $ptr, _array, _array$1, _array$2, _struct, _struct$1, _struct$2, _tuple, _view, _view$1, _view$2, additionalStore, chainCtx, e1, engine, err, flags, leaf, para, r1, reserved, time;
err = $ifaceNil;
_array = new Uint8Array(20);
_array$1 = new Uint8Array(8);
_struct = leaf, _view = new DataView(_array.buffer, _array.byteOffset), _struct.EncodingType = _view.getUint32(0, true), _struct.Length = _view.getUint32(8, true), _struct.CertInfo = _view.getUintptr(12, true), _struct.Store = _view.getUintptr(16, true);
_array$2 = new Uint8Array(44);
_struct$1 = time, _view$1 = new DataView(_array$1.buffer, _array$1.byteOffset), _struct$1.LowDateTime = _view$1.getUint32(0, true), _struct$1.HighDateTime = _view$1.getUint32(4, true);
_tuple = Syscall9(procCertGetCertificateChain.Addr(), 8, ((engine >>> 0)), ((_array)), ((_array$1)), ((additionalStore >>> 0)), ((_array$2)), ((flags >>> 0)), (reserved), ((chainCtx)), 0);
_struct$2 = para, _view$2 = new DataView(_array$2.buffer, _array$2.byteOffset), _struct$2.Size = _view$2.getUint32(0, true), _struct$2.RequestedUsage.Type = _view$2.getUint32(4, true), _struct$2.RequestedUsage.Usage.Length = _view$2.getUint32(8, true), _struct$2.RequstedIssuancePolicy.Type = _view$2.getUint32(16, true), _struct$2.RequstedIssuancePolicy.Usage.Length = _view$2.getUint32(20, true), _struct$2.URLRetrievalTimeout = _view$2.getUint32(28, true), _struct$2.CheckRevocationFreshnessTime = _view$2.getUint32(32, true), _struct$2.RevocationFreshnessTime = _view$2.getUint32(36, true);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.CertGetCertificateChain = CertGetCertificateChain;
CertFreeCertificateChain = function(ctx) {
var $ptr, _array, _struct, _view, ctx;
_array = new Uint8Array(36);
Syscall(procCertFreeCertificateChain.Addr(), 1, ((_array)), 0, 0);
_struct = ctx, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Size = _view.getUint32(0, true), _struct.TrustStatus.ErrorStatus = _view.getUint32(4, true), _struct.TrustStatus.InfoStatus = _view.getUint32(8, true), _struct.ChainCount = _view.getUint32(12, true), _struct.LowerQualityChainCount = _view.getUint32(20, true), _struct.HasRevocationFreshnessTime = _view.getUint32(28, true), _struct.RevocationFreshnessTime = _view.getUint32(32, true);
return;
};
$pkg.CertFreeCertificateChain = CertFreeCertificateChain;
CertCreateCertificateContext = function(certEncodingType, certEncoded, encodedLen) {
var $ptr, _array, _struct, _tuple, _view, certEncoded, certEncodingType, context, e1, encodedLen, err, r0;
context = ptrType$24.nil;
err = $ifaceNil;
_tuple = Syscall(procCertCreateCertificateContext.Addr(), 3, ((certEncodingType >>> 0)), ((certEncoded)), ((encodedLen >>> 0)));
r0 = _tuple[0];
e1 = _tuple[2];
context = ((_array = (r0), _struct = new CertContext.ptr(0, ptrType$10.nil, 0, 0, 0), _view = new DataView(_array.buffer, _array.byteOffset), _struct.EncodingType = _view.getUint32(0, true), _struct.Length = _view.getUint32(8, true), _struct.CertInfo = _view.getUintptr(12, true), _struct.Store = _view.getUintptr(16, true), _struct));
if (context === ptrType$24.nil) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return [context, err];
};
$pkg.CertCreateCertificateContext = CertCreateCertificateContext;
CertFreeCertificateContext = function(ctx) {
var $ptr, _array, _struct, _tuple, _view, ctx, e1, err, r1;
err = $ifaceNil;
_array = new Uint8Array(20);
_tuple = Syscall(procCertFreeCertificateContext.Addr(), 1, ((_array)), 0, 0);
_struct = ctx, _view = new DataView(_array.buffer, _array.byteOffset), _struct.EncodingType = _view.getUint32(0, true), _struct.Length = _view.getUint32(8, true), _struct.CertInfo = _view.getUintptr(12, true), _struct.Store = _view.getUintptr(16, true);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.CertFreeCertificateContext = CertFreeCertificateContext;
CertVerifyCertificateChainPolicy = function(policyOID, chain, para, status) {
var $ptr, _array, _array$1, _array$2, _struct, _struct$1, _struct$2, _tuple, _view, _view$1, _view$2, chain, e1, err, para, policyOID, r1, status;
err = $ifaceNil;
_array = new Uint8Array(36);
_array$1 = new Uint8Array(12);
_struct = chain, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Size = _view.getUint32(0, true), _struct.TrustStatus.ErrorStatus = _view.getUint32(4, true), _struct.TrustStatus.InfoStatus = _view.getUint32(8, true), _struct.ChainCount = _view.getUint32(12, true), _struct.LowerQualityChainCount = _view.getUint32(20, true), _struct.HasRevocationFreshnessTime = _view.getUint32(28, true), _struct.RevocationFreshnessTime = _view.getUint32(32, true);
_array$2 = new Uint8Array(20);
_struct$1 = para, _view$1 = new DataView(_array$1.buffer, _array$1.byteOffset), _struct$1.Size = _view$1.getUint32(0, true), _struct$1.Flags = _view$1.getUint32(4, true), _struct$1.ExtraPolicyPara = _view$1.getUintptr(8, true);
_tuple = Syscall6(procCertVerifyCertificateChainPolicy.Addr(), 4, (policyOID), ((_array)), ((_array$1)), ((_array$2)), 0, 0);
_struct$2 = status, _view$2 = new DataView(_array$2.buffer, _array$2.byteOffset), _struct$2.Size = _view$2.getUint32(0, true), _struct$2.Error = _view$2.getUint32(4, true), _struct$2.ChainIndex = _view$2.getUint32(8, true), _struct$2.ElementIndex = _view$2.getUint32(12, true), _struct$2.ExtraPolicyStatus = _view$2.getUintptr(16, true);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.CertVerifyCertificateChainPolicy = CertVerifyCertificateChainPolicy;
RegOpenKeyEx = function(key, subkey, options, desiredAccess, result) {
var $ptr, _tuple, desiredAccess, key, options, r0, regerrno, result, subkey;
regerrno = $ifaceNil;
_tuple = Syscall6(procRegOpenKeyExW.Addr(), 5, ((key >>> 0)), ((subkey)), ((options >>> 0)), ((desiredAccess >>> 0)), ((result)), 0);
r0 = _tuple[0];
if (!((r0 === 0))) {
regerrno = new Errno(((r0 >>> 0)));
}
return regerrno;
};
$pkg.RegOpenKeyEx = RegOpenKeyEx;
RegCloseKey = function(key) {
var $ptr, _tuple, key, r0, regerrno;
regerrno = $ifaceNil;
_tuple = Syscall(procRegCloseKey.Addr(), 1, ((key >>> 0)), 0, 0);
r0 = _tuple[0];
if (!((r0 === 0))) {
regerrno = new Errno(((r0 >>> 0)));
}
return regerrno;
};
$pkg.RegCloseKey = RegCloseKey;
RegQueryInfoKey = function(key, class$1, classLen, reserved, subkeysLen, maxSubkeyLen, maxClassLen, valuesLen, maxValueNameLen, maxValueLen, saLen, lastWriteTime) {
var $ptr, _array, _struct, _tuple, _view, class$1, classLen, key, lastWriteTime, maxClassLen, maxSubkeyLen, maxValueLen, maxValueNameLen, r0, regerrno, reserved, saLen, subkeysLen, valuesLen;
regerrno = $ifaceNil;
_array = new Uint8Array(8);
_tuple = Syscall12(procRegQueryInfoKeyW.Addr(), 12, ((key >>> 0)), ((class$1)), ((classLen)), ((reserved)), ((subkeysLen)), ((maxSubkeyLen)), ((maxClassLen)), ((valuesLen)), ((maxValueNameLen)), ((maxValueLen)), ((saLen)), ((_array)));
_struct = lastWriteTime, _view = new DataView(_array.buffer, _array.byteOffset), _struct.LowDateTime = _view.getUint32(0, true), _struct.HighDateTime = _view.getUint32(4, true);
r0 = _tuple[0];
if (!((r0 === 0))) {
regerrno = new Errno(((r0 >>> 0)));
}
return regerrno;
};
$pkg.RegQueryInfoKey = RegQueryInfoKey;
RegEnumKeyEx = function(key, index, name, nameLen, reserved, class$1, classLen, lastWriteTime) {
var $ptr, _array, _struct, _tuple, _view, class$1, classLen, index, key, lastWriteTime, name, nameLen, r0, regerrno, reserved;
regerrno = $ifaceNil;
_array = new Uint8Array(8);
_tuple = Syscall9(procRegEnumKeyExW.Addr(), 8, ((key >>> 0)), ((index >>> 0)), ((name)), ((nameLen)), ((reserved)), ((class$1)), ((classLen)), ((_array)), 0);
_struct = lastWriteTime, _view = new DataView(_array.buffer, _array.byteOffset), _struct.LowDateTime = _view.getUint32(0, true), _struct.HighDateTime = _view.getUint32(4, true);
r0 = _tuple[0];
if (!((r0 === 0))) {
regerrno = new Errno(((r0 >>> 0)));
}
return regerrno;
};
$pkg.RegEnumKeyEx = RegEnumKeyEx;
RegQueryValueEx = function(key, name, reserved, valtype, buf, buflen) {
var $ptr, _tuple, buf, buflen, key, name, r0, regerrno, reserved, valtype;
regerrno = $ifaceNil;
_tuple = Syscall6(procRegQueryValueExW.Addr(), 6, ((key >>> 0)), ((name)), ((reserved)), ((valtype)), ((buf)), ((buflen)));
r0 = _tuple[0];
if (!((r0 === 0))) {
regerrno = new Errno(((r0 >>> 0)));
}
return regerrno;
};
$pkg.RegQueryValueEx = RegQueryValueEx;
getCurrentProcessId = function() {
var $ptr, _tuple, pid, r0;
pid = 0;
_tuple = Syscall(procGetCurrentProcessId.Addr(), 0, 0, 0, 0);
r0 = _tuple[0];
pid = ((r0 >>> 0));
return pid;
};
WriteConsole = function(console, buf, towrite, written, reserved) {
var $ptr, _tuple, buf, console, e1, err, r1, reserved, towrite, written;
err = $ifaceNil;
_tuple = Syscall6(procWriteConsoleW.Addr(), 5, ((console >>> 0)), ((buf)), ((towrite >>> 0)), ((written)), ((reserved)), 0);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.WriteConsole = WriteConsole;
ReadConsole = function(console, buf, toread, read, inputControl) {
var $ptr, _tuple, buf, console, e1, err, inputControl, r1, read, toread;
err = $ifaceNil;
_tuple = Syscall6(procReadConsoleW.Addr(), 5, ((console >>> 0)), ((buf)), ((toread >>> 0)), ((read)), ((inputControl)), 0);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.ReadConsole = ReadConsole;
DeviceIoControl = function(handle, ioControlCode, inBuffer, inBufferSize, outBuffer, outBufferSize, bytesReturned, overlapped) {
var $ptr, _array, _struct, _tuple, _view, bytesReturned, e1, err, handle, inBuffer, inBufferSize, ioControlCode, outBuffer, outBufferSize, overlapped, r1;
err = $ifaceNil;
_array = new Uint8Array(20);
_tuple = Syscall9(procDeviceIoControl.Addr(), 8, ((handle >>> 0)), ((ioControlCode >>> 0)), ((inBuffer)), ((inBufferSize >>> 0)), ((outBuffer)), ((outBufferSize >>> 0)), ((bytesReturned)), ((_array)), 0);
_struct = overlapped, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Internal = _view.getUintptr(0, true), _struct.InternalHigh = _view.getUintptr(4, true), _struct.Offset = _view.getUint32(8, true), _struct.OffsetHigh = _view.getUint32(12, true), _struct.HEvent = _view.getUintptr(16, true);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.DeviceIoControl = DeviceIoControl;
WSAIoctl = function(s, iocc, inbuf, cbif, outbuf, cbob, cbbr, overlapped, completionRoutine) {
var $ptr, _array, _struct, _tuple, _view, cbbr, cbif, cbob, completionRoutine, e1, err, inbuf, iocc, outbuf, overlapped, r1, s;
err = $ifaceNil;
_array = new Uint8Array(20);
_tuple = Syscall9(procWSAIoctl.Addr(), 9, ((s >>> 0)), ((iocc >>> 0)), ((inbuf)), ((cbif >>> 0)), ((outbuf)), ((cbob >>> 0)), ((cbbr)), ((_array)), (completionRoutine));
_struct = overlapped, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Internal = _view.getUintptr(0, true), _struct.InternalHigh = _view.getUintptr(4, true), _struct.Offset = _view.getUint32(8, true), _struct.OffsetHigh = _view.getUint32(12, true), _struct.HEvent = _view.getUintptr(16, true);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 4294967295) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.WSAIoctl = WSAIoctl;
socket = function(af, typ, protocol) {
var $ptr, _tuple, af, e1, err, handle, protocol, r0, typ;
handle = 0;
err = $ifaceNil;
_tuple = Syscall(procsocket.Addr(), 3, ((af >>> 0)), ((typ >>> 0)), ((protocol >>> 0)));
r0 = _tuple[0];
e1 = _tuple[2];
handle = ((r0 >>> 0));
if (handle === 4294967295) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return [handle, err];
};
Setsockopt = function(s, level, optname, optval, optlen) {
var $ptr, _tuple, e1, err, level, optlen, optname, optval, r1, s;
err = $ifaceNil;
_tuple = Syscall6(procsetsockopt.Addr(), 5, ((s >>> 0)), ((level >>> 0)), ((optname >>> 0)), ((optval)), ((optlen >>> 0)), 0);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 4294967295) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.Setsockopt = Setsockopt;
bind = function(s, name, namelen) {
var $ptr, _tuple, e1, err, name, namelen, r1, s;
err = $ifaceNil;
_tuple = Syscall(procbind.Addr(), 3, ((s >>> 0)), (name), ((namelen >>> 0)));
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 4294967295) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
connect = function(s, name, namelen) {
var $ptr, _tuple, e1, err, name, namelen, r1, s;
err = $ifaceNil;
_tuple = Syscall(procconnect.Addr(), 3, ((s >>> 0)), (name), ((namelen >>> 0)));
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 4294967295) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
getsockname = function(s, rsa, addrlen) {
var $ptr, _array, _struct, _tuple, _view, addrlen, e1, err, r1, rsa, s;
err = $ifaceNil;
_array = new Uint8Array(112);
_tuple = Syscall(procgetsockname.Addr(), 3, ((s >>> 0)), ((_array)), ((addrlen)));
_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));
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 4294967295) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
getpeername = function(s, rsa, addrlen) {
var $ptr, _array, _struct, _tuple, _view, addrlen, e1, err, r1, rsa, s;
err = $ifaceNil;
_array = new Uint8Array(112);
_tuple = Syscall(procgetpeername.Addr(), 3, ((s >>> 0)), ((_array)), ((addrlen)));
_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));
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 4294967295) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
listen = function(s, backlog) {
var $ptr, _tuple, backlog, e1, err, r1, s;
err = $ifaceNil;
_tuple = Syscall(proclisten.Addr(), 2, ((s >>> 0)), ((backlog >>> 0)), 0);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 4294967295) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
shutdown = function(s, how) {
var $ptr, _tuple, e1, err, how, r1, s;
err = $ifaceNil;
_tuple = Syscall(procshutdown.Addr(), 2, ((s >>> 0)), ((how >>> 0)), 0);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 4294967295) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
Closesocket = function(s) {
var $ptr, _tuple, e1, err, r1, s;
err = $ifaceNil;
_tuple = Syscall(procclosesocket.Addr(), 1, ((s >>> 0)), 0, 0);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 4294967295) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.Closesocket = Closesocket;
AcceptEx = function(ls, as, buf, rxdatalen, laddrlen, raddrlen, recvd, overlapped) {
var $ptr, _array, _struct, _tuple, _view, as, buf, e1, err, laddrlen, ls, overlapped, r1, raddrlen, recvd, rxdatalen;
err = $ifaceNil;
_array = new Uint8Array(20);
_tuple = Syscall9(procAcceptEx.Addr(), 8, ((ls >>> 0)), ((as >>> 0)), ((buf)), ((rxdatalen >>> 0)), ((laddrlen >>> 0)), ((raddrlen >>> 0)), ((recvd)), ((_array)), 0);
_struct = overlapped, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Internal = _view.getUintptr(0, true), _struct.InternalHigh = _view.getUintptr(4, true), _struct.Offset = _view.getUint32(8, true), _struct.OffsetHigh = _view.getUint32(12, true), _struct.HEvent = _view.getUintptr(16, true);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.AcceptEx = AcceptEx;
GetAcceptExSockaddrs = function(buf, rxdatalen, laddrlen, raddrlen, lrsa, lrsalen, rrsa, rrsalen) {
var $ptr, buf, laddrlen, lrsa, lrsalen, raddrlen, rrsa, rrsalen, rxdatalen;
Syscall9(procGetAcceptExSockaddrs.Addr(), 8, ((buf)), ((rxdatalen >>> 0)), ((laddrlen >>> 0)), ((raddrlen >>> 0)), ((lrsa)), ((lrsalen)), ((rrsa)), ((rrsalen)), 0);
return;
};
$pkg.GetAcceptExSockaddrs = GetAcceptExSockaddrs;
WSARecv = function(s, bufs, bufcnt, recvd, flags, overlapped, croutine) {
var $ptr, _array, _array$1, _struct, _struct$1, _tuple, _view, _view$1, bufcnt, bufs, croutine, e1, err, flags, overlapped, r1, recvd, s;
err = $ifaceNil;
_array = new Uint8Array(8);
_array$1 = new Uint8Array(20);
_struct = bufs, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Len = _view.getUint32(0, true);
_tuple = Syscall9(procWSARecv.Addr(), 7, ((s >>> 0)), ((_array)), ((bufcnt >>> 0)), ((recvd)), ((flags)), ((_array$1)), ((croutine)), 0, 0);
_struct$1 = overlapped, _view$1 = new DataView(_array$1.buffer, _array$1.byteOffset), _struct$1.Internal = _view$1.getUintptr(0, true), _struct$1.InternalHigh = _view$1.getUintptr(4, true), _struct$1.Offset = _view$1.getUint32(8, true), _struct$1.OffsetHigh = _view$1.getUint32(12, true), _struct$1.HEvent = _view$1.getUintptr(16, true);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 4294967295) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.WSARecv = WSARecv;
WSASend = function(s, bufs, bufcnt, sent, flags, overlapped, croutine) {
var $ptr, _array, _array$1, _struct, _struct$1, _tuple, _view, _view$1, bufcnt, bufs, croutine, e1, err, flags, overlapped, r1, s, sent;
err = $ifaceNil;
_array = new Uint8Array(8);
_array$1 = new Uint8Array(20);
_struct = bufs, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Len = _view.getUint32(0, true);
_tuple = Syscall9(procWSASend.Addr(), 7, ((s >>> 0)), ((_array)), ((bufcnt >>> 0)), ((sent)), ((flags >>> 0)), ((_array$1)), ((croutine)), 0, 0);
_struct$1 = overlapped, _view$1 = new DataView(_array$1.buffer, _array$1.byteOffset), _struct$1.Internal = _view$1.getUintptr(0, true), _struct$1.InternalHigh = _view$1.getUintptr(4, true), _struct$1.Offset = _view$1.getUint32(8, true), _struct$1.OffsetHigh = _view$1.getUint32(12, true), _struct$1.HEvent = _view$1.getUintptr(16, true);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 4294967295) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.WSASend = WSASend;
WSARecvFrom = function(s, bufs, bufcnt, recvd, flags, from, fromlen, overlapped, croutine) {
var $ptr, _array, _array$1, _array$2, _struct, _struct$1, _struct$2, _tuple, _view, _view$1, _view$2, bufcnt, bufs, croutine, e1, err, flags, from, fromlen, overlapped, r1, recvd, s;
err = $ifaceNil;
_array = new Uint8Array(8);
_array$1 = new Uint8Array(112);
_struct = bufs, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Len = _view.getUint32(0, true);
_array$2 = new Uint8Array(20);
_struct$1 = from, _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));
_tuple = Syscall9(procWSARecvFrom.Addr(), 9, ((s >>> 0)), ((_array)), ((bufcnt >>> 0)), ((recvd)), ((flags)), ((_array$1)), ((fromlen)), ((_array$2)), ((croutine)));
_struct$2 = overlapped, _view$2 = new DataView(_array$2.buffer, _array$2.byteOffset), _struct$2.Internal = _view$2.getUintptr(0, true), _struct$2.InternalHigh = _view$2.getUintptr(4, true), _struct$2.Offset = _view$2.getUint32(8, true), _struct$2.OffsetHigh = _view$2.getUint32(12, true), _struct$2.HEvent = _view$2.getUintptr(16, true);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 4294967295) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.WSARecvFrom = WSARecvFrom;
WSASendTo = function(s, bufs, bufcnt, sent, flags, to, tolen, overlapped, croutine) {
var $ptr, _array, _array$1, _array$2, _struct, _struct$1, _struct$2, _tuple, _view, _view$1, _view$2, bufcnt, bufs, croutine, e1, err, flags, overlapped, r1, s, sent, to, tolen;
err = $ifaceNil;
_array = new Uint8Array(8);
_array$1 = new Uint8Array(112);
_struct = bufs, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Len = _view.getUint32(0, true);
_array$2 = new Uint8Array(20);
_struct$1 = to, _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));
_tuple = Syscall9(procWSASendTo.Addr(), 9, ((s >>> 0)), ((_array)), ((bufcnt >>> 0)), ((sent)), ((flags >>> 0)), ((_array$1)), ((tolen >>> 0)), ((_array$2)), ((croutine)));
_struct$2 = overlapped, _view$2 = new DataView(_array$2.buffer, _array$2.byteOffset), _struct$2.Internal = _view$2.getUintptr(0, true), _struct$2.InternalHigh = _view$2.getUintptr(4, true), _struct$2.Offset = _view$2.getUint32(8, true), _struct$2.OffsetHigh = _view$2.getUint32(12, true), _struct$2.HEvent = _view$2.getUintptr(16, true);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 4294967295) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.WSASendTo = WSASendTo;
Ntohs = function(netshort) {
var $ptr, _tuple, netshort, r0, u;
u = 0;
_tuple = Syscall(procntohs.Addr(), 1, ((netshort >>> 0)), 0, 0);
r0 = _tuple[0];
u = ((r0 << 16 >>> 16));
return u;
};
$pkg.Ntohs = Ntohs;
GetProtoByName = function(name) {
var $ptr, _p0, _tuple, _tuple$1, err, name, p;
p = ptrType$28.nil;
err = $ifaceNil;
_p0 = ptrType$10.nil;
_tuple = BytePtrFromString(name);
_p0 = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [p, err];
}
_tuple$1 = _GetProtoByName(_p0);
p = _tuple$1[0];
err = _tuple$1[1];
return [p, err];
};
$pkg.GetProtoByName = GetProtoByName;
_GetProtoByName = function(name) {
var $ptr, _array, _struct, _tuple, _view, e1, err, name, p, r0;
p = ptrType$28.nil;
err = $ifaceNil;
_tuple = Syscall(procgetprotobyname.Addr(), 1, ((name)), 0, 0);
r0 = _tuple[0];
e1 = _tuple[2];
p = ((_array = (r0), _struct = new Protoent.ptr(ptrType$10.nil, ptrType$26.nil, 0), _view = new DataView(_array.buffer, _array.byteOffset), _struct.Proto = _view.getUint16(8, true), _struct));
if (p === ptrType$28.nil) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return [p, err];
};
DnsQuery = function(name, qtype, options, extra, qrs, pr) {
var $ptr, _p0, _tuple, extra, name, options, pr, qrs, qtype, status;
status = $ifaceNil;
_p0 = ptrType$1.nil;
_tuple = UTF16PtrFromString(name);
_p0 = _tuple[0];
status = _tuple[1];
if (!($interfaceIsEqual(status, $ifaceNil))) {
return status;
}
status = _DnsQuery(_p0, qtype, options, extra, qrs, pr);
return status;
};
$pkg.DnsQuery = DnsQuery;
_DnsQuery = function(name, qtype, options, extra, qrs, pr) {
var $ptr, _tuple, extra, name, options, pr, qrs, qtype, r0, status;
status = $ifaceNil;
_tuple = Syscall6(procDnsQuery_W.Addr(), 6, ((name)), ((qtype >>> 0)), ((options >>> 0)), ((extra)), ((qrs)), ((pr)));
r0 = _tuple[0];
if (!((r0 === 0))) {
status = new Errno(((r0 >>> 0)));
}
return status;
};
DnsRecordListFree = function(rl, freetype) {
var $ptr, _array, _struct, _view, freetype, rl;
_array = new Uint8Array(64);
Syscall(procDnsRecordListFree.Addr(), 2, ((_array)), ((freetype >>> 0)), 0);
_struct = rl, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Type = _view.getUint16(8, true), _struct.Length = _view.getUint16(10, true), _struct.Dw = _view.getUint32(12, true), _struct.Ttl = _view.getUint32(16, true), _struct.Reserved = _view.getUint32(20, true), _struct.Data = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 24, _array.buffer.byteLength));
return;
};
$pkg.DnsRecordListFree = DnsRecordListFree;
DnsNameCompare = function(name1, name2) {
var $ptr, _tuple, name1, name2, r0, same;
same = false;
_tuple = Syscall(procDnsNameCompare_W.Addr(), 2, ((name1)), ((name2)), 0);
r0 = _tuple[0];
same = !((r0 === 0));
return same;
};
$pkg.DnsNameCompare = DnsNameCompare;
GetAddrInfoW = function(nodename, servicename, hints, result) {
var $ptr, _array, _struct, _tuple, _view, hints, nodename, r0, result, servicename, sockerr;
sockerr = $ifaceNil;
_array = new Uint8Array(32);
_tuple = Syscall6(procGetAddrInfoW.Addr(), 4, ((nodename)), ((servicename)), ((_array)), ((result)), 0, 0);
_struct = hints, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Flags = _view.getInt32(0, true), _struct.Family = _view.getInt32(4, true), _struct.Socktype = _view.getInt32(8, true), _struct.Protocol = _view.getInt32(12, true), _struct.Addrlen = _view.getUintptr(16, true), _struct.Addr = _view.getUintptr(24, true);
r0 = _tuple[0];
if (!((r0 === 0))) {
sockerr = new Errno(((r0 >>> 0)));
}
return sockerr;
};
$pkg.GetAddrInfoW = GetAddrInfoW;
FreeAddrInfoW = function(addrinfo) {
var $ptr, _array, _struct, _view, addrinfo;
_array = new Uint8Array(32);
Syscall(procFreeAddrInfoW.Addr(), 1, ((_array)), 0, 0);
_struct = addrinfo, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Flags = _view.getInt32(0, true), _struct.Family = _view.getInt32(4, true), _struct.Socktype = _view.getInt32(8, true), _struct.Protocol = _view.getInt32(12, true), _struct.Addrlen = _view.getUintptr(16, true), _struct.Addr = _view.getUintptr(24, true);
return;
};
$pkg.FreeAddrInfoW = FreeAddrInfoW;
SetFileCompletionNotificationModes = function(handle, flags) {
var $ptr, _tuple, e1, err, flags, handle, r1;
err = $ifaceNil;
_tuple = Syscall(procSetFileCompletionNotificationModes.Addr(), 2, ((handle >>> 0)), ((flags >>> 0)), 0);
r1 = _tuple[0];
e1 = _tuple[2];
if (r1 === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new Errno(536870951);
}
}
return err;
};
$pkg.SetFileCompletionNotificationModes = SetFileCompletionNotificationModes;
Filetime.ptr.prototype.Nanoseconds = function() {
var $ptr, ft, nsec, x, x$1, x$2;
ft = this;
nsec = (x = $shiftLeft64((new $Int64(0, ft.HighDateTime)), 32), x$1 = (new $Int64(0, ft.LowDateTime)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
nsec = (x$2 = new $Int64(27111902, 3577643008), new $Int64(nsec.$high - x$2.$high, nsec.$low - x$2.$low));
nsec = $mul64(nsec, (new $Int64(0, 100)));
return nsec;
};
Filetime.prototype.Nanoseconds = function() { return this.$val.Nanoseconds(); };
NsecToFiletime = function(nsec) {
var $ptr, ft, nsec, x, x$1;
ft = new Filetime.ptr(0, 0);
nsec = $div64(nsec, (new $Int64(0, 100)), false);
nsec = (x = new $Int64(27111902, 3577643008), new $Int64(nsec.$high + x.$high, nsec.$low + x.$low));
ft.LowDateTime = ((new $Int64(nsec.$high & 0, (nsec.$low & 4294967295) >>> 0).$low >>> 0));
ft.HighDateTime = (((x$1 = $shiftRightInt64(nsec, 32), new $Int64(x$1.$high & 0, (x$1.$low & 4294967295) >>> 0)).$low >>> 0));
Filetime.copy(ft, ft);
return ft;
};
$pkg.NsecToFiletime = NsecToFiletime;
copyFindData = function(dst, src) {
var $ptr, dst, src;
dst.FileAttributes = src.FileAttributes;
Filetime.copy(dst.CreationTime, src.CreationTime);
Filetime.copy(dst.LastAccessTime, src.LastAccessTime);
Filetime.copy(dst.LastWriteTime, src.LastWriteTime);
dst.FileSizeHigh = src.FileSizeHigh;
dst.FileSizeLow = src.FileSizeLow;
dst.Reserved0 = src.Reserved0;
dst.Reserved1 = src.Reserved1;
$copySlice(new sliceType$3(dst.FileName), new sliceType$3(src.FileName));
$copySlice(new sliceType$3(dst.AlternateFileName), new sliceType$3(src.AlternateFileName));
};
DummyError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
ptrType$29.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
ptrType$4.methods = [{prop: "FindProc", name: "FindProc", pkg: "", typ: $funcType([$String], [ptrType$5, $error], false)}, {prop: "MustFindProc", name: "MustFindProc", pkg: "", typ: $funcType([$String], [ptrType$5], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [$error], false)}];
ptrType$5.methods = [{prop: "Addr", name: "Addr", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Call", name: "Call", pkg: "", typ: $funcType([sliceType$2], [$Uintptr, $Uintptr, $error], true)}];
ptrType$6.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([], [$error], false)}, {prop: "mustLoad", name: "mustLoad", pkg: "syscall", typ: $funcType([], [], false)}, {prop: "Handle", name: "Handle", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "NewProc", name: "NewProc", pkg: "", typ: $funcType([$String], [ptrType$30], false)}];
ptrType$30.methods = [{prop: "Find", name: "Find", pkg: "", typ: $funcType([], [$error], false)}, {prop: "mustFind", name: "mustFind", pkg: "syscall", typ: $funcType([], [], false)}, {prop: "Addr", name: "Addr", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Call", name: "Call", pkg: "", typ: $funcType([sliceType$2], [$Uintptr, $Uintptr, $error], true)}];
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)}];
ptrType$31.methods = [{prop: "Sockaddr", name: "Sockaddr", pkg: "", typ: $funcType([], [Sockaddr, $error], false)}];
ptrType$32.methods = [{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, $Int32, $error], false)}];
ptrType$33.methods = [{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, $Int32, $error], false)}];
ptrType$34.methods = [{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, $Int32, $error], false)}];
ptrType$21.methods = [{prop: "Nanoseconds", name: "Nanoseconds", pkg: "", typ: $funcType([], [$Int64], false)}];
DummyError.init("", []);
DLLError.init("", [{prop: "Err", name: "Err", exported: true, typ: $error, tag: ""}, {prop: "ObjName", name: "ObjName", exported: true, typ: $String, tag: ""}, {prop: "Msg", name: "Msg", exported: true, typ: $String, tag: ""}]);
DLL.init("", [{prop: "Name", name: "Name", exported: true, typ: $String, tag: ""}, {prop: "Handle", name: "Handle", exported: true, typ: Handle, tag: ""}]);
Proc.init("syscall", [{prop: "Dll", name: "Dll", exported: true, typ: ptrType$4, tag: ""}, {prop: "Name", name: "Name", exported: true, typ: $String, tag: ""}, {prop: "addr", name: "addr", exported: false, typ: $Uintptr, tag: ""}]);
LazyDLL.init("syscall", [{prop: "mu", name: "mu", exported: false, typ: sync.Mutex, tag: ""}, {prop: "dll", name: "dll", exported: false, typ: ptrType$4, tag: ""}, {prop: "Name", name: "Name", exported: true, typ: $String, tag: ""}]);
LazyProc.init("syscall", [{prop: "mu", name: "mu", exported: false, typ: sync.Mutex, tag: ""}, {prop: "Name", name: "Name", exported: true, typ: $String, tag: ""}, {prop: "l", name: "l", exported: false, typ: ptrType$6, tag: ""}, {prop: "proc", name: "proc", exported: false, typ: ptrType$5, tag: ""}]);
RawSockaddrInet4.init("", [{prop: "Family", name: "Family", exported: true, typ: $Uint16, tag: ""}, {prop: "Port", name: "Port", exported: true, typ: $Uint16, tag: ""}, {prop: "Addr", name: "Addr", exported: true, typ: arrayType$3, tag: ""}, {prop: "Zero", name: "Zero", exported: true, typ: arrayType$4, tag: ""}]);
RawSockaddrInet6.init("", [{prop: "Family", name: "Family", exported: true, typ: $Uint16, tag: ""}, {prop: "Port", name: "Port", exported: true, typ: $Uint16, tag: ""}, {prop: "Flowinfo", name: "Flowinfo", exported: true, typ: $Uint32, tag: ""}, {prop: "Addr", name: "Addr", exported: true, typ: arrayType$5, tag: ""}, {prop: "Scope_id", name: "Scope_id", exported: true, typ: $Uint32, tag: ""}]);
RawSockaddr.init("", [{prop: "Family", name: "Family", exported: true, typ: $Uint16, tag: ""}, {prop: "Data", name: "Data", exported: true, typ: arrayType$6, tag: ""}]);
RawSockaddrAny.init("", [{prop: "Addr", name: "Addr", exported: true, typ: RawSockaddr, tag: ""}, {prop: "Pad", name: "Pad", exported: true, typ: arrayType$7, tag: ""}]);
Sockaddr.init([{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, $Int32, $error], false)}]);
SockaddrInet4.init("syscall", [{prop: "Port", name: "Port", exported: true, typ: $Int, tag: ""}, {prop: "Addr", name: "Addr", exported: true, typ: arrayType$3, tag: ""}, {prop: "raw", name: "raw", exported: false, typ: RawSockaddrInet4, tag: ""}]);
SockaddrInet6.init("syscall", [{prop: "Port", name: "Port", exported: true, typ: $Int, tag: ""}, {prop: "ZoneId", name: "ZoneId", exported: true, typ: $Uint32, tag: ""}, {prop: "Addr", name: "Addr", exported: true, typ: arrayType$5, tag: ""}, {prop: "raw", name: "raw", exported: false, typ: RawSockaddrInet6, tag: ""}]);
SockaddrUnix.init("", [{prop: "Name", name: "Name", exported: true, typ: $String, tag: ""}]);
Linger.init("", [{prop: "Onoff", name: "Onoff", exported: true, typ: $Int32, tag: ""}, {prop: "Linger", name: "Linger", exported: true, typ: $Int32, tag: ""}]);
sysLinger.init("", [{prop: "Onoff", name: "Onoff", exported: true, typ: $Uint16, tag: ""}, {prop: "Linger", name: "Linger", exported: true, typ: $Uint16, tag: ""}]);
SecurityAttributes.init("", [{prop: "Length", name: "Length", exported: true, typ: $Uint32, tag: ""}, {prop: "SecurityDescriptor", name: "SecurityDescriptor", exported: true, typ: $Uintptr, tag: ""}, {prop: "InheritHandle", name: "InheritHandle", exported: true, typ: $Uint32, tag: ""}]);
Overlapped.init("", [{prop: "Internal", name: "Internal", exported: true, typ: $Uintptr, tag: ""}, {prop: "InternalHigh", name: "InternalHigh", exported: true, typ: $Uintptr, tag: ""}, {prop: "Offset", name: "Offset", exported: true, typ: $Uint32, tag: ""}, {prop: "OffsetHigh", name: "OffsetHigh", exported: true, typ: $Uint32, tag: ""}, {prop: "HEvent", name: "HEvent", exported: true, typ: Handle, tag: ""}]);
Filetime.init("", [{prop: "LowDateTime", name: "LowDateTime", exported: true, typ: $Uint32, tag: ""}, {prop: "HighDateTime", name: "HighDateTime", exported: true, typ: $Uint32, tag: ""}]);
Win32finddata.init("", [{prop: "FileAttributes", name: "FileAttributes", exported: true, typ: $Uint32, tag: ""}, {prop: "CreationTime", name: "CreationTime", exported: true, typ: Filetime, tag: ""}, {prop: "LastAccessTime", name: "LastAccessTime", exported: true, typ: Filetime, tag: ""}, {prop: "LastWriteTime", name: "LastWriteTime", exported: true, typ: Filetime, tag: ""}, {prop: "FileSizeHigh", name: "FileSizeHigh", exported: true, typ: $Uint32, tag: ""}, {prop: "FileSizeLow", name: "FileSizeLow", exported: true, typ: $Uint32, tag: ""}, {prop: "Reserved0", name: "Reserved0", exported: true, typ: $Uint32, tag: ""}, {prop: "Reserved1", name: "Reserved1", exported: true, typ: $Uint32, tag: ""}, {prop: "FileName", name: "FileName", exported: true, typ: arrayType$11, tag: ""}, {prop: "AlternateFileName", name: "AlternateFileName", exported: true, typ: arrayType$12, tag: ""}]);
win32finddata1.init("", [{prop: "FileAttributes", name: "FileAttributes", exported: true, typ: $Uint32, tag: ""}, {prop: "CreationTime", name: "CreationTime", exported: true, typ: Filetime, tag: ""}, {prop: "LastAccessTime", name: "LastAccessTime", exported: true, typ: Filetime, tag: ""}, {prop: "LastWriteTime", name: "LastWriteTime", exported: true, typ: Filetime, tag: ""}, {prop: "FileSizeHigh", name: "FileSizeHigh", exported: true, typ: $Uint32, tag: ""}, {prop: "FileSizeLow", name: "FileSizeLow", exported: true, typ: $Uint32, tag: ""}, {prop: "Reserved0", name: "Reserved0", exported: true, typ: $Uint32, tag: ""}, {prop: "Reserved1", name: "Reserved1", exported: true, typ: $Uint32, tag: ""}, {prop: "FileName", name: "FileName", exported: true, typ: arrayType$8, tag: ""}, {prop: "AlternateFileName", name: "AlternateFileName", exported: true, typ: arrayType$9, tag: ""}]);
ByHandleFileInformation.init("", [{prop: "FileAttributes", name: "FileAttributes", exported: true, typ: $Uint32, tag: ""}, {prop: "CreationTime", name: "CreationTime", exported: true, typ: Filetime, tag: ""}, {prop: "LastAccessTime", name: "LastAccessTime", exported: true, typ: Filetime, tag: ""}, {prop: "LastWriteTime", name: "LastWriteTime", exported: true, typ: Filetime, tag: ""}, {prop: "VolumeSerialNumber", name: "VolumeSerialNumber", exported: true, typ: $Uint32, tag: ""}, {prop: "FileSizeHigh", name: "FileSizeHigh", exported: true, typ: $Uint32, tag: ""}, {prop: "FileSizeLow", name: "FileSizeLow", exported: true, typ: $Uint32, tag: ""}, {prop: "NumberOfLinks", name: "NumberOfLinks", exported: true, typ: $Uint32, tag: ""}, {prop: "FileIndexHigh", name: "FileIndexHigh", exported: true, typ: $Uint32, tag: ""}, {prop: "FileIndexLow", name: "FileIndexLow", exported: true, typ: $Uint32, tag: ""}]);
Win32FileAttributeData.init("", [{prop: "FileAttributes", name: "FileAttributes", exported: true, typ: $Uint32, tag: ""}, {prop: "CreationTime", name: "CreationTime", exported: true, typ: Filetime, tag: ""}, {prop: "LastAccessTime", name: "LastAccessTime", exported: true, typ: Filetime, tag: ""}, {prop: "LastWriteTime", name: "LastWriteTime", exported: true, typ: Filetime, tag: ""}, {prop: "FileSizeHigh", name: "FileSizeHigh", exported: true, typ: $Uint32, tag: ""}, {prop: "FileSizeLow", name: "FileSizeLow", exported: true, typ: $Uint32, tag: ""}]);
WSABuf.init("", [{prop: "Len", name: "Len", exported: true, typ: $Uint32, tag: ""}, {prop: "Buf", name: "Buf", exported: true, typ: ptrType$10, tag: ""}]);
Protoent.init("", [{prop: "Name", name: "Name", exported: true, typ: ptrType$10, tag: ""}, {prop: "Aliases", name: "Aliases", exported: true, typ: ptrType$26, tag: ""}, {prop: "Proto", name: "Proto", exported: true, typ: $Uint16, tag: ""}]);
DNSSRVData.init("", [{prop: "Target", name: "Target", exported: true, typ: ptrType$1, tag: ""}, {prop: "Priority", name: "Priority", exported: true, typ: $Uint16, tag: ""}, {prop: "Weight", name: "Weight", exported: true, typ: $Uint16, tag: ""}, {prop: "Port", name: "Port", exported: true, typ: $Uint16, tag: ""}, {prop: "Pad", name: "Pad", exported: true, typ: $Uint16, tag: ""}]);
DNSPTRData.init("", [{prop: "Host", name: "Host", exported: true, typ: ptrType$1, tag: ""}]);
DNSMXData.init("", [{prop: "NameExchange", name: "NameExchange", exported: true, typ: ptrType$1, tag: ""}, {prop: "Preference", name: "Preference", exported: true, typ: $Uint16, tag: ""}, {prop: "Pad", name: "Pad", exported: true, typ: $Uint16, tag: ""}]);
DNSTXTData.init("", [{prop: "StringCount", name: "StringCount", exported: true, typ: $Uint16, tag: ""}, {prop: "StringArray", name: "StringArray", exported: true, typ: arrayType$14, tag: ""}]);
DNSRecord.init("", [{prop: "Next", name: "Next", exported: true, typ: ptrType$37, tag: ""}, {prop: "Name", name: "Name", exported: true, typ: ptrType$1, tag: ""}, {prop: "Type", name: "Type", exported: true, typ: $Uint16, tag: ""}, {prop: "Length", name: "Length", exported: true, typ: $Uint16, tag: ""}, {prop: "Dw", name: "Dw", exported: true, typ: $Uint32, tag: ""}, {prop: "Ttl", name: "Ttl", exported: true, typ: $Uint32, tag: ""}, {prop: "Reserved", name: "Reserved", exported: true, typ: $Uint32, tag: ""}, {prop: "Data", name: "Data", exported: true, typ: arrayType$15, tag: ""}]);
TransmitFileBuffers.init("", [{prop: "Head", name: "Head", exported: true, typ: $Uintptr, tag: ""}, {prop: "HeadLength", name: "HeadLength", exported: true, typ: $Uint32, tag: ""}, {prop: "Tail", name: "Tail", exported: true, typ: $Uintptr, tag: ""}, {prop: "TailLength", name: "TailLength", exported: true, typ: $Uint32, tag: ""}]);
CertContext.init("", [{prop: "EncodingType", name: "EncodingType", exported: true, typ: $Uint32, tag: ""}, {prop: "EncodedCert", name: "EncodedCert", exported: true, typ: ptrType$10, tag: ""}, {prop: "Length", name: "Length", exported: true, typ: $Uint32, tag: ""}, {prop: "CertInfo", name: "CertInfo", exported: true, typ: $Uintptr, tag: ""}, {prop: "Store", name: "Store", exported: true, typ: Handle, tag: ""}]);
CertChainContext.init("", [{prop: "Size", name: "Size", exported: true, typ: $Uint32, tag: ""}, {prop: "TrustStatus", name: "TrustStatus", exported: true, typ: CertTrustStatus, tag: ""}, {prop: "ChainCount", name: "ChainCount", exported: true, typ: $Uint32, tag: ""}, {prop: "Chains", name: "Chains", exported: true, typ: ptrType$41, tag: ""}, {prop: "LowerQualityChainCount", name: "LowerQualityChainCount", exported: true, typ: $Uint32, tag: ""}, {prop: "LowerQualityChains", name: "LowerQualityChains", exported: true, typ: ptrType$43, tag: ""}, {prop: "HasRevocationFreshnessTime", name: "HasRevocationFreshnessTime", exported: true, typ: $Uint32, tag: ""}, {prop: "RevocationFreshnessTime", name: "RevocationFreshnessTime", exported: true, typ: $Uint32, tag: ""}]);
CertSimpleChain.init("", [{prop: "Size", name: "Size", exported: true, typ: $Uint32, tag: ""}, {prop: "TrustStatus", name: "TrustStatus", exported: true, typ: CertTrustStatus, tag: ""}, {prop: "NumElements", name: "NumElements", exported: true, typ: $Uint32, tag: ""}, {prop: "Elements", name: "Elements", exported: true, typ: ptrType$45, tag: ""}, {prop: "TrustListInfo", name: "TrustListInfo", exported: true, typ: $Uintptr, tag: ""}, {prop: "HasRevocationFreshnessTime", name: "HasRevocationFreshnessTime", exported: true, typ: $Uint32, tag: ""}, {prop: "RevocationFreshnessTime", name: "RevocationFreshnessTime", exported: true, typ: $Uint32, tag: ""}]);
CertChainElement.init("", [{prop: "Size", name: "Size", exported: true, typ: $Uint32, tag: ""}, {prop: "CertContext", name: "CertContext", exported: true, typ: ptrType$24, tag: ""}, {prop: "TrustStatus", name: "TrustStatus", exported: true, typ: CertTrustStatus, tag: ""}, {prop: "RevocationInfo", name: "RevocationInfo", exported: true, typ: ptrType$46, tag: ""}, {prop: "IssuanceUsage", name: "IssuanceUsage", exported: true, typ: ptrType$47, tag: ""}, {prop: "ApplicationUsage", name: "ApplicationUsage", exported: true, typ: ptrType$47, tag: ""}, {prop: "ExtendedErrorInfo", name: "ExtendedErrorInfo", exported: true, typ: ptrType$1, tag: ""}]);
CertRevocationInfo.init("", [{prop: "Size", name: "Size", exported: true, typ: $Uint32, tag: ""}, {prop: "RevocationResult", name: "RevocationResult", exported: true, typ: $Uint32, tag: ""}, {prop: "RevocationOid", name: "RevocationOid", exported: true, typ: ptrType$10, tag: ""}, {prop: "OidSpecificInfo", name: "OidSpecificInfo", exported: true, typ: $Uintptr, tag: ""}, {prop: "HasFreshnessTime", name: "HasFreshnessTime", exported: true, typ: $Uint32, tag: ""}, {prop: "FreshnessTime", name: "FreshnessTime", exported: true, typ: $Uint32, tag: ""}, {prop: "CrlInfo", name: "CrlInfo", exported: true, typ: $Uintptr, tag: ""}]);
CertTrustStatus.init("", [{prop: "ErrorStatus", name: "ErrorStatus", exported: true, typ: $Uint32, tag: ""}, {prop: "InfoStatus", name: "InfoStatus", exported: true, typ: $Uint32, tag: ""}]);
CertUsageMatch.init("", [{prop: "Type", name: "Type", exported: true, typ: $Uint32, tag: ""}, {prop: "Usage", name: "Usage", exported: true, typ: CertEnhKeyUsage, tag: ""}]);
CertEnhKeyUsage.init("", [{prop: "Length", name: "Length", exported: true, typ: $Uint32, tag: ""}, {prop: "UsageIdentifiers", name: "UsageIdentifiers", exported: true, typ: ptrType$26, tag: ""}]);
CertChainPara.init("", [{prop: "Size", name: "Size", exported: true, typ: $Uint32, tag: ""}, {prop: "RequestedUsage", name: "RequestedUsage", exported: true, typ: CertUsageMatch, tag: ""}, {prop: "RequstedIssuancePolicy", name: "RequstedIssuancePolicy", exported: true, typ: CertUsageMatch, tag: ""}, {prop: "URLRetrievalTimeout", name: "URLRetrievalTimeout", exported: true, typ: $Uint32, tag: ""}, {prop: "CheckRevocationFreshnessTime", name: "CheckRevocationFreshnessTime", exported: true, typ: $Uint32, tag: ""}, {prop: "RevocationFreshnessTime", name: "RevocationFreshnessTime", exported: true, typ: $Uint32, tag: ""}, {prop: "CacheResync", name: "CacheResync", exported: true, typ: ptrType$21, tag: ""}]);
CertChainPolicyPara.init("", [{prop: "Size", name: "Size", exported: true, typ: $Uint32, tag: ""}, {prop: "Flags", name: "Flags", exported: true, typ: $Uint32, tag: ""}, {prop: "ExtraPolicyPara", name: "ExtraPolicyPara", exported: true, typ: $Uintptr, tag: ""}]);
SSLExtraCertChainPolicyPara.init("", [{prop: "Size", name: "Size", exported: true, typ: $Uint32, tag: ""}, {prop: "AuthType", name: "AuthType", exported: true, typ: $Uint32, tag: ""}, {prop: "Checks", name: "Checks", exported: true, typ: $Uint32, tag: ""}, {prop: "ServerName", name: "ServerName", exported: true, typ: ptrType$1, tag: ""}]);
CertChainPolicyStatus.init("", [{prop: "Size", name: "Size", exported: true, typ: $Uint32, tag: ""}, {prop: "Error", name: "Error", exported: true, typ: $Uint32, tag: ""}, {prop: "ChainIndex", name: "ChainIndex", exported: true, typ: $Uint32, tag: ""}, {prop: "ElementIndex", name: "ElementIndex", exported: true, typ: $Uint32, tag: ""}, {prop: "ExtraPolicyStatus", name: "ExtraPolicyStatus", exported: true, typ: $Uintptr, tag: ""}]);
AddrinfoW.init("", [{prop: "Flags", name: "Flags", exported: true, typ: $Int32, tag: ""}, {prop: "Family", name: "Family", exported: true, typ: $Int32, tag: ""}, {prop: "Socktype", name: "Socktype", exported: true, typ: $Int32, tag: ""}, {prop: "Protocol", name: "Protocol", exported: true, typ: $Int32, tag: ""}, {prop: "Addrlen", name: "Addrlen", exported: true, typ: $Uintptr, tag: ""}, {prop: "Canonname", name: "Canonname", exported: true, typ: ptrType$1, tag: ""}, {prop: "Addr", name: "Addr", exported: true, typ: $Uintptr, tag: ""}, {prop: "Next", name: "Next", exported: true, typ: ptrType$48, tag: ""}]);
GUID.init("", [{prop: "Data1", name: "Data1", exported: true, typ: $Uint32, tag: ""}, {prop: "Data2", name: "Data2", exported: true, typ: $Uint16, tag: ""}, {prop: "Data3", name: "Data3", exported: true, typ: $Uint16, tag: ""}, {prop: "Data4", name: "Data4", exported: true, typ: arrayType$4, tag: ""}]);
TCPKeepalive.init("", [{prop: "OnOff", name: "OnOff", exported: true, typ: $Uint32, tag: ""}, {prop: "Time", name: "Time", exported: true, typ: $Uint32, tag: ""}, {prop: "Interval", name: "Interval", exported: true, typ: $Uint32, tag: ""}]);
symbolicLinkReparseBuffer.init("", [{prop: "SubstituteNameOffset", name: "SubstituteNameOffset", exported: true, typ: $Uint16, tag: ""}, {prop: "SubstituteNameLength", name: "SubstituteNameLength", exported: true, typ: $Uint16, tag: ""}, {prop: "PrintNameOffset", name: "PrintNameOffset", exported: true, typ: $Uint16, tag: ""}, {prop: "PrintNameLength", name: "PrintNameLength", exported: true, typ: $Uint16, tag: ""}, {prop: "Flags", name: "Flags", exported: true, typ: $Uint32, tag: ""}, {prop: "PathBuffer", name: "PathBuffer", exported: true, typ: arrayType$10, tag: ""}]);
mountPointReparseBuffer.init("", [{prop: "SubstituteNameOffset", name: "SubstituteNameOffset", exported: true, typ: $Uint16, tag: ""}, {prop: "SubstituteNameLength", name: "SubstituteNameLength", exported: true, typ: $Uint16, tag: ""}, {prop: "PrintNameOffset", name: "PrintNameOffset", exported: true, typ: $Uint16, tag: ""}, {prop: "PrintNameLength", name: "PrintNameLength", exported: true, typ: $Uint16, tag: ""}, {prop: "PathBuffer", name: "PathBuffer", exported: true, typ: arrayType$10, tag: ""}]);
reparseDataBuffer.init("syscall", [{prop: "ReparseTag", name: "ReparseTag", exported: true, typ: $Uint32, tag: ""}, {prop: "ReparseDataLength", name: "ReparseDataLength", exported: true, typ: $Uint16, tag: ""}, {prop: "Reserved", name: "Reserved", exported: true, typ: $Uint16, tag: ""}, {prop: "reparseBuffer", name: "reparseBuffer", exported: false, typ: $Uint8, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = race.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sysdll.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = runtime.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sync.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = atomic.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = utf16.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
lineBuffer = sliceType.nil;
$pkg.ForkLock = new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0);
ioSync = new $Int64(0, 0);
$pkg.SocketDisableIPv6 = false;
connectExFunc = new structType.ptr(new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0), 0, $ifaceNil);
warningPrinted = false;
minusOne = -1;
errors$1 = $toNativeArray($kindString, ["argument list too long", "permission denied", "address already in use", "cannot assign requested address", "advertise error", "address family not supported by protocol", "resource temporarily unavailable", "operation already in progress", "invalid exchange", "bad file descriptor", "file descriptor in bad state", "bad message", "invalid request descriptor", "invalid request code", "invalid slot", "bad font file format", "device or resource busy", "operation canceled", "no child processes", "channel number out of range", "communication error on send", "software caused connection abort", "connection refused", "connection reset by peer", "resource deadlock avoided", "resource deadlock avoided", "destination address required", "numerical argument out of domain", "RFS specific error", "disk quota exceeded", "file exists", "bad address", "file too large", "host is down", "no route to host", "identifier removed", "invalid or incomplete multibyte or wide character", "operation now in progress", "interrupted system call", "invalid argument", "input/output error", "transport endpoint is already connected", "is a directory", "is a named type file", "key has expired", "key was rejected by service", "key has been revoked", "level 2 halted", "level 2 not synchronized", "level 3 halted", "level 3 reset", "can not access a needed shared library", "accessing a corrupted shared library", "cannot exec a shared library directly", "attempting to link in too many shared libraries", ".lib section in a.out corrupted", "link number out of range", "too many levels of symbolic links", "wrong medium type", "too many open files", "too many links", "message too long", "multihop attempted", "file name too long", "no XENIX semaphores available", "network is down", "network dropped connection on reset", "network is unreachable", "too many open files in system", "no anode", "no buffer space available", "no CSI structure available", "no data available", "no such device", "exec format error", "required key not available", "no locks available", "link has been severed", "no medium found", "cannot allocate memory", "no message of desired type", "machine is not on the network", "package not installed", "protocol not available", "no space left on device", "out of streams resources", "device not a stream", "function not implemented", "block device required", "transport endpoint is not connected", "directory not empty", "not a XENIX named type file", "state not recoverable", "socket operation on non-socket", "operation not supported", "inappropriate ioctl for device", "name not unique on network", "no such device or address", "operation not supported", "value too large for defined data type", "owner died", "operation not permitted", "protocol family not supported", "broken pipe", "protocol error", "protocol not supported", "protocol wrong type for socket", "numerical result out of range", "remote address changed", "object is remote", "remote I/O error", "interrupted system call should be restarted", "read-only file system", "cannot send after transport endpoint shutdown", "socket type not supported", "illegal seek", "no such process", "srmount error", "stale NFS file handle", "streams pipe error", "timer expired", "connection timed out", "too many references: cannot splice", "text file busy", "structure needs cleaning", "protocol driver not attached", "too many users", "resource temporarily unavailable", "invalid cross-device link", "exchange full", "not supported by windows"]);
errERROR_IO_PENDING = new Errno(997);
modkernel32 = NewLazyDLL(sysdll.Add("kernel32.dll"));
modadvapi32 = NewLazyDLL(sysdll.Add("advapi32.dll"));
modshell32 = NewLazyDLL(sysdll.Add("shell32.dll"));
modmswsock = NewLazyDLL(sysdll.Add("mswsock.dll"));
modcrypt32 = NewLazyDLL(sysdll.Add("crypt32.dll"));
modws2_32 = NewLazyDLL(sysdll.Add("ws2_32.dll"));
moddnsapi = NewLazyDLL(sysdll.Add("dnsapi.dll"));
modiphlpapi = NewLazyDLL(sysdll.Add("iphlpapi.dll"));
modsecur32 = NewLazyDLL(sysdll.Add("secur32.dll"));
modnetapi32 = NewLazyDLL(sysdll.Add("netapi32.dll"));
moduserenv = NewLazyDLL(sysdll.Add("userenv.dll"));
procGetLastError = modkernel32.NewProc("GetLastError");
procLoadLibraryW = modkernel32.NewProc("LoadLibraryW");
procFreeLibrary = modkernel32.NewProc("FreeLibrary");
procGetProcAddress = modkernel32.NewProc("GetProcAddress");
procGetVersion = modkernel32.NewProc("GetVersion");
procFormatMessageW = modkernel32.NewProc("FormatMessageW");
procExitProcess = modkernel32.NewProc("ExitProcess");
procCreateFileW = modkernel32.NewProc("CreateFileW");
procReadFile = modkernel32.NewProc("ReadFile");
procWriteFile = modkernel32.NewProc("WriteFile");
procSetFilePointer = modkernel32.NewProc("SetFilePointer");
procCloseHandle = modkernel32.NewProc("CloseHandle");
procGetStdHandle = modkernel32.NewProc("GetStdHandle");
procFindFirstFileW = modkernel32.NewProc("FindFirstFileW");
procFindNextFileW = modkernel32.NewProc("FindNextFileW");
procFindClose = modkernel32.NewProc("FindClose");
procGetFileInformationByHandle = modkernel32.NewProc("GetFileInformationByHandle");
procGetCurrentDirectoryW = modkernel32.NewProc("GetCurrentDirectoryW");
procSetCurrentDirectoryW = modkernel32.NewProc("SetCurrentDirectoryW");
procCreateDirectoryW = modkernel32.NewProc("CreateDirectoryW");
procRemoveDirectoryW = modkernel32.NewProc("RemoveDirectoryW");
procDeleteFileW = modkernel32.NewProc("DeleteFileW");
procMoveFileW = modkernel32.NewProc("MoveFileW");
procGetComputerNameW = modkernel32.NewProc("GetComputerNameW");
procSetEndOfFile = modkernel32.NewProc("SetEndOfFile");
procGetSystemTimeAsFileTime = modkernel32.NewProc("GetSystemTimeAsFileTime");
procGetTimeZoneInformation = modkernel32.NewProc("GetTimeZoneInformation");
procCreateIoCompletionPort = modkernel32.NewProc("CreateIoCompletionPort");
procGetQueuedCompletionStatus = modkernel32.NewProc("GetQueuedCompletionStatus");
procPostQueuedCompletionStatus = modkernel32.NewProc("PostQueuedCompletionStatus");
procCancelIo = modkernel32.NewProc("CancelIo");
procCancelIoEx = modkernel32.NewProc("CancelIoEx");
procCreateProcessW = modkernel32.NewProc("CreateProcessW");
procOpenProcess = modkernel32.NewProc("OpenProcess");
procTerminateProcess = modkernel32.NewProc("TerminateProcess");
procGetExitCodeProcess = modkernel32.NewProc("GetExitCodeProcess");
procGetStartupInfoW = modkernel32.NewProc("GetStartupInfoW");
procGetCurrentProcess = modkernel32.NewProc("GetCurrentProcess");
procGetProcessTimes = modkernel32.NewProc("GetProcessTimes");
procDuplicateHandle = modkernel32.NewProc("DuplicateHandle");
procWaitForSingleObject = modkernel32.NewProc("WaitForSingleObject");
procGetTempPathW = modkernel32.NewProc("GetTempPathW");
procCreatePipe = modkernel32.NewProc("CreatePipe");
procGetFileType = modkernel32.NewProc("GetFileType");
procCryptAcquireContextW = modadvapi32.NewProc("CryptAcquireContextW");
procCryptReleaseContext = modadvapi32.NewProc("CryptReleaseContext");
procCryptGenRandom = modadvapi32.NewProc("CryptGenRandom");
procGetEnvironmentStringsW = modkernel32.NewProc("GetEnvironmentStringsW");
procFreeEnvironmentStringsW = modkernel32.NewProc("FreeEnvironmentStringsW");
procGetEnvironmentVariableW = modkernel32.NewProc("GetEnvironmentVariableW");
procSetEnvironmentVariableW = modkernel32.NewProc("SetEnvironmentVariableW");
procSetFileTime = modkernel32.NewProc("SetFileTime");
procGetFileAttributesW = modkernel32.NewProc("GetFileAttributesW");
procSetFileAttributesW = modkernel32.NewProc("SetFileAttributesW");
procGetFileAttributesExW = modkernel32.NewProc("GetFileAttributesExW");
procGetCommandLineW = modkernel32.NewProc("GetCommandLineW");
procCommandLineToArgvW = modshell32.NewProc("CommandLineToArgvW");
procLocalFree = modkernel32.NewProc("LocalFree");
procSetHandleInformation = modkernel32.NewProc("SetHandleInformation");
procFlushFileBuffers = modkernel32.NewProc("FlushFileBuffers");
procGetFullPathNameW = modkernel32.NewProc("GetFullPathNameW");
procGetLongPathNameW = modkernel32.NewProc("GetLongPathNameW");
procGetShortPathNameW = modkernel32.NewProc("GetShortPathNameW");
procCreateFileMappingW = modkernel32.NewProc("CreateFileMappingW");
procMapViewOfFile = modkernel32.NewProc("MapViewOfFile");
procUnmapViewOfFile = modkernel32.NewProc("UnmapViewOfFile");
procFlushViewOfFile = modkernel32.NewProc("FlushViewOfFile");
procVirtualLock = modkernel32.NewProc("VirtualLock");
procVirtualUnlock = modkernel32.NewProc("VirtualUnlock");
procTransmitFile = modmswsock.NewProc("TransmitFile");
procReadDirectoryChangesW = modkernel32.NewProc("ReadDirectoryChangesW");
procCertOpenSystemStoreW = modcrypt32.NewProc("CertOpenSystemStoreW");
procCertOpenStore = modcrypt32.NewProc("CertOpenStore");
procCertEnumCertificatesInStore = modcrypt32.NewProc("CertEnumCertificatesInStore");
procCertAddCertificateContextToStore = modcrypt32.NewProc("CertAddCertificateContextToStore");
procCertCloseStore = modcrypt32.NewProc("CertCloseStore");
procCertGetCertificateChain = modcrypt32.NewProc("CertGetCertificateChain");
procCertFreeCertificateChain = modcrypt32.NewProc("CertFreeCertificateChain");
procCertCreateCertificateContext = modcrypt32.NewProc("CertCreateCertificateContext");
procCertFreeCertificateContext = modcrypt32.NewProc("CertFreeCertificateContext");
procCertVerifyCertificateChainPolicy = modcrypt32.NewProc("CertVerifyCertificateChainPolicy");
procRegOpenKeyExW = modadvapi32.NewProc("RegOpenKeyExW");
procRegCloseKey = modadvapi32.NewProc("RegCloseKey");
procRegQueryInfoKeyW = modadvapi32.NewProc("RegQueryInfoKeyW");
procRegEnumKeyExW = modadvapi32.NewProc("RegEnumKeyExW");
procRegQueryValueExW = modadvapi32.NewProc("RegQueryValueExW");
procGetCurrentProcessId = modkernel32.NewProc("GetCurrentProcessId");
procGetConsoleMode = modkernel32.NewProc("GetConsoleMode");
procWriteConsoleW = modkernel32.NewProc("WriteConsoleW");
procReadConsoleW = modkernel32.NewProc("ReadConsoleW");
procCreateToolhelp32Snapshot = modkernel32.NewProc("CreateToolhelp32Snapshot");
procProcess32FirstW = modkernel32.NewProc("Process32FirstW");
procProcess32NextW = modkernel32.NewProc("Process32NextW");
procDeviceIoControl = modkernel32.NewProc("DeviceIoControl");
procCreateSymbolicLinkW = modkernel32.NewProc("CreateSymbolicLinkW");
procCreateHardLinkW = modkernel32.NewProc("CreateHardLinkW");
procWSAStartup = modws2_32.NewProc("WSAStartup");
procWSACleanup = modws2_32.NewProc("WSACleanup");
procWSAIoctl = modws2_32.NewProc("WSAIoctl");
procsocket = modws2_32.NewProc("socket");
procsetsockopt = modws2_32.NewProc("setsockopt");
procgetsockopt = modws2_32.NewProc("getsockopt");
procbind = modws2_32.NewProc("bind");
procconnect = modws2_32.NewProc("connect");
procgetsockname = modws2_32.NewProc("getsockname");
procgetpeername = modws2_32.NewProc("getpeername");
proclisten = modws2_32.NewProc("listen");
procshutdown = modws2_32.NewProc("shutdown");
procclosesocket = modws2_32.NewProc("closesocket");
procAcceptEx = modmswsock.NewProc("AcceptEx");
procGetAcceptExSockaddrs = modmswsock.NewProc("GetAcceptExSockaddrs");
procWSARecv = modws2_32.NewProc("WSARecv");
procWSASend = modws2_32.NewProc("WSASend");
procWSARecvFrom = modws2_32.NewProc("WSARecvFrom");
procWSASendTo = modws2_32.NewProc("WSASendTo");
procgethostbyname = modws2_32.NewProc("gethostbyname");
procgetservbyname = modws2_32.NewProc("getservbyname");
procntohs = modws2_32.NewProc("ntohs");
procgetprotobyname = modws2_32.NewProc("getprotobyname");
procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W");
procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree");
procDnsNameCompare_W = moddnsapi.NewProc("DnsNameCompare_W");
procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW");
procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW");
procGetIfEntry = modiphlpapi.NewProc("GetIfEntry");
procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo");
procSetFileCompletionNotificationModes = modkernel32.NewProc("SetFileCompletionNotificationModes");
procWSAEnumProtocolsW = modws2_32.NewProc("WSAEnumProtocolsW");
procTranslateNameW = modsecur32.NewProc("TranslateNameW");
procGetUserNameExW = modsecur32.NewProc("GetUserNameExW");
procNetUserGetInfo = modnetapi32.NewProc("NetUserGetInfo");
procNetGetJoinInformation = modnetapi32.NewProc("NetGetJoinInformation");
procNetApiBufferFree = modnetapi32.NewProc("NetApiBufferFree");
procLookupAccountSidW = modadvapi32.NewProc("LookupAccountSidW");
procLookupAccountNameW = modadvapi32.NewProc("LookupAccountNameW");
procConvertSidToStringSidW = modadvapi32.NewProc("ConvertSidToStringSidW");
procConvertStringSidToSidW = modadvapi32.NewProc("ConvertStringSidToSidW");
procGetLengthSid = modadvapi32.NewProc("GetLengthSid");
procCopySid = modadvapi32.NewProc("CopySid");
procOpenProcessToken = modadvapi32.NewProc("OpenProcessToken");
procGetTokenInformation = modadvapi32.NewProc("GetTokenInformation");
procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW");
$pkg.Stdin = getStdHandle(-10);
$pkg.Stdout = getStdHandle(-11);
$pkg.Stderr = getStdHandle(-12);
$pkg.OID_PKIX_KP_SERVER_AUTH = (new sliceType($stringToBytes("1.3.6.1.5.5.7.3.1\x00")));
$pkg.OID_SERVER_GATED_CRYPTO = (new sliceType($stringToBytes("1.3.6.1.4.1.311.10.3.3\x00")));
$pkg.OID_SGC_NETSCAPE = (new sliceType($stringToBytes("2.16.840.1.113730.4.1\x00")));
$pkg.WSAID_CONNECTEX = new GUID.ptr(631375801, 56819, 18016, $toNativeArray($kindUint8, [142, 233, 118, 229, 140, 116, 6, 62]));
init();
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["internal/syscall/windows"] = (function() {
var $pkg = {}, $init, sysdll, syscall, SocketAddress, IpAdapterUnicastAddress, IpAdapterAnycastAddress, IpAdapterMulticastAddress, IpAdapterDnsServerAdapter, IpAdapterPrefix, IpAdapterAddresses, ptrType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, arrayType$2, arrayType$3, modiphlpapi, modkernel32, modnetapi32, modadvapi32, procGetAdaptersAddresses, procGetComputerNameExW, procMoveFileExW, procGetModuleFileNameW, procGetACP, procGetConsoleCP, procMultiByteToWideChar, procGetCurrentThread, procNetShareAdd, procNetShareDel, procImpersonateSelf, procRevertToSelf, procOpenThreadToken, procLookupPrivilegeValueW, procAdjustTokenPrivileges, GetAdaptersAddresses;
sysdll = $packages["internal/syscall/windows/sysdll"];
syscall = $packages["syscall"];
SocketAddress = $pkg.SocketAddress = $newType(0, $kindStruct, "windows.SocketAddress", true, "internal/syscall/windows", true, function(Sockaddr_, SockaddrLength_) {
this.$val = this;
if (arguments.length === 0) {
this.Sockaddr = ptrType.nil;
this.SockaddrLength = 0;
return;
}
this.Sockaddr = Sockaddr_;
this.SockaddrLength = SockaddrLength_;
});
IpAdapterUnicastAddress = $pkg.IpAdapterUnicastAddress = $newType(0, $kindStruct, "windows.IpAdapterUnicastAddress", true, "internal/syscall/windows", true, function(Length_, Flags_, Next_, Address_, PrefixOrigin_, SuffixOrigin_, DadState_, ValidLifetime_, PreferredLifetime_, LeaseLifetime_, OnLinkPrefixLength_) {
this.$val = this;
if (arguments.length === 0) {
this.Length = 0;
this.Flags = 0;
this.Next = ptrType$1.nil;
this.Address = new SocketAddress.ptr(ptrType.nil, 0);
this.PrefixOrigin = 0;
this.SuffixOrigin = 0;
this.DadState = 0;
this.ValidLifetime = 0;
this.PreferredLifetime = 0;
this.LeaseLifetime = 0;
this.OnLinkPrefixLength = 0;
return;
}
this.Length = Length_;
this.Flags = Flags_;
this.Next = Next_;
this.Address = Address_;
this.PrefixOrigin = PrefixOrigin_;
this.SuffixOrigin = SuffixOrigin_;
this.DadState = DadState_;
this.ValidLifetime = ValidLifetime_;
this.PreferredLifetime = PreferredLifetime_;
this.LeaseLifetime = LeaseLifetime_;
this.OnLinkPrefixLength = OnLinkPrefixLength_;
});
IpAdapterAnycastAddress = $pkg.IpAdapterAnycastAddress = $newType(0, $kindStruct, "windows.IpAdapterAnycastAddress", true, "internal/syscall/windows", true, function(Length_, Flags_, Next_, Address_) {
this.$val = this;
if (arguments.length === 0) {
this.Length = 0;
this.Flags = 0;
this.Next = ptrType$2.nil;
this.Address = new SocketAddress.ptr(ptrType.nil, 0);
return;
}
this.Length = Length_;
this.Flags = Flags_;
this.Next = Next_;
this.Address = Address_;
});
IpAdapterMulticastAddress = $pkg.IpAdapterMulticastAddress = $newType(0, $kindStruct, "windows.IpAdapterMulticastAddress", true, "internal/syscall/windows", true, function(Length_, Flags_, Next_, Address_) {
this.$val = this;
if (arguments.length === 0) {
this.Length = 0;
this.Flags = 0;
this.Next = ptrType$3.nil;
this.Address = new SocketAddress.ptr(ptrType.nil, 0);
return;
}
this.Length = Length_;
this.Flags = Flags_;
this.Next = Next_;
this.Address = Address_;
});
IpAdapterDnsServerAdapter = $pkg.IpAdapterDnsServerAdapter = $newType(0, $kindStruct, "windows.IpAdapterDnsServerAdapter", true, "internal/syscall/windows", true, function(Length_, Reserved_, Next_, Address_) {
this.$val = this;
if (arguments.length === 0) {
this.Length = 0;
this.Reserved = 0;
this.Next = ptrType$4.nil;
this.Address = new SocketAddress.ptr(ptrType.nil, 0);
return;
}
this.Length = Length_;
this.Reserved = Reserved_;
this.Next = Next_;
this.Address = Address_;
});
IpAdapterPrefix = $pkg.IpAdapterPrefix = $newType(0, $kindStruct, "windows.IpAdapterPrefix", true, "internal/syscall/windows", true, function(Length_, Flags_, Next_, Address_, PrefixLength_) {
this.$val = this;
if (arguments.length === 0) {
this.Length = 0;
this.Flags = 0;
this.Next = ptrType$5.nil;
this.Address = new SocketAddress.ptr(ptrType.nil, 0);
this.PrefixLength = 0;
return;
}
this.Length = Length_;
this.Flags = Flags_;
this.Next = Next_;
this.Address = Address_;
this.PrefixLength = PrefixLength_;
});
IpAdapterAddresses = $pkg.IpAdapterAddresses = $newType(0, $kindStruct, "windows.IpAdapterAddresses", true, "internal/syscall/windows", true, function(Length_, IfIndex_, Next_, AdapterName_, FirstUnicastAddress_, FirstAnycastAddress_, FirstMulticastAddress_, FirstDnsServerAddress_, DnsSuffix_, Description_, FriendlyName_, PhysicalAddress_, PhysicalAddressLength_, Flags_, Mtu_, IfType_, OperStatus_, Ipv6IfIndex_, ZoneIndices_, FirstPrefix_) {
this.$val = this;
if (arguments.length === 0) {
this.Length = 0;
this.IfIndex = 0;
this.Next = ptrType$6.nil;
this.AdapterName = ptrType$7.nil;
this.FirstUnicastAddress = ptrType$1.nil;
this.FirstAnycastAddress = ptrType$2.nil;
this.FirstMulticastAddress = ptrType$3.nil;
this.FirstDnsServerAddress = ptrType$4.nil;
this.DnsSuffix = ptrType$8.nil;
this.Description = ptrType$8.nil;
this.FriendlyName = ptrType$8.nil;
this.PhysicalAddress = arrayType$2.zero();
this.PhysicalAddressLength = 0;
this.Flags = 0;
this.Mtu = 0;
this.IfType = 0;
this.OperStatus = 0;
this.Ipv6IfIndex = 0;
this.ZoneIndices = arrayType$3.zero();
this.FirstPrefix = ptrType$5.nil;
return;
}
this.Length = Length_;
this.IfIndex = IfIndex_;
this.Next = Next_;
this.AdapterName = AdapterName_;
this.FirstUnicastAddress = FirstUnicastAddress_;
this.FirstAnycastAddress = FirstAnycastAddress_;
this.FirstMulticastAddress = FirstMulticastAddress_;
this.FirstDnsServerAddress = FirstDnsServerAddress_;
this.DnsSuffix = DnsSuffix_;
this.Description = Description_;
this.FriendlyName = FriendlyName_;
this.PhysicalAddress = PhysicalAddress_;
this.PhysicalAddressLength = PhysicalAddressLength_;
this.Flags = Flags_;
this.Mtu = Mtu_;
this.IfType = IfType_;
this.OperStatus = OperStatus_;
this.Ipv6IfIndex = Ipv6IfIndex_;
this.ZoneIndices = ZoneIndices_;
this.FirstPrefix = FirstPrefix_;
});
ptrType = $ptrType(syscall.RawSockaddrAny);
ptrType$1 = $ptrType(IpAdapterUnicastAddress);
ptrType$2 = $ptrType(IpAdapterAnycastAddress);
ptrType$3 = $ptrType(IpAdapterMulticastAddress);
ptrType$4 = $ptrType(IpAdapterDnsServerAdapter);
ptrType$5 = $ptrType(IpAdapterPrefix);
ptrType$6 = $ptrType(IpAdapterAddresses);
ptrType$7 = $ptrType($Uint8);
ptrType$8 = $ptrType($Uint16);
arrayType$2 = $arrayType($Uint8, 8);
arrayType$3 = $arrayType($Uint32, 16);
GetAdaptersAddresses = function(family, flags, reserved, adapterAddresses, sizePointer) {
var $ptr, _tuple, adapterAddresses, errcode, family, flags, r0, reserved, sizePointer;
errcode = $ifaceNil;
_tuple = syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, ((family >>> 0)), ((flags >>> 0)), (reserved), ((adapterAddresses)), ((sizePointer)), 0);
r0 = _tuple[0];
if (!((r0 === 0))) {
errcode = new syscall.Errno(((r0 >>> 0)));
}
return errcode;
};
$pkg.GetAdaptersAddresses = GetAdaptersAddresses;
SocketAddress.init("", [{prop: "Sockaddr", name: "Sockaddr", exported: true, typ: ptrType, tag: ""}, {prop: "SockaddrLength", name: "SockaddrLength", exported: true, typ: $Int32, tag: ""}]);
IpAdapterUnicastAddress.init("", [{prop: "Length", name: "Length", exported: true, typ: $Uint32, tag: ""}, {prop: "Flags", name: "Flags", exported: true, typ: $Uint32, tag: ""}, {prop: "Next", name: "Next", exported: true, typ: ptrType$1, tag: ""}, {prop: "Address", name: "Address", exported: true, typ: SocketAddress, tag: ""}, {prop: "PrefixOrigin", name: "PrefixOrigin", exported: true, typ: $Int32, tag: ""}, {prop: "SuffixOrigin", name: "SuffixOrigin", exported: true, typ: $Int32, tag: ""}, {prop: "DadState", name: "DadState", exported: true, typ: $Int32, tag: ""}, {prop: "ValidLifetime", name: "ValidLifetime", exported: true, typ: $Uint32, tag: ""}, {prop: "PreferredLifetime", name: "PreferredLifetime", exported: true, typ: $Uint32, tag: ""}, {prop: "LeaseLifetime", name: "LeaseLifetime", exported: true, typ: $Uint32, tag: ""}, {prop: "OnLinkPrefixLength", name: "OnLinkPrefixLength", exported: true, typ: $Uint8, tag: ""}]);
IpAdapterAnycastAddress.init("", [{prop: "Length", name: "Length", exported: true, typ: $Uint32, tag: ""}, {prop: "Flags", name: "Flags", exported: true, typ: $Uint32, tag: ""}, {prop: "Next", name: "Next", exported: true, typ: ptrType$2, tag: ""}, {prop: "Address", name: "Address", exported: true, typ: SocketAddress, tag: ""}]);
IpAdapterMulticastAddress.init("", [{prop: "Length", name: "Length", exported: true, typ: $Uint32, tag: ""}, {prop: "Flags", name: "Flags", exported: true, typ: $Uint32, tag: ""}, {prop: "Next", name: "Next", exported: true, typ: ptrType$3, tag: ""}, {prop: "Address", name: "Address", exported: true, typ: SocketAddress, tag: ""}]);
IpAdapterDnsServerAdapter.init("", [{prop: "Length", name: "Length", exported: true, typ: $Uint32, tag: ""}, {prop: "Reserved", name: "Reserved", exported: true, typ: $Uint32, tag: ""}, {prop: "Next", name: "Next", exported: true, typ: ptrType$4, tag: ""}, {prop: "Address", name: "Address", exported: true, typ: SocketAddress, tag: ""}]);
IpAdapterPrefix.init("", [{prop: "Length", name: "Length", exported: true, typ: $Uint32, tag: ""}, {prop: "Flags", name: "Flags", exported: true, typ: $Uint32, tag: ""}, {prop: "Next", name: "Next", exported: true, typ: ptrType$5, tag: ""}, {prop: "Address", name: "Address", exported: true, typ: SocketAddress, tag: ""}, {prop: "PrefixLength", name: "PrefixLength", exported: true, typ: $Uint32, tag: ""}]);
IpAdapterAddresses.init("", [{prop: "Length", name: "Length", exported: true, typ: $Uint32, tag: ""}, {prop: "IfIndex", name: "IfIndex", exported: true, typ: $Uint32, tag: ""}, {prop: "Next", name: "Next", exported: true, typ: ptrType$6, tag: ""}, {prop: "AdapterName", name: "AdapterName", exported: true, typ: ptrType$7, tag: ""}, {prop: "FirstUnicastAddress", name: "FirstUnicastAddress", exported: true, typ: ptrType$1, tag: ""}, {prop: "FirstAnycastAddress", name: "FirstAnycastAddress", exported: true, typ: ptrType$2, tag: ""}, {prop: "FirstMulticastAddress", name: "FirstMulticastAddress", exported: true, typ: ptrType$3, tag: ""}, {prop: "FirstDnsServerAddress", name: "FirstDnsServerAddress", exported: true, typ: ptrType$4, tag: ""}, {prop: "DnsSuffix", name: "DnsSuffix", exported: true, typ: ptrType$8, tag: ""}, {prop: "Description", name: "Description", exported: true, typ: ptrType$8, tag: ""}, {prop: "FriendlyName", name: "FriendlyName", exported: true, typ: ptrType$8, tag: ""}, {prop: "PhysicalAddress", name: "PhysicalAddress", exported: true, typ: arrayType$2, tag: ""}, {prop: "PhysicalAddressLength", name: "PhysicalAddressLength", exported: true, typ: $Uint32, tag: ""}, {prop: "Flags", name: "Flags", exported: true, typ: $Uint32, tag: ""}, {prop: "Mtu", name: "Mtu", exported: true, typ: $Uint32, tag: ""}, {prop: "IfType", name: "IfType", exported: true, typ: $Uint32, tag: ""}, {prop: "OperStatus", name: "OperStatus", exported: true, typ: $Uint32, tag: ""}, {prop: "Ipv6IfIndex", name: "Ipv6IfIndex", exported: true, typ: $Uint32, tag: ""}, {prop: "ZoneIndices", name: "ZoneIndices", exported: true, typ: arrayType$3, tag: ""}, {prop: "FirstPrefix", name: "FirstPrefix", exported: true, typ: ptrType$5, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = sysdll.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = syscall.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
modiphlpapi = syscall.NewLazyDLL(sysdll.Add("iphlpapi.dll"));
modkernel32 = syscall.NewLazyDLL(sysdll.Add("kernel32.dll"));
modnetapi32 = syscall.NewLazyDLL(sysdll.Add("netapi32.dll"));
modadvapi32 = syscall.NewLazyDLL(sysdll.Add("advapi32.dll"));
procGetAdaptersAddresses = modiphlpapi.NewProc("GetAdaptersAddresses");
procGetComputerNameExW = modkernel32.NewProc("GetComputerNameExW");
procMoveFileExW = modkernel32.NewProc("MoveFileExW");
procGetModuleFileNameW = modkernel32.NewProc("GetModuleFileNameW");
procGetACP = modkernel32.NewProc("GetACP");
procGetConsoleCP = modkernel32.NewProc("GetConsoleCP");
procMultiByteToWideChar = modkernel32.NewProc("MultiByteToWideChar");
procGetCurrentThread = modkernel32.NewProc("GetCurrentThread");
procNetShareAdd = modnetapi32.NewProc("NetShareAdd");
procNetShareDel = modnetapi32.NewProc("NetShareDel");
procImpersonateSelf = modadvapi32.NewProc("ImpersonateSelf");
procRevertToSelf = modadvapi32.NewProc("RevertToSelf");
procOpenThreadToken = modadvapi32.NewProc("OpenThreadToken");
procLookupPrivilegeValueW = modadvapi32.NewProc("LookupPrivilegeValueW");
procAdjustTokenPrivileges = modadvapi32.NewProc("AdjustTokenPrivileges");
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["github.com/gopherjs/gopherjs/nosync"] = (function() {
var $pkg = {}, $init, Mutex, Once, Pool, ptrType, funcType, ptrType$3, sliceType, ptrType$4, funcType$1;
Mutex = $pkg.Mutex = $newType(0, $kindStruct, "nosync.Mutex", true, "github.com/gopherjs/gopherjs/nosync", true, function(locked_) {
this.$val = this;
if (arguments.length === 0) {
this.locked = false;
return;
}
this.locked = locked_;
});
Once = $pkg.Once = $newType(0, $kindStruct, "nosync.Once", true, "github.com/gopherjs/gopherjs/nosync", true, function(doing_, done_) {
this.$val = this;
if (arguments.length === 0) {
this.doing = false;
this.done = false;
return;
}
this.doing = doing_;
this.done = done_;
});
Pool = $pkg.Pool = $newType(0, $kindStruct, "nosync.Pool", true, "github.com/gopherjs/gopherjs/nosync", true, function(store_, New_) {
this.$val = this;
if (arguments.length === 0) {
this.store = sliceType.nil;
this.New = $throwNilPointerError;
return;
}
this.store = store_;
this.New = New_;
});
ptrType = $ptrType(Mutex);
funcType = $funcType([], [], false);
ptrType$3 = $ptrType(Once);
sliceType = $sliceType($emptyInterface);
ptrType$4 = $ptrType(Pool);
funcType$1 = $funcType([], [$emptyInterface], false);
Mutex.ptr.prototype.Lock = function() {
var $ptr, m;
m = this;
if (m.locked) {
$panic(new $String("nosync: mutex is already locked"));
}
m.locked = true;
};
Mutex.prototype.Lock = function() { return this.$val.Lock(); };
Mutex.ptr.prototype.Unlock = function() {
var $ptr, m;
m = this;
if (!m.locked) {
$panic(new $String("nosync: unlock of unlocked mutex"));
}
m.locked = false;
};
Mutex.prototype.Unlock = function() { return this.$val.Unlock(); };
Once.ptr.prototype.Do = function(f) {
var $ptr, f, o, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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);
o = [o];
o[0] = this;
if (o[0].done) {
$s = -1; return;
}
if (o[0].doing) {
$panic(new $String("nosync: Do called within f"));
}
o[0].doing = true;
$deferred.push([(function(o) { return function() {
var $ptr;
o[0].doing = false;
o[0].done = true;
}; })(o), []]);
$r = f(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Once.ptr.prototype.Do }; } $f.$ptr = $ptr; $f.f = f; $f.o = o; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Once.prototype.Do = function(f) { return this.$val.Do(f); };
Pool.ptr.prototype.Get = function() {
var $ptr, _r, p, x, x$1, x$2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
p = this;
/* */ if (p.store.$length === 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (p.store.$length === 0) { */ case 1:
/* */ if (!(p.New === $throwNilPointerError)) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!(p.New === $throwNilPointerError)) { */ case 3:
_r = p.New(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 4:
$s = -1; return $ifaceNil;
/* } */ case 2:
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]));
p.store = $subslice(p.store, 0, (p.store.$length - 1 >> 0));
$s = -1; return x$2;
/* */ } return; } if ($f === undefined) { $f = { $blk: Pool.ptr.prototype.Get }; } $f.$ptr = $ptr; $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;
};
Pool.prototype.Get = function() { return this.$val.Get(); };
Pool.ptr.prototype.Put = function(x) {
var $ptr, p, x;
p = this;
if ($interfaceIsEqual(x, $ifaceNil)) {
return;
}
p.store = $append(p.store, x);
};
Pool.prototype.Put = function(x) { return this.$val.Put(x); };
ptrType.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}];
ptrType$3.methods = [{prop: "Do", name: "Do", pkg: "", typ: $funcType([funcType], [], false)}];
ptrType$4.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Put", name: "Put", pkg: "", typ: $funcType([$emptyInterface], [], false)}];
Mutex.init("github.com/gopherjs/gopherjs/nosync", [{prop: "locked", name: "locked", exported: false, typ: $Bool, tag: ""}]);
Once.init("github.com/gopherjs/gopherjs/nosync", [{prop: "doing", name: "doing", exported: false, typ: $Bool, tag: ""}, {prop: "done", name: "done", exported: false, typ: $Bool, tag: ""}]);
Pool.init("github.com/gopherjs/gopherjs/nosync", [{prop: "store", name: "store", exported: false, typ: sliceType, tag: ""}, {prop: "New", name: "New", exported: true, typ: funcType$1, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["internal/syscall/windows/registry"] = (function() {
var $pkg = {}, $init, errors, sysdll, io, syscall, utf16, Key, KeyInfo, ptrType, sliceType, sliceType$1, ptrType$1, ptrType$2, ptrType$3, ptrType$5, ptrType$6, sliceType$2, ptrType$7, sliceType$3, errERROR_IO_PENDING, modadvapi32, modkernel32, procRegCreateKeyExW, procRegDeleteKeyW, procRegSetValueExW, procRegEnumValueW, procRegDeleteValueW, procRegLoadMUIStringW, procExpandEnvironmentStringsW, OpenKey, ExpandString, errnoErr, regSetValueEx, regEnumValue, regDeleteValue, regLoadMUIString, expandEnvironmentStrings;
errors = $packages["errors"];
sysdll = $packages["internal/syscall/windows/sysdll"];
io = $packages["io"];
syscall = $packages["syscall"];
utf16 = $packages["unicode/utf16"];
Key = $pkg.Key = $newType(4, $kindUintptr, "registry.Key", true, "internal/syscall/windows/registry", true, null);
KeyInfo = $pkg.KeyInfo = $newType(0, $kindStruct, "registry.KeyInfo", true, "internal/syscall/windows/registry", true, function(SubKeyCount_, MaxSubKeyLen_, ValueCount_, MaxValueNameLen_, MaxValueLen_, lastWriteTime_) {
this.$val = this;
if (arguments.length === 0) {
this.SubKeyCount = 0;
this.MaxSubKeyLen = 0;
this.ValueCount = 0;
this.MaxValueNameLen = 0;
this.MaxValueLen = 0;
this.lastWriteTime = new syscall.Filetime.ptr(0, 0);
return;
}
this.SubKeyCount = SubKeyCount_;
this.MaxSubKeyLen = MaxSubKeyLen_;
this.ValueCount = ValueCount_;
this.MaxValueNameLen = MaxValueNameLen_;
this.MaxValueLen = MaxValueLen_;
this.lastWriteTime = lastWriteTime_;
});
ptrType = $ptrType(syscall.Handle);
sliceType = $sliceType($String);
sliceType$1 = $sliceType($Uint16);
ptrType$1 = $ptrType($Uint16);
ptrType$2 = $ptrType($Uint32);
ptrType$3 = $ptrType(syscall.Filetime);
ptrType$5 = $ptrType(KeyInfo);
ptrType$6 = $ptrType($Uint8);
sliceType$2 = $sliceType($Uint8);
ptrType$7 = $ptrType($Uint64);
sliceType$3 = $sliceType($Int32);
Key.prototype.Close = function() {
var $ptr, k;
k = this.$val;
return syscall.RegCloseKey(((k >>> 0)));
};
$ptrType(Key).prototype.Close = function() { return new Key(this.$get()).Close(); };
OpenKey = function(k, path, access) {
var $ptr, _tuple, access, err, k, p, path, subkey, subkey$24ptr;
_tuple = syscall.UTF16PtrFromString(path);
p = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [0, err];
}
subkey = 0;
err = syscall.RegOpenKeyEx(((k >>> 0)), p, 0, access, (subkey$24ptr || (subkey$24ptr = new ptrType(function() { return subkey; }, function($v) { subkey = $v; }))));
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [0, err];
}
return [((subkey >>> 0)), $ifaceNil];
};
$pkg.OpenKey = OpenKey;
Key.prototype.ReadSubKeyNames = function(n) {
var $ptr, _tuple, buf, err, err$1, i, k, ki, l, n, names;
k = this.$val;
_tuple = new Key(k).Stat();
ki = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [sliceType.nil, err];
}
names = $makeSlice(sliceType, 0, ki.SubKeyCount);
buf = $makeSlice(sliceType$1, (ki.MaxSubKeyLen + 1 >>> 0));
i = 0;
loopItems:
while (true) {
l = [l];
if (n > 0) {
if (names.$length === n) {
return [names, $ifaceNil];
}
}
l[0] = ((buf.$length >>> 0));
while (true) {
err$1 = syscall.RegEnumKeyEx(((k >>> 0)), i, $indexPtr(buf.$array, buf.$offset + 0, ptrType$1), (l.$ptr || (l.$ptr = new ptrType$2(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, l))), ptrType$2.nil, ptrType$1.nil, ptrType$2.nil, ptrType$3.nil);
if ($interfaceIsEqual(err$1, $ifaceNil)) {
break;
}
if ($interfaceIsEqual(err$1, new syscall.Errno(234))) {
l[0] = ((($imul(2, buf.$length)) >>> 0));
buf = $makeSlice(sliceType$1, l[0]);
continue;
}
if ($interfaceIsEqual(err$1, new syscall.Errno(259))) {
break loopItems;
}
return [names, err$1];
}
names = $append(names, syscall.UTF16ToString($subslice(buf, 0, l[0])));
i = i + (1) >>> 0;
}
if (n > names.$length) {
return [names, io.EOF];
}
return [names, $ifaceNil];
};
$ptrType(Key).prototype.ReadSubKeyNames = function(n) { return new Key(this.$get()).ReadSubKeyNames(n); };
Key.prototype.Stat = function() {
var $ptr, err, k, ki;
k = this.$val;
ki = new KeyInfo.ptr(0, 0, 0, 0, 0, new syscall.Filetime.ptr(0, 0));
err = syscall.RegQueryInfoKey(((k >>> 0)), ptrType$1.nil, ptrType$2.nil, ptrType$2.nil, (ki.$ptr_SubKeyCount || (ki.$ptr_SubKeyCount = new ptrType$2(function() { return this.$target.SubKeyCount; }, function($v) { this.$target.SubKeyCount = $v; }, ki))), (ki.$ptr_MaxSubKeyLen || (ki.$ptr_MaxSubKeyLen = new ptrType$2(function() { return this.$target.MaxSubKeyLen; }, function($v) { this.$target.MaxSubKeyLen = $v; }, ki))), ptrType$2.nil, (ki.$ptr_ValueCount || (ki.$ptr_ValueCount = new ptrType$2(function() { return this.$target.ValueCount; }, function($v) { this.$target.ValueCount = $v; }, ki))), (ki.$ptr_MaxValueNameLen || (ki.$ptr_MaxValueNameLen = new ptrType$2(function() { return this.$target.MaxValueNameLen; }, function($v) { this.$target.MaxValueNameLen = $v; }, ki))), (ki.$ptr_MaxValueLen || (ki.$ptr_MaxValueLen = new ptrType$2(function() { return this.$target.MaxValueLen; }, function($v) { this.$target.MaxValueLen = $v; }, ki))), ptrType$2.nil, ki.lastWriteTime);
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [ptrType$5.nil, err];
}
return [ki, $ifaceNil];
};
$ptrType(Key).prototype.Stat = function() { return new Key(this.$get()).Stat(); };
Key.prototype.GetValue = function(name, buf) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tuple, buf, err, k, l, l$24ptr, n, name, pbuf, pname, valtype, valtype$24ptr;
n = 0;
valtype = 0;
err = $ifaceNil;
k = this.$val;
_tuple = syscall.UTF16PtrFromString(name);
pname = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = 0;
_tmp$1 = 0;
_tmp$2 = err;
n = _tmp;
valtype = _tmp$1;
err = _tmp$2;
return [n, valtype, err];
}
pbuf = ptrType$6.nil;
if (buf.$length > 0) {
pbuf = (($sliceToArray(buf)));
}
l = ((buf.$length >>> 0));
err = syscall.RegQueryValueEx(((k >>> 0)), pname, ptrType$2.nil, (valtype$24ptr || (valtype$24ptr = new ptrType$2(function() { return valtype; }, function($v) { valtype = $v; }))), pbuf, (l$24ptr || (l$24ptr = new ptrType$2(function() { return l; }, function($v) { l = $v; }))));
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$3 = ((l >> 0));
_tmp$4 = valtype;
_tmp$5 = err;
n = _tmp$3;
valtype = _tmp$4;
err = _tmp$5;
return [n, valtype, err];
}
_tmp$6 = ((l >> 0));
_tmp$7 = valtype;
_tmp$8 = $ifaceNil;
n = _tmp$6;
valtype = _tmp$7;
err = _tmp$8;
return [n, valtype, err];
};
$ptrType(Key).prototype.GetValue = function(name, buf) { return new Key(this.$get()).GetValue(name, buf); };
Key.prototype.getValue = function(name, buf) {
var $ptr, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, buf, date, err, k, n, n$24ptr, name, p, t, t$24ptr, valtype;
date = sliceType$2.nil;
valtype = 0;
err = $ifaceNil;
k = this.$val;
_tuple = syscall.UTF16PtrFromString(name);
p = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = sliceType$2.nil;
_tmp$1 = 0;
_tmp$2 = err;
date = _tmp;
valtype = _tmp$1;
err = _tmp$2;
return [date, valtype, err];
}
t = 0;
n = ((buf.$length >>> 0));
while (true) {
err = syscall.RegQueryValueEx(((k >>> 0)), p, ptrType$2.nil, (t$24ptr || (t$24ptr = new ptrType$2(function() { return t; }, function($v) { t = $v; }))), (($sliceToArray(buf))), (n$24ptr || (n$24ptr = new ptrType$2(function() { return n; }, function($v) { n = $v; }))));
if ($interfaceIsEqual(err, $ifaceNil)) {
_tmp$3 = $subslice(buf, 0, n);
_tmp$4 = t;
_tmp$5 = $ifaceNil;
date = _tmp$3;
valtype = _tmp$4;
err = _tmp$5;
return [date, valtype, err];
}
if (!($interfaceIsEqual(err, new syscall.Errno(234)))) {
_tmp$6 = sliceType$2.nil;
_tmp$7 = 0;
_tmp$8 = err;
date = _tmp$6;
valtype = _tmp$7;
err = _tmp$8;
return [date, valtype, err];
}
if (n <= ((buf.$length >>> 0))) {
_tmp$9 = sliceType$2.nil;
_tmp$10 = 0;
_tmp$11 = err;
date = _tmp$9;
valtype = _tmp$10;
err = _tmp$11;
return [date, valtype, err];
}
buf = $makeSlice(sliceType$2, n);
}
};
$ptrType(Key).prototype.getValue = function(name, buf) { return new Key(this.$get()).getValue(name, buf); };
Key.prototype.GetStringValue = function(name) {
var $ptr, _1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, data, err, err2, k, name, typ, u, val, valtype;
val = "";
valtype = 0;
err = $ifaceNil;
k = this.$val;
_tuple = new Key(k).getValue(name, $makeSlice(sliceType$2, 64));
data = _tuple[0];
typ = _tuple[1];
err2 = _tuple[2];
if (!($interfaceIsEqual(err2, $ifaceNil))) {
_tmp = "";
_tmp$1 = typ;
_tmp$2 = err2;
val = _tmp;
valtype = _tmp$1;
err = _tmp$2;
return [val, valtype, err];
}
_1 = typ;
if ((_1 === (1)) || (_1 === (2))) {
} else {
_tmp$3 = "";
_tmp$4 = typ;
_tmp$5 = $pkg.ErrUnexpectedType;
val = _tmp$3;
valtype = _tmp$4;
err = _tmp$5;
return [val, valtype, err];
}
if (data.$length === 0) {
_tmp$6 = "";
_tmp$7 = typ;
_tmp$8 = $ifaceNil;
val = _tmp$6;
valtype = _tmp$7;
err = _tmp$8;
return [val, valtype, err];
}
u = new sliceType$1((($sliceToArray(data))));
_tmp$9 = syscall.UTF16ToString(u);
_tmp$10 = typ;
_tmp$11 = $ifaceNil;
val = _tmp$9;
valtype = _tmp$10;
err = _tmp$11;
return [val, valtype, err];
};
$ptrType(Key).prototype.GetStringValue = function(name) { return new Key(this.$get()).GetStringValue(name); };
Key.prototype.GetMUIStringValue = function(name) {
var $ptr, _tuple, _tuple$1, _tuple$2, buf, buflen, buflen$24ptr, err, k, name, pdir, pname, s;
k = this.$val;
_tuple = syscall.UTF16PtrFromString(name);
pname = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return ["", err];
}
buf = $makeSlice(sliceType$1, 1024);
buflen = 0;
pdir = ptrType$1.nil;
err = regLoadMUIString(((k >>> 0)), pname, $indexPtr(buf.$array, buf.$offset + 0, ptrType$1), ((buf.$length >>> 0)), (buflen$24ptr || (buflen$24ptr = new ptrType$2(function() { return buflen; }, function($v) { buflen = $v; }))), 0, pdir);
if ($interfaceIsEqual(err, new syscall.Errno(2))) {
s = "";
_tuple$1 = ExpandString("%SystemRoot%\\system32\\");
s = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return ["", err];
}
_tuple$2 = syscall.UTF16PtrFromString(s);
pdir = _tuple$2[0];
err = _tuple$2[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return ["", err];
}
err = regLoadMUIString(((k >>> 0)), pname, $indexPtr(buf.$array, buf.$offset + 0, ptrType$1), ((buf.$length >>> 0)), (buflen$24ptr || (buflen$24ptr = new ptrType$2(function() { return buflen; }, function($v) { buflen = $v; }))), 0, pdir);
}
while (true) {
if (!($interfaceIsEqual(err, new syscall.Errno(234)))) { break; }
if (buflen <= ((buf.$length >>> 0))) {
break;
}
buf = $makeSlice(sliceType$1, buflen);
err = regLoadMUIString(((k >>> 0)), pname, $indexPtr(buf.$array, buf.$offset + 0, ptrType$1), ((buf.$length >>> 0)), (buflen$24ptr || (buflen$24ptr = new ptrType$2(function() { return buflen; }, function($v) { buflen = $v; }))), 0, pdir);
}
if (!($interfaceIsEqual(err, $ifaceNil))) {
return ["", err];
}
return [syscall.UTF16ToString(buf), $ifaceNil];
};
$ptrType(Key).prototype.GetMUIStringValue = function(name) { return new Key(this.$get()).GetMUIStringValue(name); };
ExpandString = function(value) {
var $ptr, _tuple, _tuple$1, err, err$1, n, p, r, u, value;
if (value === "") {
return ["", $ifaceNil];
}
_tuple = syscall.UTF16PtrFromString(value);
p = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return ["", err];
}
r = $makeSlice(sliceType$1, 100);
while (true) {
_tuple$1 = expandEnvironmentStrings(p, $indexPtr(r.$array, r.$offset + 0, ptrType$1), ((r.$length >>> 0)));
n = _tuple$1[0];
err$1 = _tuple$1[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
return ["", err$1];
}
if (n <= ((r.$length >>> 0))) {
u = new sliceType$1((($sliceToArray(r))));
return [syscall.UTF16ToString(u), $ifaceNil];
}
r = $makeSlice(sliceType$1, n);
}
};
$pkg.ExpandString = ExpandString;
Key.prototype.GetStringsValue = function(name) {
var $ptr, _i, _q, _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, c, data, err, err2, from, i, k, name, p, typ, val, valtype, x;
val = sliceType.nil;
valtype = 0;
err = $ifaceNil;
k = this.$val;
_tuple = new Key(k).getValue(name, $makeSlice(sliceType$2, 64));
data = _tuple[0];
typ = _tuple[1];
err2 = _tuple[2];
if (!($interfaceIsEqual(err2, $ifaceNil))) {
_tmp = sliceType.nil;
_tmp$1 = typ;
_tmp$2 = err2;
val = _tmp;
valtype = _tmp$1;
err = _tmp$2;
return [val, valtype, err];
}
if (!((typ === 7))) {
_tmp$3 = sliceType.nil;
_tmp$4 = typ;
_tmp$5 = $pkg.ErrUnexpectedType;
val = _tmp$3;
valtype = _tmp$4;
err = _tmp$5;
return [val, valtype, err];
}
if (data.$length === 0) {
_tmp$6 = sliceType.nil;
_tmp$7 = typ;
_tmp$8 = $ifaceNil;
val = _tmp$6;
valtype = _tmp$7;
err = _tmp$8;
return [val, valtype, err];
}
p = $subslice(new sliceType$1((($sliceToArray(data)))), 0, (_q = data.$length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")));
if (p.$length === 0) {
_tmp$9 = sliceType.nil;
_tmp$10 = typ;
_tmp$11 = $ifaceNil;
val = _tmp$9;
valtype = _tmp$10;
err = _tmp$11;
return [val, valtype, err];
}
if ((x = p.$length - 1 >> 0, ((x < 0 || x >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x])) === 0) {
p = $subslice(p, 0, (p.$length - 1 >> 0));
}
val = $makeSlice(sliceType, 0, 5);
from = 0;
_ref = p;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (c === 0) {
val = $append(val, ($runesToString(utf16.Decode($subslice(p, from, i)))));
from = i + 1 >> 0;
}
_i++;
}
_tmp$12 = val;
_tmp$13 = typ;
_tmp$14 = $ifaceNil;
val = _tmp$12;
valtype = _tmp$13;
err = _tmp$14;
return [val, valtype, err];
};
$ptrType(Key).prototype.GetStringsValue = function(name) { return new Key(this.$get()).GetStringsValue(name); };
Key.prototype.GetIntegerValue = function(name) {
var $ptr, _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, _tuple, data, err, err2, k, name, typ, val, valtype;
val = new $Uint64(0, 0);
valtype = 0;
err = $ifaceNil;
k = this.$val;
_tuple = new Key(k).getValue(name, $makeSlice(sliceType$2, 8));
data = _tuple[0];
typ = _tuple[1];
err2 = _tuple[2];
if (!($interfaceIsEqual(err2, $ifaceNil))) {
_tmp = new $Uint64(0, 0);
_tmp$1 = typ;
_tmp$2 = err2;
val = _tmp;
valtype = _tmp$1;
err = _tmp$2;
return [val, valtype, err];
}
_1 = typ;
if (_1 === (4)) {
if (!((data.$length === 4))) {
_tmp$3 = new $Uint64(0, 0);
_tmp$4 = typ;
_tmp$5 = errors.New("DWORD value is not 4 bytes long");
val = _tmp$3;
valtype = _tmp$4;
err = _tmp$5;
return [val, valtype, err];
}
_tmp$6 = (new $Uint64(0, (0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0])));
_tmp$7 = 4;
_tmp$8 = $ifaceNil;
val = _tmp$6;
valtype = _tmp$7;
err = _tmp$8;
return [val, valtype, err];
} else if (_1 === (11)) {
if (!((data.$length === 8))) {
_tmp$9 = new $Uint64(0, 0);
_tmp$10 = typ;
_tmp$11 = errors.New("QWORD value is not 8 bytes long");
val = _tmp$9;
valtype = _tmp$10;
err = _tmp$11;
return [val, valtype, err];
}
_tmp$12 = ((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]));
_tmp$13 = 11;
_tmp$14 = $ifaceNil;
val = _tmp$12;
valtype = _tmp$13;
err = _tmp$14;
return [val, valtype, err];
} else {
_tmp$15 = new $Uint64(0, 0);
_tmp$16 = typ;
_tmp$17 = $pkg.ErrUnexpectedType;
val = _tmp$15;
valtype = _tmp$16;
err = _tmp$17;
return [val, valtype, err];
}
};
$ptrType(Key).prototype.GetIntegerValue = function(name) { return new Key(this.$get()).GetIntegerValue(name); };
Key.prototype.GetBinaryValue = function(name) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tuple, data, err, err2, k, name, typ, val, valtype;
val = sliceType$2.nil;
valtype = 0;
err = $ifaceNil;
k = this.$val;
_tuple = new Key(k).getValue(name, $makeSlice(sliceType$2, 64));
data = _tuple[0];
typ = _tuple[1];
err2 = _tuple[2];
if (!($interfaceIsEqual(err2, $ifaceNil))) {
_tmp = sliceType$2.nil;
_tmp$1 = typ;
_tmp$2 = err2;
val = _tmp;
valtype = _tmp$1;
err = _tmp$2;
return [val, valtype, err];
}
if (!((typ === 3))) {
_tmp$3 = sliceType$2.nil;
_tmp$4 = typ;
_tmp$5 = $pkg.ErrUnexpectedType;
val = _tmp$3;
valtype = _tmp$4;
err = _tmp$5;
return [val, valtype, err];
}
_tmp$6 = data;
_tmp$7 = typ;
_tmp$8 = $ifaceNil;
val = _tmp$6;
valtype = _tmp$7;
err = _tmp$8;
return [val, valtype, err];
};
$ptrType(Key).prototype.GetBinaryValue = function(name) { return new Key(this.$get()).GetBinaryValue(name); };
Key.prototype.setValue = function(name, valtype, data) {
var $ptr, _tuple, data, err, k, name, p, valtype;
k = this.$val;
_tuple = syscall.UTF16PtrFromString(name);
p = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return err;
}
if (data.$length === 0) {
return regSetValueEx(((k >>> 0)), p, 0, valtype, ptrType$6.nil, 0);
}
return regSetValueEx(((k >>> 0)), p, 0, valtype, $indexPtr(data.$array, data.$offset + 0, ptrType$6), ((data.$length >>> 0)));
};
$ptrType(Key).prototype.setValue = function(name, valtype, data) { return new Key(this.$get()).setValue(name, valtype, data); };
Key.prototype.SetDWordValue = function(name, value) {
var $ptr, k, name, value, value$24ptr;
k = this.$val;
return new Key(k).setValue(name, 4, new sliceType$2((((value$24ptr || (value$24ptr = new ptrType$2(function() { return value; }, function($v) { value = $v; })))))));
};
$ptrType(Key).prototype.SetDWordValue = function(name, value) { return new Key(this.$get()).SetDWordValue(name, value); };
Key.prototype.SetQWordValue = function(name, value) {
var $ptr, k, name, value, value$24ptr;
k = this.$val;
return new Key(k).setValue(name, 11, new sliceType$2((((value$24ptr || (value$24ptr = new ptrType$7(function() { return value; }, function($v) { value = $v; })))))));
};
$ptrType(Key).prototype.SetQWordValue = function(name, value) { return new Key(this.$get()).SetQWordValue(name, value); };
Key.prototype.setStringValue = function(name, valtype, value) {
var $ptr, _tuple, buf, err, k, name, v, valtype, value;
k = this.$val;
_tuple = syscall.UTF16FromString(value);
v = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return err;
}
buf = $subslice(new sliceType$2((($sliceToArray(v)))), 0, ($imul(v.$length, 2)));
return new Key(k).setValue(name, valtype, buf);
};
$ptrType(Key).prototype.setStringValue = function(name, valtype, value) { return new Key(this.$get()).setStringValue(name, valtype, value); };
Key.prototype.SetStringValue = function(name, value) {
var $ptr, k, name, value;
k = this.$val;
return new Key(k).setStringValue(name, 1, value);
};
$ptrType(Key).prototype.SetStringValue = function(name, value) { return new Key(this.$get()).SetStringValue(name, value); };
Key.prototype.SetExpandStringValue = function(name, value) {
var $ptr, k, name, value;
k = this.$val;
return new Key(k).setStringValue(name, 2, value);
};
$ptrType(Key).prototype.SetExpandStringValue = function(name, value) { return new Key(this.$get()).SetExpandStringValue(name, value); };
Key.prototype.SetStringsValue = function(name, value) {
var $ptr, _i, _ref, buf, i, k, name, s, ss, v, value;
k = this.$val;
ss = "";
_ref = value;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
i = 0;
while (true) {
if (!(i < s.length)) { break; }
if (s.charCodeAt(i) === 0) {
return errors.New("string cannot have 0 inside");
}
i = i + (1) >> 0;
}
ss = ss + (s + "\x00");
_i++;
}
v = utf16.Encode((new sliceType$3($stringToRunes(ss + "\x00"))));
buf = $subslice(new sliceType$2((($sliceToArray(v)))), 0, ($imul(v.$length, 2)));
return new Key(k).setValue(name, 7, buf);
};
$ptrType(Key).prototype.SetStringsValue = function(name, value) { return new Key(this.$get()).SetStringsValue(name, value); };
Key.prototype.SetBinaryValue = function(name, value) {
var $ptr, k, name, value;
k = this.$val;
return new Key(k).setValue(name, 3, value);
};
$ptrType(Key).prototype.SetBinaryValue = function(name, value) { return new Key(this.$get()).SetBinaryValue(name, value); };
Key.prototype.DeleteValue = function(name) {
var $ptr, k, name;
k = this.$val;
return regDeleteValue(((k >>> 0)), syscall.StringToUTF16Ptr(name));
};
$ptrType(Key).prototype.DeleteValue = function(name) { return new Key(this.$get()).DeleteValue(name); };
Key.prototype.ReadValueNames = function(n) {
var $ptr, _tuple, buf, err, err$1, i, k, ki, l, n, names;
k = this.$val;
_tuple = new Key(k).Stat();
ki = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [sliceType.nil, err];
}
names = $makeSlice(sliceType, 0, ki.ValueCount);
buf = $makeSlice(sliceType$1, (ki.MaxValueNameLen + 1 >>> 0));
i = 0;
loopItems:
while (true) {
l = [l];
if (n > 0) {
if (names.$length === n) {
return [names, $ifaceNil];
}
}
l[0] = ((buf.$length >>> 0));
while (true) {
err$1 = regEnumValue(((k >>> 0)), i, $indexPtr(buf.$array, buf.$offset + 0, ptrType$1), (l.$ptr || (l.$ptr = new ptrType$2(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, l))), ptrType$2.nil, ptrType$2.nil, ptrType$6.nil, ptrType$2.nil);
if ($interfaceIsEqual(err$1, $ifaceNil)) {
break;
}
if ($interfaceIsEqual(err$1, new syscall.Errno(234))) {
l[0] = ((($imul(2, buf.$length)) >>> 0));
buf = $makeSlice(sliceType$1, l[0]);
continue;
}
if ($interfaceIsEqual(err$1, new syscall.Errno(259))) {
break loopItems;
}
return [names, err$1];
}
names = $append(names, syscall.UTF16ToString($subslice(buf, 0, l[0])));
i = i + (1) >>> 0;
}
if (n > names.$length) {
return [names, io.EOF];
}
return [names, $ifaceNil];
};
$ptrType(Key).prototype.ReadValueNames = function(n) { return new Key(this.$get()).ReadValueNames(n); };
errnoErr = function(e) {
var $ptr, _1, e;
_1 = e;
if (_1 === (0)) {
return $ifaceNil;
} else if (_1 === (997)) {
return errERROR_IO_PENDING;
}
return new syscall.Errno(e);
};
regSetValueEx = function(key, valueName, reserved, vtype, buf, bufsize) {
var $ptr, _tuple, buf, bufsize, key, r0, regerrno, reserved, valueName, vtype;
regerrno = $ifaceNil;
_tuple = syscall.Syscall6(procRegSetValueExW.Addr(), 6, ((key >>> 0)), ((valueName)), ((reserved >>> 0)), ((vtype >>> 0)), ((buf)), ((bufsize >>> 0)));
r0 = _tuple[0];
if (!((r0 === 0))) {
regerrno = new syscall.Errno(((r0 >>> 0)));
}
return regerrno;
};
regEnumValue = function(key, index, name, nameLen, reserved, valtype, buf, buflen) {
var $ptr, _tuple, buf, buflen, index, key, name, nameLen, r0, regerrno, reserved, valtype;
regerrno = $ifaceNil;
_tuple = syscall.Syscall9(procRegEnumValueW.Addr(), 8, ((key >>> 0)), ((index >>> 0)), ((name)), ((nameLen)), ((reserved)), ((valtype)), ((buf)), ((buflen)), 0);
r0 = _tuple[0];
if (!((r0 === 0))) {
regerrno = new syscall.Errno(((r0 >>> 0)));
}
return regerrno;
};
regDeleteValue = function(key, name) {
var $ptr, _tuple, key, name, r0, regerrno;
regerrno = $ifaceNil;
_tuple = syscall.Syscall(procRegDeleteValueW.Addr(), 2, ((key >>> 0)), ((name)), 0);
r0 = _tuple[0];
if (!((r0 === 0))) {
regerrno = new syscall.Errno(((r0 >>> 0)));
}
return regerrno;
};
regLoadMUIString = function(key, name, buf, buflen, buflenCopied, flags, dir) {
var $ptr, _tuple, buf, buflen, buflenCopied, dir, flags, key, name, r0, regerrno;
regerrno = $ifaceNil;
_tuple = syscall.Syscall9(procRegLoadMUIStringW.Addr(), 7, ((key >>> 0)), ((name)), ((buf)), ((buflen >>> 0)), ((buflenCopied)), ((flags >>> 0)), ((dir)), 0, 0);
r0 = _tuple[0];
if (!((r0 === 0))) {
regerrno = new syscall.Errno(((r0 >>> 0)));
}
return regerrno;
};
expandEnvironmentStrings = function(src, dst, size) {
var $ptr, _tuple, dst, e1, err, n, r0, size, src;
n = 0;
err = $ifaceNil;
_tuple = syscall.Syscall(procExpandEnvironmentStringsW.Addr(), 3, ((src)), ((dst)), ((size >>> 0)));
r0 = _tuple[0];
e1 = _tuple[2];
n = ((r0 >>> 0));
if (n === 0) {
if (!((e1 === 0))) {
err = errnoErr(e1);
} else {
err = new syscall.Errno(536870951);
}
}
return [n, err];
};
Key.methods = [{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "ReadSubKeyNames", name: "ReadSubKeyNames", pkg: "", typ: $funcType([$Int], [sliceType, $error], false)}, {prop: "Stat", name: "Stat", pkg: "", typ: $funcType([], [ptrType$5, $error], false)}, {prop: "GetValue", name: "GetValue", pkg: "", typ: $funcType([$String, sliceType$2], [$Int, $Uint32, $error], false)}, {prop: "getValue", name: "getValue", pkg: "internal/syscall/windows/registry", typ: $funcType([$String, sliceType$2], [sliceType$2, $Uint32, $error], false)}, {prop: "GetStringValue", name: "GetStringValue", pkg: "", typ: $funcType([$String], [$String, $Uint32, $error], false)}, {prop: "GetMUIStringValue", name: "GetMUIStringValue", pkg: "", typ: $funcType([$String], [$String, $error], false)}, {prop: "GetStringsValue", name: "GetStringsValue", pkg: "", typ: $funcType([$String], [sliceType, $Uint32, $error], false)}, {prop: "GetIntegerValue", name: "GetIntegerValue", pkg: "", typ: $funcType([$String], [$Uint64, $Uint32, $error], false)}, {prop: "GetBinaryValue", name: "GetBinaryValue", pkg: "", typ: $funcType([$String], [sliceType$2, $Uint32, $error], false)}, {prop: "setValue", name: "setValue", pkg: "internal/syscall/windows/registry", typ: $funcType([$String, $Uint32, sliceType$2], [$error], false)}, {prop: "SetDWordValue", name: "SetDWordValue", pkg: "", typ: $funcType([$String, $Uint32], [$error], false)}, {prop: "SetQWordValue", name: "SetQWordValue", pkg: "", typ: $funcType([$String, $Uint64], [$error], false)}, {prop: "setStringValue", name: "setStringValue", pkg: "internal/syscall/windows/registry", typ: $funcType([$String, $Uint32, $String], [$error], false)}, {prop: "SetStringValue", name: "SetStringValue", pkg: "", typ: $funcType([$String, $String], [$error], false)}, {prop: "SetExpandStringValue", name: "SetExpandStringValue", pkg: "", typ: $funcType([$String, $String], [$error], false)}, {prop: "SetStringsValue", name: "SetStringsValue", pkg: "", typ: $funcType([$String, sliceType], [$error], false)}, {prop: "SetBinaryValue", name: "SetBinaryValue", pkg: "", typ: $funcType([$String, sliceType$2], [$error], false)}, {prop: "DeleteValue", name: "DeleteValue", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "ReadValueNames", name: "ReadValueNames", pkg: "", typ: $funcType([$Int], [sliceType, $error], false)}];
KeyInfo.init("internal/syscall/windows/registry", [{prop: "SubKeyCount", name: "SubKeyCount", exported: true, typ: $Uint32, tag: ""}, {prop: "MaxSubKeyLen", name: "MaxSubKeyLen", exported: true, typ: $Uint32, tag: ""}, {prop: "ValueCount", name: "ValueCount", exported: true, typ: $Uint32, tag: ""}, {prop: "MaxValueNameLen", name: "MaxValueNameLen", exported: true, typ: $Uint32, tag: ""}, {prop: "MaxValueLen", name: "MaxValueLen", exported: true, typ: $Uint32, tag: ""}, {prop: "lastWriteTime", name: "lastWriteTime", exported: false, typ: syscall.Filetime, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sysdll.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = syscall.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = utf16.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$pkg.ErrUnexpectedType = errors.New("unexpected key value type");
errERROR_IO_PENDING = new syscall.Errno(997);
modadvapi32 = syscall.NewLazyDLL(sysdll.Add("advapi32.dll"));
modkernel32 = syscall.NewLazyDLL(sysdll.Add("kernel32.dll"));
procRegCreateKeyExW = modadvapi32.NewProc("RegCreateKeyExW");
procRegDeleteKeyW = modadvapi32.NewProc("RegDeleteKeyW");
procRegSetValueExW = modadvapi32.NewProc("RegSetValueExW");
procRegEnumValueW = modadvapi32.NewProc("RegEnumValueW");
procRegDeleteValueW = modadvapi32.NewProc("RegDeleteValueW");
procRegLoadMUIStringW = modadvapi32.NewProc("RegLoadMUIStringW");
procExpandEnvironmentStringsW = modkernel32.NewProc("ExpandEnvironmentStringsW");
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["time"] = (function() {
var $pkg = {}, $init, errors, js, nosync, registry, runtime, syscall, runtimeTimer, ParseError, Timer, Ticker, Time, Month, Weekday, Duration, Location, zone, zoneTrans, sliceType, sliceType$1, ptrType, sliceType$2, structType, arrayType$1, sliceType$3, arrayType$2, arrayType$3, ptrType$1, chanType, funcType, arrayType$5, funcType$1, ptrType$2, ptrType$3, ptrType$4, chanType$1, ptrType$5, ptrType$6, std0x, longDayNames, shortDayNames, shortMonthNames, longMonthNames, atoiError, errBad, errLeadingInt, months, days, daysBefore, utcLoc, utcLoc$24ptr, localLoc, localLoc$24ptr, localOnce, zoneinfo, badData, _tuple, 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, Since, Until, absDate, daysIn, Now, Unix, isLeap, norm, Date, div, FixedZone;
errors = $packages["errors"];
js = $packages["github.com/gopherjs/gopherjs/js"];
nosync = $packages["github.com/gopherjs/gopherjs/nosync"];
registry = $packages["internal/syscall/windows/registry"];
runtime = $packages["runtime"];
syscall = $packages["syscall"];
runtimeTimer = $pkg.runtimeTimer = $newType(0, $kindStruct, "time.runtimeTimer", true, "time", false, function(i_, when_, period_, f_, arg_, timeout_, active_) {
this.$val = this;
if (arguments.length === 0) {
this.i = 0;
this.when = new $Int64(0, 0);
this.period = new $Int64(0, 0);
this.f = $throwNilPointerError;
this.arg = $ifaceNil;
this.timeout = null;
this.active = false;
return;
}
this.i = i_;
this.when = when_;
this.period = period_;
this.f = f_;
this.arg = arg_;
this.timeout = timeout_;
this.active = active_;
});
ParseError = $pkg.ParseError = $newType(0, $kindStruct, "time.ParseError", true, "time", true, function(Layout_, Value_, LayoutElem_, ValueElem_, Message_) {
this.$val = this;
if (arguments.length === 0) {
this.Layout = "";
this.Value = "";
this.LayoutElem = "";
this.ValueElem = "";
this.Message = "";
return;
}
this.Layout = Layout_;
this.Value = Value_;
this.LayoutElem = LayoutElem_;
this.ValueElem = ValueElem_;
this.Message = Message_;
});
Timer = $pkg.Timer = $newType(0, $kindStruct, "time.Timer", true, "time", true, function(C_, r_) {
this.$val = this;
if (arguments.length === 0) {
this.C = $chanNil;
this.r = new runtimeTimer.ptr(0, new $Int64(0, 0), new $Int64(0, 0), $throwNilPointerError, $ifaceNil, null, false);
return;
}
this.C = C_;
this.r = r_;
});
Ticker = $pkg.Ticker = $newType(0, $kindStruct, "time.Ticker", true, "time", true, function(C_, r_) {
this.$val = this;
if (arguments.length === 0) {
this.C = $chanNil;
this.r = new runtimeTimer.ptr(0, new $Int64(0, 0), new $Int64(0, 0), $throwNilPointerError, $ifaceNil, null, false);
return;
}
this.C = C_;
this.r = r_;
});
Time = $pkg.Time = $newType(0, $kindStruct, "time.Time", true, "time", true, function(sec_, nsec_, loc_) {
this.$val = this;
if (arguments.length === 0) {
this.sec = new $Int64(0, 0);
this.nsec = 0;
this.loc = ptrType$1.nil;
return;
}
this.sec = sec_;
this.nsec = nsec_;
this.loc = loc_;
});
Month = $pkg.Month = $newType(4, $kindInt, "time.Month", true, "time", true, null);
Weekday = $pkg.Weekday = $newType(4, $kindInt, "time.Weekday", true, "time", true, null);
Duration = $pkg.Duration = $newType(8, $kindInt64, "time.Duration", true, "time", true, null);
Location = $pkg.Location = $newType(0, $kindStruct, "time.Location", true, "time", true, function(name_, zone_, tx_, cacheStart_, cacheEnd_, cacheZone_) {
this.$val = this;
if (arguments.length === 0) {
this.name = "";
this.zone = sliceType.nil;
this.tx = sliceType$1.nil;
this.cacheStart = new $Int64(0, 0);
this.cacheEnd = new $Int64(0, 0);
this.cacheZone = ptrType.nil;
return;
}
this.name = name_;
this.zone = zone_;
this.tx = tx_;
this.cacheStart = cacheStart_;
this.cacheEnd = cacheEnd_;
this.cacheZone = cacheZone_;
});
zone = $pkg.zone = $newType(0, $kindStruct, "time.zone", true, "time", false, function(name_, offset_, isDST_) {
this.$val = this;
if (arguments.length === 0) {
this.name = "";
this.offset = 0;
this.isDST = false;
return;
}
this.name = name_;
this.offset = offset_;
this.isDST = isDST_;
});
zoneTrans = $pkg.zoneTrans = $newType(0, $kindStruct, "time.zoneTrans", true, "time", false, function(when_, index_, isstd_, isutc_) {
this.$val = this;
if (arguments.length === 0) {
this.when = new $Int64(0, 0);
this.index = 0;
this.isstd = false;
this.isutc = false;
return;
}
this.when = when_;
this.index = index_;
this.isstd = isstd_;
this.isutc = isutc_;
});
sliceType = $sliceType(zone);
sliceType$1 = $sliceType(zoneTrans);
ptrType = $ptrType(zone);
sliceType$2 = $sliceType($String);
structType = $structType("", []);
arrayType$1 = $arrayType($Uint8, 20);
sliceType$3 = $sliceType($Uint8);
arrayType$2 = $arrayType($Uint8, 9);
arrayType$3 = $arrayType($Uint8, 64);
ptrType$1 = $ptrType(Location);
chanType = $chanType(Time, false, false);
funcType = $funcType([], [], false);
arrayType$5 = $arrayType($Uint8, 32);
funcType$1 = $funcType([$emptyInterface, $Uintptr], [], false);
ptrType$2 = $ptrType(js.Object);
ptrType$3 = $ptrType(ParseError);
ptrType$4 = $ptrType(Timer);
chanType$1 = $chanType(Time, false, true);
ptrType$5 = $ptrType(Ticker);
ptrType$6 = $ptrType(Time);
init = function() {
var $ptr;
$unused(Unix(new $Int64(0, 0), new $Int64(0, 0)));
};
initLocal = function() {
var $ptr, d, i, j, s;
d = new ($global.Date)();
s = $internalize(d, $String);
i = indexByte(s, 40);
j = indexByte(s, 41);
if ((i === -1) || (j === -1)) {
localLoc.name = "UTC";
return;
}
localLoc.name = $substring(s, (i + 1 >> 0), j);
localLoc.zone = new sliceType([new zone.ptr(localLoc.name, $imul(($parseInt(d.getTimezoneOffset()) >> 0), -60), false)]);
};
runtimeNano = function() {
var $ptr;
return $mul64($internalize(new ($global.Date)().getTime(), $Int64), new $Int64(0, 1000000));
};
now = function() {
var $ptr, _tmp, _tmp$1, n, nsec, sec, x;
sec = new $Int64(0, 0);
nsec = 0;
n = runtimeNano();
_tmp = $div64(n, new $Int64(0, 1000000000), false);
_tmp$1 = (((x = $div64(n, new $Int64(0, 1000000000), true), x.$low + ((x.$high >> 31) * 4294967296)) >> 0));
sec = _tmp;
nsec = _tmp$1;
return [sec, nsec];
};
Sleep = function(d) {
var $ptr, _r, c, d, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
c = [c];
c[0] = new $Chan(structType, 0);
$setTimeout((function(c) { return function() {
var $ptr;
$close(c[0]);
}; })(c), (((x = $div64(d, new Duration(0, 1000000), false), x.$low + ((x.$high >> 31) * 4294967296)) >> 0)));
_r = $recv(c[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r[0];
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Sleep }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.d = d; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Sleep = Sleep;
startTimer = function(t) {
var $ptr, diff, t, x, x$1;
t.active = true;
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);
if ((diff.$high > 0 || (diff.$high === 0 && diff.$low > 2147483647))) {
return;
}
if ((diff.$high < 0 || (diff.$high === 0 && diff.$low < 0))) {
diff = new $Int64(0, 0);
}
t.timeout = $setTimeout((function() {
var $ptr, x$2, x$3, x$4;
t.active = false;
if (!((x$2 = t.period, (x$2.$high === 0 && x$2.$low === 0)))) {
t.when = (x$3 = t.when, x$4 = t.period, new $Int64(x$3.$high + x$4.$high, x$3.$low + x$4.$low));
startTimer(t);
}
$go(t.f, [t.arg, 0]);
}), $externalize(new $Int64(diff.$high + 0, diff.$low + 1), $Int64));
};
stopTimer = function(t) {
var $ptr, t, wasActive;
$global.clearTimeout(t.timeout);
wasActive = t.active;
t.active = false;
return wasActive;
};
indexByte = function(s, c) {
var $ptr, c, s;
return $parseInt(s.indexOf($global.String.fromCharCode(c))) >> 0;
};
startsWithLowerCase = function(str) {
var $ptr, c, str;
if (str.length === 0) {
return false;
}
c = str.charCodeAt(0);
return 97 <= c && c <= 122;
};
nextStdChunk = function(layout) {
var $ptr, _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;
prefix = "";
std = 0;
suffix = "";
i = 0;
while (true) {
if (!(i < layout.length)) { break; }
c = ((layout.charCodeAt(i) >> 0));
_1 = c;
if (_1 === (74)) {
if (layout.length >= (i + 3 >> 0) && $substring(layout, i, (i + 3 >> 0)) === "Jan") {
if (layout.length >= (i + 7 >> 0) && $substring(layout, i, (i + 7 >> 0)) === "January") {
_tmp = $substring(layout, 0, i);
_tmp$1 = 257;
_tmp$2 = $substring(layout, (i + 7 >> 0));
prefix = _tmp;
std = _tmp$1;
suffix = _tmp$2;
return [prefix, std, suffix];
}
if (!startsWithLowerCase($substring(layout, (i + 3 >> 0)))) {
_tmp$3 = $substring(layout, 0, i);
_tmp$4 = 258;
_tmp$5 = $substring(layout, (i + 3 >> 0));
prefix = _tmp$3;
std = _tmp$4;
suffix = _tmp$5;
return [prefix, std, suffix];
}
}
} else if (_1 === (77)) {
if (layout.length >= (i + 3 >> 0)) {
if ($substring(layout, i, (i + 3 >> 0)) === "Mon") {
if (layout.length >= (i + 6 >> 0) && $substring(layout, i, (i + 6 >> 0)) === "Monday") {
_tmp$6 = $substring(layout, 0, i);
_tmp$7 = 261;
_tmp$8 = $substring(layout, (i + 6 >> 0));
prefix = _tmp$6;
std = _tmp$7;
suffix = _tmp$8;
return [prefix, std, suffix];
}
if (!startsWithLowerCase($substring(layout, (i + 3 >> 0)))) {
_tmp$9 = $substring(layout, 0, i);
_tmp$10 = 262;
_tmp$11 = $substring(layout, (i + 3 >> 0));
prefix = _tmp$9;
std = _tmp$10;
suffix = _tmp$11;
return [prefix, std, suffix];
}
}
if ($substring(layout, i, (i + 3 >> 0)) === "MST") {
_tmp$12 = $substring(layout, 0, i);
_tmp$13 = 21;
_tmp$14 = $substring(layout, (i + 3 >> 0));
prefix = _tmp$12;
std = _tmp$13;
suffix = _tmp$14;
return [prefix, std, suffix];
}
}
} else if (_1 === (48)) {
if (layout.length >= (i + 2 >> 0) && 49 <= layout.charCodeAt((i + 1 >> 0)) && layout.charCodeAt((i + 1 >> 0)) <= 54) {
_tmp$15 = $substring(layout, 0, i);
_tmp$16 = (x = layout.charCodeAt((i + 1 >> 0)) - 49 << 24 >>> 24, ((x < 0 || x >= std0x.length) ? ($throwRuntimeError("index out of range"), undefined) : std0x[x]));
_tmp$17 = $substring(layout, (i + 2 >> 0));
prefix = _tmp$15;
std = _tmp$16;
suffix = _tmp$17;
return [prefix, std, suffix];
}
} else if (_1 === (49)) {
if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 53)) {
_tmp$18 = $substring(layout, 0, i);
_tmp$19 = 522;
_tmp$20 = $substring(layout, (i + 2 >> 0));
prefix = _tmp$18;
std = _tmp$19;
suffix = _tmp$20;
return [prefix, std, suffix];
}
_tmp$21 = $substring(layout, 0, i);
_tmp$22 = 259;
_tmp$23 = $substring(layout, (i + 1 >> 0));
prefix = _tmp$21;
std = _tmp$22;
suffix = _tmp$23;
return [prefix, std, suffix];
} else if (_1 === (50)) {
if (layout.length >= (i + 4 >> 0) && $substring(layout, i, (i + 4 >> 0)) === "2006") {
_tmp$24 = $substring(layout, 0, i);
_tmp$25 = 273;
_tmp$26 = $substring(layout, (i + 4 >> 0));
prefix = _tmp$24;
std = _tmp$25;
suffix = _tmp$26;
return [prefix, std, suffix];
}
_tmp$27 = $substring(layout, 0, i);
_tmp$28 = 263;
_tmp$29 = $substring(layout, (i + 1 >> 0));
prefix = _tmp$27;
std = _tmp$28;
suffix = _tmp$29;
return [prefix, std, suffix];
} else if (_1 === (95)) {
if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 50)) {
if (layout.length >= (i + 5 >> 0) && $substring(layout, (i + 1 >> 0), (i + 5 >> 0)) === "2006") {
_tmp$30 = $substring(layout, 0, (i + 1 >> 0));
_tmp$31 = 273;
_tmp$32 = $substring(layout, (i + 5 >> 0));
prefix = _tmp$30;
std = _tmp$31;
suffix = _tmp$32;
return [prefix, std, suffix];
}
_tmp$33 = $substring(layout, 0, i);
_tmp$34 = 264;
_tmp$35 = $substring(layout, (i + 2 >> 0));
prefix = _tmp$33;
std = _tmp$34;
suffix = _tmp$35;
return [prefix, std, suffix];
}
} else if (_1 === (51)) {
_tmp$36 = $substring(layout, 0, i);
_tmp$37 = 523;
_tmp$38 = $substring(layout, (i + 1 >> 0));
prefix = _tmp$36;
std = _tmp$37;
suffix = _tmp$38;
return [prefix, std, suffix];
} else if (_1 === (52)) {
_tmp$39 = $substring(layout, 0, i);
_tmp$40 = 525;
_tmp$41 = $substring(layout, (i + 1 >> 0));
prefix = _tmp$39;
std = _tmp$40;
suffix = _tmp$41;
return [prefix, std, suffix];
} else if (_1 === (53)) {
_tmp$42 = $substring(layout, 0, i);
_tmp$43 = 527;
_tmp$44 = $substring(layout, (i + 1 >> 0));
prefix = _tmp$42;
std = _tmp$43;
suffix = _tmp$44;
return [prefix, std, suffix];
} else if (_1 === (80)) {
if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 77)) {
_tmp$45 = $substring(layout, 0, i);
_tmp$46 = 531;
_tmp$47 = $substring(layout, (i + 2 >> 0));
prefix = _tmp$45;
std = _tmp$46;
suffix = _tmp$47;
return [prefix, std, suffix];
}
} else if (_1 === (112)) {
if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 109)) {
_tmp$48 = $substring(layout, 0, i);
_tmp$49 = 532;
_tmp$50 = $substring(layout, (i + 2 >> 0));
prefix = _tmp$48;
std = _tmp$49;
suffix = _tmp$50;
return [prefix, std, suffix];
}
} else if (_1 === (45)) {
if (layout.length >= (i + 7 >> 0) && $substring(layout, i, (i + 7 >> 0)) === "-070000") {
_tmp$51 = $substring(layout, 0, i);
_tmp$52 = 28;
_tmp$53 = $substring(layout, (i + 7 >> 0));
prefix = _tmp$51;
std = _tmp$52;
suffix = _tmp$53;
return [prefix, std, suffix];
}
if (layout.length >= (i + 9 >> 0) && $substring(layout, i, (i + 9 >> 0)) === "-07:00:00") {
_tmp$54 = $substring(layout, 0, i);
_tmp$55 = 31;
_tmp$56 = $substring(layout, (i + 9 >> 0));
prefix = _tmp$54;
std = _tmp$55;
suffix = _tmp$56;
return [prefix, std, suffix];
}
if (layout.length >= (i + 5 >> 0) && $substring(layout, i, (i + 5 >> 0)) === "-0700") {
_tmp$57 = $substring(layout, 0, i);
_tmp$58 = 27;
_tmp$59 = $substring(layout, (i + 5 >> 0));
prefix = _tmp$57;
std = _tmp$58;
suffix = _tmp$59;
return [prefix, std, suffix];
}
if (layout.length >= (i + 6 >> 0) && $substring(layout, i, (i + 6 >> 0)) === "-07:00") {
_tmp$60 = $substring(layout, 0, i);
_tmp$61 = 30;
_tmp$62 = $substring(layout, (i + 6 >> 0));
prefix = _tmp$60;
std = _tmp$61;
suffix = _tmp$62;
return [prefix, std, suffix];
}
if (layout.length >= (i + 3 >> 0) && $substring(layout, i, (i + 3 >> 0)) === "-07") {
_tmp$63 = $substring(layout, 0, i);
_tmp$64 = 29;
_tmp$65 = $substring(layout, (i + 3 >> 0));
prefix = _tmp$63;
std = _tmp$64;
suffix = _tmp$65;
return [prefix, std, suffix];
}
} else if (_1 === (90)) {
if (layout.length >= (i + 7 >> 0) && $substring(layout, i, (i + 7 >> 0)) === "Z070000") {
_tmp$66 = $substring(layout, 0, i);
_tmp$67 = 23;
_tmp$68 = $substring(layout, (i + 7 >> 0));
prefix = _tmp$66;
std = _tmp$67;
suffix = _tmp$68;
return [prefix, std, suffix];
}
if (layout.length >= (i + 9 >> 0) && $substring(layout, i, (i + 9 >> 0)) === "Z07:00:00") {
_tmp$69 = $substring(layout, 0, i);
_tmp$70 = 26;
_tmp$71 = $substring(layout, (i + 9 >> 0));
prefix = _tmp$69;
std = _tmp$70;
suffix = _tmp$71;
return [prefix, std, suffix];
}
if (layout.length >= (i + 5 >> 0) && $substring(layout, i, (i + 5 >> 0)) === "Z0700") {
_tmp$72 = $substring(layout, 0, i);
_tmp$73 = 22;
_tmp$74 = $substring(layout, (i + 5 >> 0));
prefix = _tmp$72;
std = _tmp$73;
suffix = _tmp$74;
return [prefix, std, suffix];
}
if (layout.length >= (i + 6 >> 0) && $substring(layout, i, (i + 6 >> 0)) === "Z07:00") {
_tmp$75 = $substring(layout, 0, i);
_tmp$76 = 25;
_tmp$77 = $substring(layout, (i + 6 >> 0));
prefix = _tmp$75;
std = _tmp$76;
suffix = _tmp$77;
return [prefix, std, suffix];
}
if (layout.length >= (i + 3 >> 0) && $substring(layout, i, (i + 3 >> 0)) === "Z07") {
_tmp$78 = $substring(layout, 0, i);
_tmp$79 = 24;
_tmp$80 = $substring(layout, (i + 3 >> 0));
prefix = _tmp$78;
std = _tmp$79;
suffix = _tmp$80;
return [prefix, std, suffix];
}
} else if (_1 === (46)) {
if ((i + 1 >> 0) < layout.length && ((layout.charCodeAt((i + 1 >> 0)) === 48) || (layout.charCodeAt((i + 1 >> 0)) === 57))) {
ch = layout.charCodeAt((i + 1 >> 0));
j = i + 1 >> 0;
while (true) {
if (!(j < layout.length && (layout.charCodeAt(j) === ch))) { break; }
j = j + (1) >> 0;
}
if (!isDigit(layout, j)) {
std$1 = 32;
if (layout.charCodeAt((i + 1 >> 0)) === 57) {
std$1 = 33;
}
std$1 = std$1 | ((((j - ((i + 1 >> 0)) >> 0)) << 16 >> 0));
_tmp$81 = $substring(layout, 0, i);
_tmp$82 = std$1;
_tmp$83 = $substring(layout, j);
prefix = _tmp$81;
std = _tmp$82;
suffix = _tmp$83;
return [prefix, std, suffix];
}
}
}
i = i + (1) >> 0;
}
_tmp$84 = layout;
_tmp$85 = 0;
_tmp$86 = "";
prefix = _tmp$84;
std = _tmp$85;
suffix = _tmp$86;
return [prefix, std, suffix];
};
match = function(s1, s2) {
var $ptr, c1, c2, i, s1, s2;
i = 0;
while (true) {
if (!(i < s1.length)) { break; }
c1 = s1.charCodeAt(i);
c2 = s2.charCodeAt(i);
if (!((c1 === c2))) {
c1 = (c1 | (32)) >>> 0;
c2 = (c2 | (32)) >>> 0;
if (!((c1 === c2)) || c1 < 97 || c1 > 122) {
return false;
}
}
i = i + (1) >> 0;
}
return true;
};
lookup = function(tab, val) {
var $ptr, _i, _ref, i, tab, v, val;
_ref = tab;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (val.length >= v.length && match($substring(val, 0, v.length), v)) {
return [i, $substring(val, v.length), $ifaceNil];
}
_i++;
}
return [-1, val, errBad];
};
appendInt = function(b, x, width) {
var $ptr, _q, b, buf, i, q, u, w, width, x;
u = ((x >>> 0));
if (x < 0) {
b = $append(b, 45);
u = ((-x >>> 0));
}
buf = arrayType$1.zero();
i = 20;
while (true) {
if (!(u >= 10)) { break; }
i = i - (1) >> 0;
q = (_q = u / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = ((((48 + u >>> 0) - (q * 10 >>> 0) >>> 0) << 24 >>> 24)));
u = q;
}
i = i - (1) >> 0;
((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = (((48 + u >>> 0) << 24 >>> 24)));
w = 20 - i >> 0;
while (true) {
if (!(w < width)) { break; }
b = $append(b, 48);
w = w + (1) >> 0;
}
return $appendSlice(b, $subslice(new sliceType$3(buf), i));
};
atoi = function(s) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple$1, err, neg, q, rem, s, x;
x = 0;
err = $ifaceNil;
neg = false;
if (!(s === "") && ((s.charCodeAt(0) === 45) || (s.charCodeAt(0) === 43))) {
neg = s.charCodeAt(0) === 45;
s = $substring(s, 1);
}
_tuple$1 = leadingInt(s);
q = _tuple$1[0];
rem = _tuple$1[1];
err = _tuple$1[2];
x = (((q.$low + ((q.$high >> 31) * 4294967296)) >> 0));
if (!($interfaceIsEqual(err, $ifaceNil)) || !(rem === "")) {
_tmp = 0;
_tmp$1 = atoiError;
x = _tmp;
err = _tmp$1;
return [x, err];
}
if (neg) {
x = -x;
}
_tmp$2 = x;
_tmp$3 = $ifaceNil;
x = _tmp$2;
err = _tmp$3;
return [x, err];
};
formatNano = function(b, nanosec, n, trim) {
var $ptr, _q, _r, b, buf, n, nanosec, start, trim, u, x;
u = nanosec;
buf = arrayType$2.zero();
start = 9;
while (true) {
if (!(start > 0)) { break; }
start = start - (1) >> 0;
((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)));
u = (_q = u / (10), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
}
if (n > 9) {
n = 9;
}
if (trim) {
while (true) {
if (!(n > 0 && ((x = n - 1 >> 0, ((x < 0 || x >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[x])) === 48))) { break; }
n = n - (1) >> 0;
}
if (n === 0) {
return b;
}
}
b = $append(b, 46);
return $appendSlice(b, $subslice(new sliceType$3(buf), 0, n));
};
Time.ptr.prototype.String = function() {
var $ptr, _r, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
Time.prototype.String = function() { return this.$val.String(); };
Time.ptr.prototype.Format = function(layout) {
var $ptr, _r, b, buf, layout, max, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
t = this;
b = sliceType$3.nil;
max = layout.length + 10 >> 0;
if (max < 64) {
buf = arrayType$3.zero();
b = $subslice(new sliceType$3(buf), 0, 0);
} else {
b = $makeSlice(sliceType$3, 0, max);
}
_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; }
b = _r;
$s = -1; return ($bytesToString(b));
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Format }; } $f.$ptr = $ptr; $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;
};
Time.prototype.Format = function(layout) { return this.$val.Format(layout); };
Time.ptr.prototype.AppendFormat = function(b, layout) {
var $ptr, _1, _q, _q$1, _q$2, _q$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple$1, _tuple$2, _tuple$3, _tuple$4, 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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; 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:
t = this;
_r = $clone(t, Time).locabs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
name = _tuple$1[0];
offset = _tuple$1[1];
abs = _tuple$1[2];
year = -1;
month = 0;
day = 0;
hour = -1;
min = 0;
sec = 0;
while (true) {
if (!(!(layout === ""))) { break; }
_tuple$2 = nextStdChunk(layout);
prefix = _tuple$2[0];
std = _tuple$2[1];
suffix = _tuple$2[2];
if (!(prefix === "")) {
b = $appendSlice(b, prefix);
}
if (std === 0) {
break;
}
layout = suffix;
if (year < 0 && !(((std & 256) === 0))) {
_tuple$3 = absDate(abs, true);
year = _tuple$3[0];
month = _tuple$3[1];
day = _tuple$3[2];
}
if (hour < 0 && !(((std & 512) === 0))) {
_tuple$4 = absClock(abs);
hour = _tuple$4[0];
min = _tuple$4[1];
sec = _tuple$4[2];
}
switch (0) { default:
_1 = std & 65535;
if (_1 === (274)) {
y = year;
if (y < 0) {
y = -y;
}
b = appendInt(b, (_r$1 = y % 100, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")), 2);
} else if (_1 === (273)) {
b = appendInt(b, year, 4);
} else if (_1 === (258)) {
b = $appendSlice(b, $substring(new Month(month).String(), 0, 3));
} else if (_1 === (257)) {
m = new Month(month).String();
b = $appendSlice(b, m);
} else if (_1 === (259)) {
b = appendInt(b, ((month >> 0)), 0);
} else if (_1 === (260)) {
b = appendInt(b, ((month >> 0)), 2);
} else if (_1 === (262)) {
b = $appendSlice(b, $substring(new Weekday(absWeekday(abs)).String(), 0, 3));
} else if (_1 === (261)) {
s = new Weekday(absWeekday(abs)).String();
b = $appendSlice(b, s);
} else if (_1 === (263)) {
b = appendInt(b, day, 0);
} else if (_1 === (264)) {
if (day < 10) {
b = $append(b, 32);
}
b = appendInt(b, day, 0);
} else if (_1 === (265)) {
b = appendInt(b, day, 2);
} else if (_1 === (522)) {
b = appendInt(b, hour, 2);
} else if (_1 === (523)) {
hr = (_r$2 = hour % 12, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero"));
if (hr === 0) {
hr = 12;
}
b = appendInt(b, hr, 0);
} else if (_1 === (524)) {
hr$1 = (_r$3 = hour % 12, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero"));
if (hr$1 === 0) {
hr$1 = 12;
}
b = appendInt(b, hr$1, 2);
} else if (_1 === (525)) {
b = appendInt(b, min, 0);
} else if (_1 === (526)) {
b = appendInt(b, min, 2);
} else if (_1 === (527)) {
b = appendInt(b, sec, 0);
} else if (_1 === (528)) {
b = appendInt(b, sec, 2);
} else if (_1 === (531)) {
if (hour >= 12) {
b = $appendSlice(b, "PM");
} else {
b = $appendSlice(b, "AM");
}
} else if (_1 === (532)) {
if (hour >= 12) {
b = $appendSlice(b, "pm");
} else {
b = $appendSlice(b, "am");
}
} else if ((_1 === (22)) || (_1 === (25)) || (_1 === (23)) || (_1 === (24)) || (_1 === (26)) || (_1 === (27)) || (_1 === (30)) || (_1 === (28)) || (_1 === (29)) || (_1 === (31))) {
if ((offset === 0) && ((std === 22) || (std === 25) || (std === 23) || (std === 24) || (std === 26))) {
b = $append(b, 90);
break;
}
zone$1 = (_q = offset / 60, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
absoffset = offset;
if (zone$1 < 0) {
b = $append(b, 45);
zone$1 = -zone$1;
absoffset = -absoffset;
} else {
b = $append(b, 43);
}
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);
if ((std === 25) || (std === 30) || (std === 26) || (std === 31)) {
b = $append(b, 58);
}
if (!((std === 29)) && !((std === 24))) {
b = appendInt(b, (_r$4 = zone$1 % 60, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero")), 2);
}
if ((std === 23) || (std === 28) || (std === 31) || (std === 26)) {
if ((std === 31) || (std === 26)) {
b = $append(b, 58);
}
b = appendInt(b, (_r$5 = absoffset % 60, _r$5 === _r$5 ? _r$5 : $throwRuntimeError("integer divide by zero")), 2);
}
} else if (_1 === (21)) {
if (!(name === "")) {
b = $appendSlice(b, name);
break;
}
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"));
if (zone$2 < 0) {
b = $append(b, 45);
zone$2 = -zone$2;
} else {
b = $append(b, 43);
}
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);
b = appendInt(b, (_r$6 = zone$2 % 60, _r$6 === _r$6 ? _r$6 : $throwRuntimeError("integer divide by zero")), 2);
} else if ((_1 === (32)) || (_1 === (33))) {
b = formatNano(b, (($clone(t, Time).Nanosecond() >>> 0)), std >> 16 >> 0, (std & 65535) === 33);
}
}
}
$s = -1; return b;
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.AppendFormat }; } $f.$ptr = $ptr; $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$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $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;
};
Time.prototype.AppendFormat = function(b, layout) { return this.$val.AppendFormat(b, layout); };
quote = function(s) {
var $ptr, s;
return "\"" + s + "\"";
};
ParseError.ptr.prototype.Error = function() {
var $ptr, e;
e = this;
if (e.Message === "") {
return "parsing time " + quote(e.Value) + " as " + quote(e.Layout) + ": cannot parse " + quote(e.ValueElem) + " as " + quote(e.LayoutElem);
}
return "parsing time " + quote(e.Value) + e.Message;
};
ParseError.prototype.Error = function() { return this.$val.Error(); };
isDigit = function(s, i) {
var $ptr, c, i, s;
if (s.length <= i) {
return false;
}
c = s.charCodeAt(i);
return 48 <= c && c <= 57;
};
getnum = function(s, fixed) {
var $ptr, fixed, s;
if (!isDigit(s, 0)) {
return [0, s, errBad];
}
if (!isDigit(s, 1)) {
if (fixed) {
return [0, s, errBad];
}
return [(((s.charCodeAt(0) - 48 << 24 >>> 24) >> 0)), $substring(s, 1), $ifaceNil];
}
return [($imul((((s.charCodeAt(0) - 48 << 24 >>> 24) >> 0)), 10)) + (((s.charCodeAt(1) - 48 << 24 >>> 24) >> 0)) >> 0, $substring(s, 2), $ifaceNil];
};
cutspace = function(s) {
var $ptr, s;
while (true) {
if (!(s.length > 0 && (s.charCodeAt(0) === 32))) { break; }
s = $substring(s, 1);
}
return s;
};
skip = function(value, prefix) {
var $ptr, prefix, value;
while (true) {
if (!(prefix.length > 0)) { break; }
if (prefix.charCodeAt(0) === 32) {
if (value.length > 0 && !((value.charCodeAt(0) === 32))) {
return [value, errBad];
}
prefix = cutspace(prefix);
value = cutspace(value);
continue;
}
if ((value.length === 0) || !((value.charCodeAt(0) === prefix.charCodeAt(0)))) {
return [value, errBad];
}
prefix = $substring(prefix, 1);
value = $substring(value, 1);
}
return [value, $ifaceNil];
};
Parse = function(layout, value) {
var $ptr, _r, layout, value, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; layout = $f.layout; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Parse }; } $f.$ptr = $ptr; $f._r = _r; $f.layout = layout; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Parse = Parse;
parse = function(layout, value, defaultLocation, local) {
var $ptr, _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$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$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, x$2, x$3, x$4, x$5, year, z, zoneName, zoneOffset, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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$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$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; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; 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:
_tmp = layout;
_tmp$1 = value;
alayout = _tmp;
avalue = _tmp$1;
rangeErrString = "";
amSet = false;
pmSet = false;
year = 0;
month = 1;
day = 1;
hour = 0;
min = 0;
sec = 0;
nsec = 0;
z = ptrType$1.nil;
zoneOffset = -1;
zoneName = "";
while (true) {
err = $ifaceNil;
_tuple$1 = nextStdChunk(layout);
prefix = _tuple$1[0];
std = _tuple$1[1];
suffix = _tuple$1[2];
stdstr = $substring(layout, prefix.length, (layout.length - suffix.length >> 0));
_tuple$2 = skip(value, prefix);
value = _tuple$2[0];
err = _tuple$2[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [new Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil), new ParseError.ptr(alayout, avalue, prefix, value, "")];
}
if (std === 0) {
if (!((value.length === 0))) {
$s = -1; return [new Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil), new ParseError.ptr(alayout, avalue, "", value, ": extra text: " + value)];
}
break;
}
layout = suffix;
p = "";
switch (0) { default:
_1 = std & 65535;
if (_1 === (274)) {
if (value.length < 2) {
err = errBad;
break;
}
_tmp$2 = $substring(value, 0, 2);
_tmp$3 = $substring(value, 2);
p = _tmp$2;
value = _tmp$3;
_tuple$3 = atoi(p);
year = _tuple$3[0];
err = _tuple$3[1];
if (year >= 69) {
year = year + (1900) >> 0;
} else {
year = year + (2000) >> 0;
}
} else if (_1 === (273)) {
if (value.length < 4 || !isDigit(value, 0)) {
err = errBad;
break;
}
_tmp$4 = $substring(value, 0, 4);
_tmp$5 = $substring(value, 4);
p = _tmp$4;
value = _tmp$5;
_tuple$4 = atoi(p);
year = _tuple$4[0];
err = _tuple$4[1];
} else if (_1 === (258)) {
_tuple$5 = lookup(shortMonthNames, value);
month = _tuple$5[0];
value = _tuple$5[1];
err = _tuple$5[2];
} else if (_1 === (257)) {
_tuple$6 = lookup(longMonthNames, value);
month = _tuple$6[0];
value = _tuple$6[1];
err = _tuple$6[2];
} else if ((_1 === (259)) || (_1 === (260))) {
_tuple$7 = getnum(value, std === 260);
month = _tuple$7[0];
value = _tuple$7[1];
err = _tuple$7[2];
if (month <= 0 || 12 < month) {
rangeErrString = "month";
}
} else if (_1 === (262)) {
_tuple$8 = lookup(shortDayNames, value);
value = _tuple$8[1];
err = _tuple$8[2];
} else if (_1 === (261)) {
_tuple$9 = lookup(longDayNames, value);
value = _tuple$9[1];
err = _tuple$9[2];
} else if ((_1 === (263)) || (_1 === (264)) || (_1 === (265))) {
if ((std === 264) && value.length > 0 && (value.charCodeAt(0) === 32)) {
value = $substring(value, 1);
}
_tuple$10 = getnum(value, std === 265);
day = _tuple$10[0];
value = _tuple$10[1];
err = _tuple$10[2];
if (day < 0) {
rangeErrString = "day";
}
} else if (_1 === (522)) {
_tuple$11 = getnum(value, false);
hour = _tuple$11[0];
value = _tuple$11[1];
err = _tuple$11[2];
if (hour < 0 || 24 <= hour) {
rangeErrString = "hour";
}
} else if ((_1 === (523)) || (_1 === (524))) {
_tuple$12 = getnum(value, std === 524);
hour = _tuple$12[0];
value = _tuple$12[1];
err = _tuple$12[2];
if (hour < 0 || 12 < hour) {
rangeErrString = "hour";
}
} else if ((_1 === (525)) || (_1 === (526))) {
_tuple$13 = getnum(value, std === 526);
min = _tuple$13[0];
value = _tuple$13[1];
err = _tuple$13[2];
if (min < 0 || 60 <= min) {
rangeErrString = "minute";
}
} else if ((_1 === (527)) || (_1 === (528))) {
_tuple$14 = getnum(value, std === 528);
sec = _tuple$14[0];
value = _tuple$14[1];
err = _tuple$14[2];
if (sec < 0 || 60 <= sec) {
rangeErrString = "second";
break;
}
if (value.length >= 2 && (value.charCodeAt(0) === 46) && isDigit(value, 1)) {
_tuple$15 = nextStdChunk(layout);
std = _tuple$15[1];
std = std & (65535);
if ((std === 32) || (std === 33)) {
break;
}
n = 2;
while (true) {
if (!(n < value.length && isDigit(value, n))) { break; }
n = n + (1) >> 0;
}
_tuple$16 = parseNanoseconds(value, n);
nsec = _tuple$16[0];
rangeErrString = _tuple$16[1];
err = _tuple$16[2];
value = $substring(value, n);
}
} else if (_1 === (531)) {
if (value.length < 2) {
err = errBad;
break;
}
_tmp$6 = $substring(value, 0, 2);
_tmp$7 = $substring(value, 2);
p = _tmp$6;
value = _tmp$7;
_2 = p;
if (_2 === ("PM")) {
pmSet = true;
} else if (_2 === ("AM")) {
amSet = true;
} else {
err = errBad;
}
} else if (_1 === (532)) {
if (value.length < 2) {
err = errBad;
break;
}
_tmp$8 = $substring(value, 0, 2);
_tmp$9 = $substring(value, 2);
p = _tmp$8;
value = _tmp$9;
_3 = p;
if (_3 === ("pm")) {
pmSet = true;
} else if (_3 === ("am")) {
amSet = true;
} else {
err = errBad;
}
} else if ((_1 === (22)) || (_1 === (25)) || (_1 === (23)) || (_1 === (24)) || (_1 === (26)) || (_1 === (27)) || (_1 === (29)) || (_1 === (30)) || (_1 === (28)) || (_1 === (31))) {
if (((std === 22) || (std === 24) || (std === 25)) && value.length >= 1 && (value.charCodeAt(0) === 90)) {
value = $substring(value, 1);
z = $pkg.UTC;
break;
}
_tmp$10 = "";
_tmp$11 = "";
_tmp$12 = "";
_tmp$13 = "";
sign = _tmp$10;
hour$1 = _tmp$11;
min$1 = _tmp$12;
seconds = _tmp$13;
if ((std === 25) || (std === 30)) {
if (value.length < 6) {
err = errBad;
break;
}
if (!((value.charCodeAt(3) === 58))) {
err = errBad;
break;
}
_tmp$14 = $substring(value, 0, 1);
_tmp$15 = $substring(value, 1, 3);
_tmp$16 = $substring(value, 4, 6);
_tmp$17 = "00";
_tmp$18 = $substring(value, 6);
sign = _tmp$14;
hour$1 = _tmp$15;
min$1 = _tmp$16;
seconds = _tmp$17;
value = _tmp$18;
} else if ((std === 29) || (std === 24)) {
if (value.length < 3) {
err = errBad;
break;
}
_tmp$19 = $substring(value, 0, 1);
_tmp$20 = $substring(value, 1, 3);
_tmp$21 = "00";
_tmp$22 = "00";
_tmp$23 = $substring(value, 3);
sign = _tmp$19;
hour$1 = _tmp$20;
min$1 = _tmp$21;
seconds = _tmp$22;
value = _tmp$23;
} else if ((std === 26) || (std === 31)) {
if (value.length < 9) {
err = errBad;
break;
}
if (!((value.charCodeAt(3) === 58)) || !((value.charCodeAt(6) === 58))) {
err = errBad;
break;
}
_tmp$24 = $substring(value, 0, 1);
_tmp$25 = $substring(value, 1, 3);
_tmp$26 = $substring(value, 4, 6);
_tmp$27 = $substring(value, 7, 9);
_tmp$28 = $substring(value, 9);
sign = _tmp$24;
hour$1 = _tmp$25;
min$1 = _tmp$26;
seconds = _tmp$27;
value = _tmp$28;
} else if ((std === 23) || (std === 28)) {
if (value.length < 7) {
err = errBad;
break;
}
_tmp$29 = $substring(value, 0, 1);
_tmp$30 = $substring(value, 1, 3);
_tmp$31 = $substring(value, 3, 5);
_tmp$32 = $substring(value, 5, 7);
_tmp$33 = $substring(value, 7);
sign = _tmp$29;
hour$1 = _tmp$30;
min$1 = _tmp$31;
seconds = _tmp$32;
value = _tmp$33;
} else {
if (value.length < 5) {
err = errBad;
break;
}
_tmp$34 = $substring(value, 0, 1);
_tmp$35 = $substring(value, 1, 3);
_tmp$36 = $substring(value, 3, 5);
_tmp$37 = "00";
_tmp$38 = $substring(value, 5);
sign = _tmp$34;
hour$1 = _tmp$35;
min$1 = _tmp$36;
seconds = _tmp$37;
value = _tmp$38;
}
_tmp$39 = 0;
_tmp$40 = 0;
_tmp$41 = 0;
hr = _tmp$39;
mm = _tmp$40;
ss = _tmp$41;
_tuple$17 = atoi(hour$1);
hr = _tuple$17[0];
err = _tuple$17[1];
if ($interfaceIsEqual(err, $ifaceNil)) {
_tuple$18 = atoi(min$1);
mm = _tuple$18[0];
err = _tuple$18[1];
}
if ($interfaceIsEqual(err, $ifaceNil)) {
_tuple$19 = atoi(seconds);
ss = _tuple$19[0];
err = _tuple$19[1];
}
zoneOffset = ($imul(((($imul(hr, 60)) + mm >> 0)), 60)) + ss >> 0;
_4 = sign.charCodeAt(0);
if (_4 === (43)) {
} else if (_4 === (45)) {
zoneOffset = -zoneOffset;
} else {
err = errBad;
}
} else if (_1 === (21)) {
if (value.length >= 3 && $substring(value, 0, 3) === "UTC") {
z = $pkg.UTC;
value = $substring(value, 3);
break;
}
_tuple$20 = parseTimeZone(value);
n$1 = _tuple$20[0];
ok = _tuple$20[1];
if (!ok) {
err = errBad;
break;
}
_tmp$42 = $substring(value, 0, n$1);
_tmp$43 = $substring(value, n$1);
zoneName = _tmp$42;
value = _tmp$43;
} else if (_1 === (32)) {
ndigit = 1 + ((std >> 16 >> 0)) >> 0;
if (value.length < ndigit) {
err = errBad;
break;
}
_tuple$21 = parseNanoseconds(value, ndigit);
nsec = _tuple$21[0];
rangeErrString = _tuple$21[1];
err = _tuple$21[2];
value = $substring(value, ndigit);
} else if (_1 === (33)) {
if (value.length < 2 || !((value.charCodeAt(0) === 46)) || value.charCodeAt(1) < 48 || 57 < value.charCodeAt(1)) {
break;
}
i = 0;
while (true) {
if (!(i < 9 && (i + 1 >> 0) < value.length && 48 <= value.charCodeAt((i + 1 >> 0)) && value.charCodeAt((i + 1 >> 0)) <= 57)) { break; }
i = i + (1) >> 0;
}
_tuple$22 = parseNanoseconds(value, 1 + i >> 0);
nsec = _tuple$22[0];
rangeErrString = _tuple$22[1];
err = _tuple$22[2];
value = $substring(value, (1 + i >> 0));
}
}
if (!(rangeErrString === "")) {
$s = -1; return [new Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil), new ParseError.ptr(alayout, avalue, stdstr, value, ": " + rangeErrString + " out of range")];
}
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [new Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil), new ParseError.ptr(alayout, avalue, stdstr, value, "")];
}
}
if (pmSet && hour < 12) {
hour = hour + (12) >> 0;
} else if (amSet && (hour === 12)) {
hour = 0;
}
if (day < 1 || day > daysIn(((month >> 0)), year)) {
$s = -1; return [new Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil), new ParseError.ptr(alayout, avalue, "", value, ": day out of range")];
}
/* */ if (!(z === ptrType$1.nil)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(z === ptrType$1.nil)) { */ case 1:
_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; }
$s = -1; return [_r, $ifaceNil];
/* } */ case 2:
/* */ if (!((zoneOffset === -1))) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!((zoneOffset === -1))) { */ case 4:
_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; }
t = $clone(_r$1, Time);
t.sec = (x = t.sec, x$1 = (new $Int64(0, zoneOffset)), new $Int64(x.$high - x$1.$high, x.$low - x$1.$low));
_r$2 = local.lookup((x$2 = t.sec, new $Int64(x$2.$high + -15, x$2.$low + 2288912640))); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$23 = _r$2;
name = _tuple$23[0];
offset = _tuple$23[1];
if ((offset === zoneOffset) && (zoneName === "" || name === zoneName)) {
t.setLoc(local);
$s = -1; return [t, $ifaceNil];
}
t.setLoc(FixedZone(zoneName, zoneOffset));
$s = -1; return [t, $ifaceNil];
/* } */ case 5:
/* */ if (!(zoneName === "")) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (!(zoneName === "")) { */ case 8:
_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; }
t$1 = $clone(_r$3, Time);
_r$4 = local.lookupName(zoneName, (x$3 = t$1.sec, new $Int64(x$3.$high + -15, x$3.$low + 2288912640))); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_tuple$24 = _r$4;
offset$1 = _tuple$24[0];
ok$1 = _tuple$24[2];
if (ok$1) {
t$1.sec = (x$4 = t$1.sec, x$5 = (new $Int64(0, offset$1)), new $Int64(x$4.$high - x$5.$high, x$4.$low - x$5.$low));
t$1.setLoc(local);
$s = -1; return [t$1, $ifaceNil];
}
if (zoneName.length > 3 && $substring(zoneName, 0, 3) === "GMT") {
_tuple$25 = atoi($substring(zoneName, 3));
offset$1 = _tuple$25[0];
offset$1 = $imul(offset$1, (3600));
}
t$1.setLoc(FixedZone(zoneName, offset$1));
$s = -1; return [t$1, $ifaceNil];
/* } */ case 9:
_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; }
$s = -1; return [_r$5, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: parse }; } $f.$ptr = $ptr; $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$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$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.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.year = year; $f.z = z; $f.zoneName = zoneName; $f.zoneOffset = zoneOffset; $f.$s = $s; $f.$r = $r; return $f;
};
parseTimeZone = function(value) {
var $ptr, _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;
length = 0;
ok = false;
if (value.length < 3) {
_tmp = 0;
_tmp$1 = false;
length = _tmp;
ok = _tmp$1;
return [length, ok];
}
if (value.length >= 4 && ($substring(value, 0, 4) === "ChST" || $substring(value, 0, 4) === "MeST")) {
_tmp$2 = 4;
_tmp$3 = true;
length = _tmp$2;
ok = _tmp$3;
return [length, ok];
}
if ($substring(value, 0, 3) === "GMT") {
length = parseGMT(value);
_tmp$4 = length;
_tmp$5 = true;
length = _tmp$4;
ok = _tmp$5;
return [length, ok];
}
nUpper = 0;
nUpper = 0;
while (true) {
if (!(nUpper < 6)) { break; }
if (nUpper >= value.length) {
break;
}
c = value.charCodeAt(nUpper);
if (c < 65 || 90 < c) {
break;
}
nUpper = nUpper + (1) >> 0;
}
_1 = nUpper;
if ((_1 === (0)) || (_1 === (1)) || (_1 === (2)) || (_1 === (6))) {
_tmp$6 = 0;
_tmp$7 = false;
length = _tmp$6;
ok = _tmp$7;
return [length, ok];
} else if (_1 === (5)) {
if (value.charCodeAt(4) === 84) {
_tmp$8 = 5;
_tmp$9 = true;
length = _tmp$8;
ok = _tmp$9;
return [length, ok];
}
} else if (_1 === (4)) {
if ((value.charCodeAt(3) === 84) || $substring(value, 0, 4) === "WITA") {
_tmp$10 = 4;
_tmp$11 = true;
length = _tmp$10;
ok = _tmp$11;
return [length, ok];
}
} else if (_1 === (3)) {
_tmp$12 = 3;
_tmp$13 = true;
length = _tmp$12;
ok = _tmp$13;
return [length, ok];
}
_tmp$14 = 0;
_tmp$15 = false;
length = _tmp$14;
ok = _tmp$15;
return [length, ok];
};
parseGMT = function(value) {
var $ptr, _tuple$1, err, rem, sign, value, x;
value = $substring(value, 3);
if (value.length === 0) {
return 3;
}
sign = value.charCodeAt(0);
if (!((sign === 45)) && !((sign === 43))) {
return 3;
}
_tuple$1 = leadingInt($substring(value, 1));
x = _tuple$1[0];
rem = _tuple$1[1];
err = _tuple$1[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return 3;
}
if (sign === 45) {
x = new $Int64(-x.$high, -x.$low);
}
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))) {
return 3;
}
return (3 + value.length >> 0) - rem.length >> 0;
};
parseNanoseconds = function(value, nbytes) {
var $ptr, _tuple$1, err, i, nbytes, ns, rangeErrString, scaleDigits, value;
ns = 0;
rangeErrString = "";
err = $ifaceNil;
if (!((value.charCodeAt(0) === 46))) {
err = errBad;
return [ns, rangeErrString, err];
}
_tuple$1 = atoi($substring(value, 1, nbytes));
ns = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [ns, rangeErrString, err];
}
if (ns < 0 || 1000000000 <= ns) {
rangeErrString = "fractional second";
return [ns, rangeErrString, err];
}
scaleDigits = 10 - nbytes >> 0;
i = 0;
while (true) {
if (!(i < scaleDigits)) { break; }
ns = $imul(ns, (10));
i = i + (1) >> 0;
}
return [ns, rangeErrString, err];
};
leadingInt = function(s) {
var $ptr, _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;
x = new $Int64(0, 0);
rem = "";
err = $ifaceNil;
i = 0;
while (true) {
if (!(i < s.length)) { break; }
c = s.charCodeAt(i);
if (c < 48 || c > 57) {
break;
}
if ((x.$high > 214748364 || (x.$high === 214748364 && x.$low > 3435973836))) {
_tmp = new $Int64(0, 0);
_tmp$1 = "";
_tmp$2 = errLeadingInt;
x = _tmp;
rem = _tmp$1;
err = _tmp$2;
return [x, rem, err];
}
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));
if ((x.$high < 0 || (x.$high === 0 && x.$low < 0))) {
_tmp$3 = new $Int64(0, 0);
_tmp$4 = "";
_tmp$5 = errLeadingInt;
x = _tmp$3;
rem = _tmp$4;
err = _tmp$5;
return [x, rem, err];
}
i = i + (1) >> 0;
}
_tmp$6 = x;
_tmp$7 = $substring(s, i);
_tmp$8 = $ifaceNil;
x = _tmp$6;
rem = _tmp$7;
err = _tmp$8;
return [x, rem, err];
};
when = function(d) {
var $ptr, d, t, x, x$1;
if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) {
return runtimeNano();
}
t = (x = runtimeNano(), x$1 = (new $Int64(d.$high, d.$low)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
if ((t.$high < 0 || (t.$high === 0 && t.$low < 0))) {
t = new $Int64(2147483647, 4294967295);
}
return t;
};
Timer.ptr.prototype.Stop = function() {
var $ptr, t;
t = this;
if (t.r.f === $throwNilPointerError) {
$panic(new $String("time: Stop called on uninitialized Timer"));
}
return stopTimer(t.r);
};
Timer.prototype.Stop = function() { return this.$val.Stop(); };
NewTimer = function(d) {
var $ptr, c, d, t;
c = new $Chan(Time, 1);
t = new Timer.ptr(c, new runtimeTimer.ptr(0, when(d), new $Int64(0, 0), sendTime, new chanType(c), null, false));
startTimer(t.r);
return t;
};
$pkg.NewTimer = NewTimer;
Timer.ptr.prototype.Reset = function(d) {
var $ptr, active, d, t, w;
t = this;
if (t.r.f === $throwNilPointerError) {
$panic(new $String("time: Reset called on uninitialized Timer"));
}
w = when(d);
active = stopTimer(t.r);
t.r.when = w;
startTimer(t.r);
return active;
};
Timer.prototype.Reset = function(d) { return this.$val.Reset(d); };
sendTime = function(c, seq) {
var $ptr, _selection, c, seq, $r;
/* */ var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _selection = $f._selection; c = $f.c; seq = $f.seq; $r = $f.$r; }
_selection = $select([[$assertType(c, chanType), $clone(Now(), Time)], []]);
if (_selection[0] === 0) {
} else if (_selection[0] === 1) {
}
/* */ if ($f === undefined) { $f = { $blk: sendTime }; } $f.$ptr = $ptr; $f._selection = _selection; $f.c = c; $f.seq = seq; $f.$r = $r; return $f;
};
After = function(d) {
var $ptr, d;
return NewTimer(d).C;
};
$pkg.After = After;
AfterFunc = function(d, f) {
var $ptr, d, f, t;
t = new Timer.ptr($chanNil, new runtimeTimer.ptr(0, when(d), new $Int64(0, 0), goFunc, new funcType(f), null, false));
startTimer(t.r);
return t;
};
$pkg.AfterFunc = AfterFunc;
goFunc = function(arg, seq) {
var $ptr, arg, seq;
$go($assertType(arg, funcType), []);
};
NewTicker = function(d) {
var $ptr, c, d, t;
if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) {
$panic(errors.New("non-positive interval for NewTicker"));
}
c = new $Chan(Time, 1);
t = new Ticker.ptr(c, new runtimeTimer.ptr(0, when(d), (new $Int64(d.$high, d.$low)), sendTime, new chanType(c), null, false));
startTimer(t.r);
return t;
};
$pkg.NewTicker = NewTicker;
Ticker.ptr.prototype.Stop = function() {
var $ptr, t;
t = this;
stopTimer(t.r);
};
Ticker.prototype.Stop = function() { return this.$val.Stop(); };
Time.ptr.prototype.setLoc = function(loc) {
var $ptr, loc, t;
t = this;
if (loc === utcLoc) {
loc = ptrType$1.nil;
}
t.loc = loc;
};
Time.prototype.setLoc = function(loc) { return this.$val.setLoc(loc); };
Time.ptr.prototype.After = function(u) {
var $ptr, t, u, x, x$1, x$2, x$3;
t = this;
return (x = t.sec, x$1 = u.sec, (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low > x$1.$low))) || (x$2 = t.sec, x$3 = u.sec, (x$2.$high === x$3.$high && x$2.$low === x$3.$low)) && t.nsec > u.nsec;
};
Time.prototype.After = function(u) { return this.$val.After(u); };
Time.ptr.prototype.Before = function(u) {
var $ptr, t, u, x, x$1, x$2, x$3;
t = this;
return (x = t.sec, x$1 = u.sec, (x.$high < x$1.$high || (x.$high === x$1.$high && x.$low < x$1.$low))) || (x$2 = t.sec, x$3 = u.sec, (x$2.$high === x$3.$high && x$2.$low === x$3.$low)) && t.nsec < u.nsec;
};
Time.prototype.Before = function(u) { return this.$val.Before(u); };
Time.ptr.prototype.Equal = function(u) {
var $ptr, t, u, x, x$1;
t = this;
return (x = t.sec, x$1 = u.sec, (x.$high === x$1.$high && x.$low === x$1.$low)) && (t.nsec === u.nsec);
};
Time.prototype.Equal = function(u) { return this.$val.Equal(u); };
Month.prototype.String = function() {
var $ptr, buf, m, n, x;
m = this.$val;
if (1 <= m && m <= 12) {
return (x = m - 1 >> 0, ((x < 0 || x >= months.length) ? ($throwRuntimeError("index out of range"), undefined) : months[x]));
}
buf = $makeSlice(sliceType$3, 20);
n = fmtInt(buf, (new $Uint64(0, m)));
return "%!Month(" + ($bytesToString($subslice(buf, n))) + ")";
};
$ptrType(Month).prototype.String = function() { return new Month(this.$get()).String(); };
Weekday.prototype.String = function() {
var $ptr, d;
d = this.$val;
return ((d < 0 || d >= days.length) ? ($throwRuntimeError("index out of range"), undefined) : days[d]);
};
$ptrType(Weekday).prototype.String = function() { return new Weekday(this.$get()).String(); };
Time.ptr.prototype.IsZero = function() {
var $ptr, t, x;
t = this;
return (x = t.sec, (x.$high === 0 && x.$low === 0)) && (t.nsec === 0);
};
Time.prototype.IsZero = function() { return this.$val.IsZero(); };
Time.ptr.prototype.abs = function() {
var $ptr, _r, _r$1, _tuple$1, l, offset, sec, t, x, x$1, x$2, x$3, x$4, x$5, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple$1 = $f._tuple$1; 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; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
l = t.loc;
/* */ if (l === ptrType$1.nil || l === localLoc) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (l === ptrType$1.nil || l === localLoc) { */ case 1:
_r = l.get(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
l = _r;
/* } */ case 2:
sec = (x = t.sec, new $Int64(x.$high + -15, x.$low + 2288912640));
/* */ if (!(l === utcLoc)) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!(l === utcLoc)) { */ case 4:
/* */ if (!(l.cacheZone === ptrType.nil) && (x$1 = l.cacheStart, (x$1.$high < sec.$high || (x$1.$high === sec.$high && x$1.$low <= sec.$low))) && (x$2 = l.cacheEnd, (sec.$high < x$2.$high || (sec.$high === x$2.$high && sec.$low < x$2.$low)))) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!(l.cacheZone === ptrType.nil) && (x$1 = l.cacheStart, (x$1.$high < sec.$high || (x$1.$high === sec.$high && x$1.$low <= sec.$low))) && (x$2 = l.cacheEnd, (sec.$high < x$2.$high || (sec.$high === x$2.$high && sec.$low < x$2.$low)))) { */ case 6:
sec = (x$3 = (new $Int64(0, l.cacheZone.offset)), new $Int64(sec.$high + x$3.$high, sec.$low + x$3.$low));
$s = 8; continue;
/* } else { */ case 7:
_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; }
_tuple$1 = _r$1;
offset = _tuple$1[1];
sec = (x$4 = (new $Int64(0, offset)), new $Int64(sec.$high + x$4.$high, sec.$low + x$4.$low));
/* } */ case 8:
/* } */ case 5:
$s = -1; return ((x$5 = new $Int64(sec.$high + 2147483646, sec.$low + 450480384), new $Uint64(x$5.$high, x$5.$low)));
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.abs }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple$1 = _tuple$1; $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.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
};
Time.prototype.abs = function() { return this.$val.abs(); };
Time.ptr.prototype.locabs = function() {
var $ptr, _r, _r$1, _tuple$1, abs, l, name, offset, sec, t, x, x$1, x$2, x$3, x$4, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple$1 = $f._tuple$1; 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; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
name = "";
offset = 0;
abs = new $Uint64(0, 0);
t = this;
l = t.loc;
/* */ if (l === ptrType$1.nil || l === localLoc) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (l === ptrType$1.nil || l === localLoc) { */ case 1:
_r = l.get(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
l = _r;
/* } */ case 2:
sec = (x = t.sec, new $Int64(x.$high + -15, x.$low + 2288912640));
/* */ if (!(l === utcLoc)) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!(l === utcLoc)) { */ case 4:
/* */ if (!(l.cacheZone === ptrType.nil) && (x$1 = l.cacheStart, (x$1.$high < sec.$high || (x$1.$high === sec.$high && x$1.$low <= sec.$low))) && (x$2 = l.cacheEnd, (sec.$high < x$2.$high || (sec.$high === x$2.$high && sec.$low < x$2.$low)))) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (!(l.cacheZone === ptrType.nil) && (x$1 = l.cacheStart, (x$1.$high < sec.$high || (x$1.$high === sec.$high && x$1.$low <= sec.$low))) && (x$2 = l.cacheEnd, (sec.$high < x$2.$high || (sec.$high === x$2.$high && sec.$low < x$2.$low)))) { */ case 7:
name = l.cacheZone.name;
offset = l.cacheZone.offset;
$s = 9; continue;
/* } else { */ case 8:
_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; }
_tuple$1 = _r$1;
name = _tuple$1[0];
offset = _tuple$1[1];
/* } */ case 9:
sec = (x$3 = (new $Int64(0, offset)), new $Int64(sec.$high + x$3.$high, sec.$low + x$3.$low));
$s = 6; continue;
/* } else { */ case 5:
name = "UTC";
/* } */ case 6:
abs = ((x$4 = new $Int64(sec.$high + 2147483646, sec.$low + 450480384), new $Uint64(x$4.$high, x$4.$low)));
$s = -1; return [name, offset, abs];
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.locabs }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple$1 = _tuple$1; $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.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
};
Time.prototype.locabs = function() { return this.$val.locabs(); };
Time.ptr.prototype.Date = function() {
var $ptr, _r, _tuple$1, day, month, t, year, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple$1 = $f._tuple$1; 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:
year = 0;
month = 0;
day = 0;
t = this;
_r = $clone(t, Time).date(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
year = _tuple$1[0];
month = _tuple$1[1];
day = _tuple$1[2];
$s = -1; return [year, month, day];
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Date }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple$1 = _tuple$1; $f.day = day; $f.month = month; $f.t = t; $f.year = year; $f.$s = $s; $f.$r = $r; return $f;
};
Time.prototype.Date = function() { return this.$val.Date(); };
Time.ptr.prototype.Year = function() {
var $ptr, _r, _tuple$1, t, year, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple$1 = $f._tuple$1; t = $f.t; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
_r = $clone(t, Time).date(false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
year = _tuple$1[0];
$s = -1; return year;
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Year }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple$1 = _tuple$1; $f.t = t; $f.year = year; $f.$s = $s; $f.$r = $r; return $f;
};
Time.prototype.Year = function() { return this.$val.Year(); };
Time.ptr.prototype.Month = function() {
var $ptr, _r, _tuple$1, month, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple$1 = $f._tuple$1; month = $f.month; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
_r = $clone(t, Time).date(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
month = _tuple$1[1];
$s = -1; return month;
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Month }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple$1 = _tuple$1; $f.month = month; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
Time.prototype.Month = function() { return this.$val.Month(); };
Time.ptr.prototype.Day = function() {
var $ptr, _r, _tuple$1, day, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple$1 = $f._tuple$1; day = $f.day; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
_r = $clone(t, Time).date(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
day = _tuple$1[2];
$s = -1; return day;
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Day }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple$1 = _tuple$1; $f.day = day; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
Time.prototype.Day = function() { return this.$val.Day(); };
Time.ptr.prototype.Weekday = function() {
var $ptr, _r, _r$1, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
_r = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_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; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Weekday }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
Time.prototype.Weekday = function() { return this.$val.Weekday(); };
absWeekday = function(abs) {
var $ptr, _q, abs, sec;
sec = $div64((new $Uint64(abs.$high + 0, abs.$low + 86400)), new $Uint64(0, 604800), true);
return (((_q = ((sec.$low >> 0)) / 86400, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0));
};
Time.ptr.prototype.ISOWeek = function() {
var $ptr, _q, _r, _r$1, _r$2, _r$3, _r$4, _tuple$1, day, dec31wday, jan1wday, month, t, wday, week, yday, year, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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$1 = $f._tuple$1; 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:
year = 0;
week = 0;
t = this;
_r = $clone(t, Time).date(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
year = _tuple$1[0];
month = _tuple$1[1];
day = _tuple$1[2];
yday = _tuple$1[3];
_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; }
wday = (_r$1 = (((_r$2 + 6 >> 0) >> 0)) % 7, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero"));
week = (_q = (((yday - wday >> 0) + 7 >> 0)) / 7, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
jan1wday = (_r$3 = (((wday - yday >> 0) + 371 >> 0)) % 7, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero"));
if (1 <= jan1wday && jan1wday <= 3) {
week = week + (1) >> 0;
}
if (week === 0) {
year = year - (1) >> 0;
week = 52;
if ((jan1wday === 4) || ((jan1wday === 5) && isLeap(year))) {
week = week + (1) >> 0;
}
}
if ((month === 12) && day >= 29 && wday < 3) {
dec31wday = (_r$4 = (((wday + 31 >> 0) - day >> 0)) % 7, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero"));
if (0 <= dec31wday && dec31wday <= 2) {
year = year + (1) >> 0;
week = 1;
}
}
$s = -1; return [year, week];
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.ISOWeek }; } $f.$ptr = $ptr; $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$1 = _tuple$1; $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;
};
Time.prototype.ISOWeek = function() { return this.$val.ISOWeek(); };
Time.ptr.prototype.Clock = function() {
var $ptr, _r, _r$1, _tuple$1, hour, min, sec, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple$1 = $f._tuple$1; 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:
hour = 0;
min = 0;
sec = 0;
t = this;
_r = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_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; }
_tuple$1 = _r$1;
hour = _tuple$1[0];
min = _tuple$1[1];
sec = _tuple$1[2];
$s = -1; return [hour, min, sec];
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Clock }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple$1 = _tuple$1; $f.hour = hour; $f.min = min; $f.sec = sec; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
Time.prototype.Clock = function() { return this.$val.Clock(); };
absClock = function(abs) {
var $ptr, _q, _q$1, abs, hour, min, sec;
hour = 0;
min = 0;
sec = 0;
sec = (($div64(abs, new $Uint64(0, 86400), true).$low >> 0));
hour = (_q = sec / 3600, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
sec = sec - (($imul(hour, 3600))) >> 0;
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"));
sec = sec - (($imul(min, 60))) >> 0;
return [hour, min, sec];
};
Time.ptr.prototype.Hour = function() {
var $ptr, _q, _r, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
_r = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$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"));
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Hour }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
Time.prototype.Hour = function() { return this.$val.Hour(); };
Time.ptr.prototype.Minute = function() {
var $ptr, _q, _r, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
_r = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$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"));
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Minute }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
Time.prototype.Minute = function() { return this.$val.Minute(); };
Time.ptr.prototype.Second = function() {
var $ptr, _r, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
_r = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return (($div64(_r, new $Uint64(0, 60), true).$low >> 0));
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Second }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
Time.prototype.Second = function() { return this.$val.Second(); };
Time.ptr.prototype.Nanosecond = function() {
var $ptr, t;
t = this;
return ((t.nsec >> 0));
};
Time.prototype.Nanosecond = function() { return this.$val.Nanosecond(); };
Time.ptr.prototype.YearDay = function() {
var $ptr, _r, _tuple$1, t, yday, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple$1 = $f._tuple$1; t = $f.t; yday = $f.yday; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
_r = $clone(t, Time).date(false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
yday = _tuple$1[3];
$s = -1; return yday + 1 >> 0;
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.YearDay }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple$1 = _tuple$1; $f.t = t; $f.yday = yday; $f.$s = $s; $f.$r = $r; return $f;
};
Time.prototype.YearDay = function() { return this.$val.YearDay(); };
Duration.prototype.String = function() {
var $ptr, _tuple$1, _tuple$2, buf, d, neg, prec, u, w;
d = this;
buf = arrayType$5.zero();
w = 32;
u = (new $Uint64(d.$high, d.$low));
neg = (d.$high < 0 || (d.$high === 0 && d.$low < 0));
if (neg) {
u = new $Uint64(-u.$high, -u.$low);
}
if ((u.$high < 0 || (u.$high === 0 && u.$low < 1000000000))) {
prec = 0;
w = w - (1) >> 0;
((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 115);
w = w - (1) >> 0;
if ((u.$high === 0 && u.$low === 0)) {
return "0s";
} else if ((u.$high < 0 || (u.$high === 0 && u.$low < 1000))) {
prec = 0;
((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 110);
} else if ((u.$high < 0 || (u.$high === 0 && u.$low < 1000000))) {
prec = 3;
w = w - (1) >> 0;
$copyString($subslice(new sliceType$3(buf), w), "\xC2\xB5");
} else {
prec = 6;
((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 109);
}
_tuple$1 = fmtFrac($subslice(new sliceType$3(buf), 0, w), u, prec);
w = _tuple$1[0];
u = _tuple$1[1];
w = fmtInt($subslice(new sliceType$3(buf), 0, w), u);
} else {
w = w - (1) >> 0;
((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 115);
_tuple$2 = fmtFrac($subslice(new sliceType$3(buf), 0, w), u, 9);
w = _tuple$2[0];
u = _tuple$2[1];
w = fmtInt($subslice(new sliceType$3(buf), 0, w), $div64(u, new $Uint64(0, 60), true));
u = $div64(u, (new $Uint64(0, 60)), false);
if ((u.$high > 0 || (u.$high === 0 && u.$low > 0))) {
w = w - (1) >> 0;
((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 109);
w = fmtInt($subslice(new sliceType$3(buf), 0, w), $div64(u, new $Uint64(0, 60), true));
u = $div64(u, (new $Uint64(0, 60)), false);
if ((u.$high > 0 || (u.$high === 0 && u.$low > 0))) {
w = w - (1) >> 0;
((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 104);
w = fmtInt($subslice(new sliceType$3(buf), 0, w), u);
}
}
}
if (neg) {
w = w - (1) >> 0;
((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 45);
}
return ($bytesToString($subslice(new sliceType$3(buf), w)));
};
$ptrType(Duration).prototype.String = function() { return this.$get().String(); };
fmtFrac = function(buf, v, prec) {
var $ptr, _tmp, _tmp$1, buf, digit, i, nv, nw, prec, print, v, w;
nw = 0;
nv = new $Uint64(0, 0);
w = buf.$length;
print = false;
i = 0;
while (true) {
if (!(i < prec)) { break; }
digit = $div64(v, new $Uint64(0, 10), true);
print = print || !((digit.$high === 0 && digit.$low === 0));
if (print) {
w = w - (1) >> 0;
((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = (((digit.$low << 24 >>> 24)) + 48 << 24 >>> 24));
}
v = $div64(v, (new $Uint64(0, 10)), false);
i = i + (1) >> 0;
}
if (print) {
w = w - (1) >> 0;
((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = 46);
}
_tmp = w;
_tmp$1 = v;
nw = _tmp;
nv = _tmp$1;
return [nw, nv];
};
fmtInt = function(buf, v) {
var $ptr, buf, v, w;
w = buf.$length;
if ((v.$high === 0 && v.$low === 0)) {
w = w - (1) >> 0;
((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = 48);
} else {
while (true) {
if (!((v.$high > 0 || (v.$high === 0 && v.$low > 0)))) { break; }
w = w - (1) >> 0;
((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));
v = $div64(v, (new $Uint64(0, 10)), false);
}
}
return w;
};
Duration.prototype.Nanoseconds = function() {
var $ptr, d;
d = this;
return (new $Int64(d.$high, d.$low));
};
$ptrType(Duration).prototype.Nanoseconds = function() { return this.$get().Nanoseconds(); };
Duration.prototype.Seconds = function() {
var $ptr, d, nsec, sec;
d = this;
sec = $div64(d, new Duration(0, 1000000000), false);
nsec = $div64(d, new Duration(0, 1000000000), true);
return ($flatten64(sec)) + ($flatten64(nsec)) / 1e+09;
};
$ptrType(Duration).prototype.Seconds = function() { return this.$get().Seconds(); };
Duration.prototype.Minutes = function() {
var $ptr, d, min, nsec;
d = this;
min = $div64(d, new Duration(13, 4165425152), false);
nsec = $div64(d, new Duration(13, 4165425152), true);
return ($flatten64(min)) + ($flatten64(nsec)) / 6e+10;
};
$ptrType(Duration).prototype.Minutes = function() { return this.$get().Minutes(); };
Duration.prototype.Hours = function() {
var $ptr, d, hour, nsec;
d = this;
hour = $div64(d, new Duration(838, 817405952), false);
nsec = $div64(d, new Duration(838, 817405952), true);
return ($flatten64(hour)) + ($flatten64(nsec)) / 3.6e+12;
};
$ptrType(Duration).prototype.Hours = function() { return this.$get().Hours(); };
Time.ptr.prototype.Add = function(d) {
var $ptr, d, nsec, t, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7;
t = this;
t.sec = (x = t.sec, x$1 = ((x$2 = $div64(d, new Duration(0, 1000000000), false), new $Int64(x$2.$high, x$2.$low))), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
nsec = t.nsec + (((x$3 = $div64(d, new Duration(0, 1000000000), true), x$3.$low + ((x$3.$high >> 31) * 4294967296)) >> 0)) >> 0;
if (nsec >= 1000000000) {
t.sec = (x$4 = t.sec, x$5 = new $Int64(0, 1), new $Int64(x$4.$high + x$5.$high, x$4.$low + x$5.$low));
nsec = nsec - (1000000000) >> 0;
} else if (nsec < 0) {
t.sec = (x$6 = t.sec, x$7 = new $Int64(0, 1), new $Int64(x$6.$high - x$7.$high, x$6.$low - x$7.$low));
nsec = nsec + (1000000000) >> 0;
}
t.nsec = nsec;
return t;
};
Time.prototype.Add = function(d) { return this.$val.Add(d); };
Time.ptr.prototype.Sub = function(u) {
var $ptr, d, t, u, x, x$1, x$2, x$3, x$4;
t = this;
d = (x = $mul64(((x$1 = (x$2 = t.sec, x$3 = u.sec, new $Int64(x$2.$high - x$3.$high, x$2.$low - x$3.$low)), new Duration(x$1.$high, x$1.$low))), new Duration(0, 1000000000)), x$4 = (new Duration(0, (t.nsec - u.nsec >> 0))), new Duration(x.$high + x$4.$high, x.$low + x$4.$low));
if ($clone($clone(u, Time).Add(d), Time).Equal($clone(t, Time))) {
return d;
} else if ($clone(t, Time).Before($clone(u, Time))) {
return new Duration(-2147483648, 0);
} else {
return new Duration(2147483647, 4294967295);
}
};
Time.prototype.Sub = function(u) { return this.$val.Sub(u); };
Since = function(t) {
var $ptr, t;
return $clone(Now(), Time).Sub($clone(t, Time));
};
$pkg.Since = Since;
Until = function(t) {
var $ptr, t;
return $clone(t, Time).Sub($clone(Now(), Time));
};
$pkg.Until = Until;
Time.ptr.prototype.AddDate = function(years, months$1, days$1) {
var $ptr, _r, _r$1, _r$2, _tuple$1, _tuple$2, day, days$1, hour, min, month, months$1, sec, t, year, years, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; 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:
t = this;
_r = $clone(t, Time).Date(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
year = _tuple$1[0];
month = _tuple$1[1];
day = _tuple$1[2];
_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; }
_tuple$2 = _r$1;
hour = _tuple$2[0];
min = _tuple$2[1];
sec = _tuple$2[2];
_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; }
$s = -1; return _r$2;
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.AddDate }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $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;
};
Time.prototype.AddDate = function(years, months$1, days$1) { return this.$val.AddDate(years, months$1, days$1); };
Time.ptr.prototype.date = function(full) {
var $ptr, _r, _r$1, _tuple$1, day, full, month, t, yday, year, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple$1 = $f._tuple$1; 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:
year = 0;
month = 0;
day = 0;
yday = 0;
t = this;
_r = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_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; }
_tuple$1 = _r$1;
year = _tuple$1[0];
month = _tuple$1[1];
day = _tuple$1[2];
yday = _tuple$1[3];
$s = -1; return [year, month, day, yday];
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.date }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple$1 = _tuple$1; $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;
};
Time.prototype.date = function(full) { return this.$val.date(full); };
absDate = function(abs, full) {
var $ptr, _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;
year = 0;
month = 0;
day = 0;
yday = 0;
d = $div64(abs, new $Uint64(0, 86400), false);
n = $div64(d, new $Uint64(0, 146097), false);
y = $mul64(new $Uint64(0, 400), n);
d = (x = $mul64(new $Uint64(0, 146097), n), new $Uint64(d.$high - x.$high, d.$low - x.$low));
n = $div64(d, new $Uint64(0, 36524), false);
n = (x$1 = $shiftRightUint64(n, 2), new $Uint64(n.$high - x$1.$high, n.$low - x$1.$low));
y = (x$2 = $mul64(new $Uint64(0, 100), n), new $Uint64(y.$high + x$2.$high, y.$low + x$2.$low));
d = (x$3 = $mul64(new $Uint64(0, 36524), n), new $Uint64(d.$high - x$3.$high, d.$low - x$3.$low));
n = $div64(d, new $Uint64(0, 1461), false);
y = (x$4 = $mul64(new $Uint64(0, 4), n), new $Uint64(y.$high + x$4.$high, y.$low + x$4.$low));
d = (x$5 = $mul64(new $Uint64(0, 1461), n), new $Uint64(d.$high - x$5.$high, d.$low - x$5.$low));
n = $div64(d, new $Uint64(0, 365), false);
n = (x$6 = $shiftRightUint64(n, 2), new $Uint64(n.$high - x$6.$high, n.$low - x$6.$low));
y = (x$7 = n, new $Uint64(y.$high + x$7.$high, y.$low + x$7.$low));
d = (x$8 = $mul64(new $Uint64(0, 365), n), new $Uint64(d.$high - x$8.$high, d.$low - x$8.$low));
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));
yday = ((d.$low >> 0));
if (!full) {
return [year, month, day, yday];
}
day = yday;
if (isLeap(year)) {
if (day > 59) {
day = day - (1) >> 0;
} else if ((day === 59)) {
month = 2;
day = 29;
return [year, month, day, yday];
}
}
month = (((_q = day / 31, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0));
end = (((x$11 = month + 1 >> 0, ((x$11 < 0 || x$11 >= daysBefore.length) ? ($throwRuntimeError("index out of range"), undefined) : daysBefore[x$11])) >> 0));
begin = 0;
if (day >= end) {
month = month + (1) >> 0;
begin = end;
} else {
begin = ((((month < 0 || month >= daysBefore.length) ? ($throwRuntimeError("index out of range"), undefined) : daysBefore[month]) >> 0));
}
month = month + (1) >> 0;
day = (day - begin >> 0) + 1 >> 0;
return [year, month, day, yday];
};
daysIn = function(m, year) {
var $ptr, m, x, year;
if ((m === 2) && isLeap(year)) {
return 29;
}
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));
};
Now = function() {
var $ptr, _tuple$1, nsec, sec;
_tuple$1 = now();
sec = _tuple$1[0];
nsec = _tuple$1[1];
return new Time.ptr(new $Int64(sec.$high + 14, sec.$low + 2006054656), nsec, $pkg.Local);
};
$pkg.Now = Now;
Time.ptr.prototype.UTC = function() {
var $ptr, t;
t = this;
t.setLoc(utcLoc);
return t;
};
Time.prototype.UTC = function() { return this.$val.UTC(); };
Time.ptr.prototype.Local = function() {
var $ptr, t;
t = this;
t.setLoc($pkg.Local);
return t;
};
Time.prototype.Local = function() { return this.$val.Local(); };
Time.ptr.prototype.In = function(loc) {
var $ptr, loc, t;
t = this;
if (loc === ptrType$1.nil) {
$panic(new $String("time: missing Location in call to Time.In"));
}
t.setLoc(loc);
return t;
};
Time.prototype.In = function(loc) { return this.$val.In(loc); };
Time.ptr.prototype.Location = function() {
var $ptr, l, t;
t = this;
l = t.loc;
if (l === ptrType$1.nil) {
l = $pkg.UTC;
}
return l;
};
Time.prototype.Location = function() { return this.$val.Location(); };
Time.ptr.prototype.Zone = function() {
var $ptr, _r, _tuple$1, name, offset, t, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple$1 = $f._tuple$1; name = $f.name; offset = $f.offset; t = $f.t; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
name = "";
offset = 0;
t = this;
_r = t.loc.lookup((x = t.sec, new $Int64(x.$high + -15, x.$low + 2288912640))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
name = _tuple$1[0];
offset = _tuple$1[1];
$s = -1; return [name, offset];
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Zone }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple$1 = _tuple$1; $f.name = name; $f.offset = offset; $f.t = t; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
Time.prototype.Zone = function() { return this.$val.Zone(); };
Time.ptr.prototype.Unix = function() {
var $ptr, t, x;
t = this;
return (x = t.sec, new $Int64(x.$high + -15, x.$low + 2288912640));
};
Time.prototype.Unix = function() { return this.$val.Unix(); };
Time.ptr.prototype.UnixNano = function() {
var $ptr, t, x, x$1, x$2;
t = this;
return (x = $mul64(((x$1 = t.sec, new $Int64(x$1.$high + -15, x$1.$low + 2288912640))), new $Int64(0, 1000000000)), x$2 = (new $Int64(0, t.nsec)), new $Int64(x.$high + x$2.$high, x.$low + x$2.$low));
};
Time.prototype.UnixNano = function() { return this.$val.UnixNano(); };
Time.ptr.prototype.MarshalBinary = function() {
var $ptr, _q, _r, _r$1, _tuple$1, enc, offset, offsetMin, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _tuple$1 = $f._tuple$1; enc = $f.enc; offset = $f.offset; offsetMin = $f.offsetMin; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
offsetMin = 0;
/* */ if ($clone(t, Time).Location() === $pkg.UTC) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if ($clone(t, Time).Location() === $pkg.UTC) { */ case 1:
offsetMin = -1;
$s = 3; continue;
/* } else { */ case 2:
_r = $clone(t, Time).Zone(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
offset = _tuple$1[1];
if (!(((_r$1 = offset % 60, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0))) {
$s = -1; return [sliceType$3.nil, errors.New("Time.MarshalBinary: zone offset has fractional minute")];
}
offset = (_q = offset / (60), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
if (offset < -32768 || (offset === -1) || offset > 32767) {
$s = -1; return [sliceType$3.nil, errors.New("Time.MarshalBinary: unexpected zone offset")];
}
offsetMin = ((offset << 16 >> 16));
/* } */ case 3:
enc = new sliceType$3([1, (($shiftRightInt64(t.sec, 56).$low << 24 >>> 24)), (($shiftRightInt64(t.sec, 48).$low << 24 >>> 24)), (($shiftRightInt64(t.sec, 40).$low << 24 >>> 24)), (($shiftRightInt64(t.sec, 32).$low << 24 >>> 24)), (($shiftRightInt64(t.sec, 24).$low << 24 >>> 24)), (($shiftRightInt64(t.sec, 16).$low << 24 >>> 24)), (($shiftRightInt64(t.sec, 8).$low << 24 >>> 24)), ((t.sec.$low << 24 >>> 24)), (((t.nsec >> 24 >> 0) << 24 >>> 24)), (((t.nsec >> 16 >> 0) << 24 >>> 24)), (((t.nsec >> 8 >> 0) << 24 >>> 24)), ((t.nsec << 24 >>> 24)), (((offsetMin >> 8 << 16 >> 16) << 24 >>> 24)), ((offsetMin << 24 >>> 24))]);
$s = -1; return [enc, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.MarshalBinary }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._tuple$1 = _tuple$1; $f.enc = enc; $f.offset = offset; $f.offsetMin = offsetMin; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
Time.prototype.MarshalBinary = function() { return this.$val.MarshalBinary(); };
Time.ptr.prototype.UnmarshalBinary = function(data$1) {
var $ptr, _r, _tuple$1, buf, data$1, localoff, offset, t, 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, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple$1 = $f._tuple$1; buf = $f.buf; data$1 = $f.data$1; localoff = $f.localoff; offset = $f.offset; 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$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; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
buf = data$1;
if (buf.$length === 0) {
$s = -1; return errors.New("Time.UnmarshalBinary: no data");
}
if (!(((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) === 1))) {
$s = -1; return errors.New("Time.UnmarshalBinary: unsupported version");
}
if (!((buf.$length === 15))) {
$s = -1; return errors.New("Time.UnmarshalBinary: invalid length");
}
buf = $subslice(buf, 1);
t.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));
buf = $subslice(buf, 8);
t.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);
buf = $subslice(buf, 4);
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);
/* */ if (offset === -60) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (offset === -60) { */ case 1:
t.setLoc(utcLoc);
$s = 3; continue;
/* } else { */ case 2:
_r = $pkg.Local.lookup((x$14 = t.sec, new $Int64(x$14.$high + -15, x$14.$low + 2288912640))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
localoff = _tuple$1[1];
if (offset === localoff) {
t.setLoc($pkg.Local);
} else {
t.setLoc(FixedZone("", offset));
}
/* } */ case 3:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.UnmarshalBinary }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple$1 = _tuple$1; $f.buf = buf; $f.data$1 = data$1; $f.localoff = localoff; $f.offset = offset; $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$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.$s = $s; $f.$r = $r; return $f;
};
Time.prototype.UnmarshalBinary = function(data$1) { return this.$val.UnmarshalBinary(data$1); };
Time.ptr.prototype.GobEncode = function() {
var $ptr, _r, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
_r = $clone(t, Time).MarshalBinary(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.GobEncode }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
Time.prototype.GobEncode = function() { return this.$val.GobEncode(); };
Time.ptr.prototype.GobDecode = function(data$1) {
var $ptr, _r, data$1, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; data$1 = $f.data$1; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
_r = t.UnmarshalBinary(data$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.GobDecode }; } $f.$ptr = $ptr; $f._r = _r; $f.data$1 = data$1; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
Time.prototype.GobDecode = function(data$1) { return this.$val.GobDecode(data$1); };
Time.ptr.prototype.MarshalJSON = function() {
var $ptr, _r, _r$1, b, t, y, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
t = this;
_r = $clone(t, Time).Year(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
y = _r;
if (y < 0 || y >= 10000) {
$s = -1; return [sliceType$3.nil, errors.New("Time.MarshalJSON: year outside of range [0,9999]")];
}
b = $makeSlice(sliceType$3, 0, 37);
b = $append(b, 34);
_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; }
b = _r$1;
b = $append(b, 34);
$s = -1; return [b, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.MarshalJSON }; } $f.$ptr = $ptr; $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;
};
Time.prototype.MarshalJSON = function() { return this.$val.MarshalJSON(); };
Time.ptr.prototype.UnmarshalJSON = function(data$1) {
var $ptr, _r, _tuple$1, data$1, err, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple$1 = $f._tuple$1; data$1 = $f.data$1; err = $f.err; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
if (($bytesToString(data$1)) === "null") {
$s = -1; return $ifaceNil;
}
err = $ifaceNil;
_r = Parse("\"2006-01-02T15:04:05Z07:00\"", ($bytesToString(data$1))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
Time.copy(t, _tuple$1[0]);
err = _tuple$1[1];
$s = -1; return err;
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.UnmarshalJSON }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple$1 = _tuple$1; $f.data$1 = data$1; $f.err = err; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
Time.prototype.UnmarshalJSON = function(data$1) { return this.$val.UnmarshalJSON(data$1); };
Time.ptr.prototype.MarshalText = function() {
var $ptr, _r, _r$1, b, t, y, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
t = this;
_r = $clone(t, Time).Year(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
y = _r;
if (y < 0 || y >= 10000) {
$s = -1; return [sliceType$3.nil, errors.New("Time.MarshalText: year outside of range [0,9999]")];
}
b = $makeSlice(sliceType$3, 0, 35);
_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; }
$s = -1; return [_r$1, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.MarshalText }; } $f.$ptr = $ptr; $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;
};
Time.prototype.MarshalText = function() { return this.$val.MarshalText(); };
Time.ptr.prototype.UnmarshalText = function(data$1) {
var $ptr, _r, _tuple$1, data$1, err, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple$1 = $f._tuple$1; data$1 = $f.data$1; err = $f.err; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
err = $ifaceNil;
_r = Parse("2006-01-02T15:04:05Z07:00", ($bytesToString(data$1))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
Time.copy(t, _tuple$1[0]);
err = _tuple$1[1];
$s = -1; return err;
/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.UnmarshalText }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple$1 = _tuple$1; $f.data$1 = data$1; $f.err = err; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
Time.prototype.UnmarshalText = function(data$1) { return this.$val.UnmarshalText(data$1); };
Unix = function(sec, nsec) {
var $ptr, n, nsec, sec, x, x$1, x$2, x$3;
if ((nsec.$high < 0 || (nsec.$high === 0 && nsec.$low < 0)) || (nsec.$high > 0 || (nsec.$high === 0 && nsec.$low >= 1000000000))) {
n = $div64(nsec, new $Int64(0, 1000000000), false);
sec = (x = n, new $Int64(sec.$high + x.$high, sec.$low + x.$low));
nsec = (x$1 = $mul64(n, new $Int64(0, 1000000000)), new $Int64(nsec.$high - x$1.$high, nsec.$low - x$1.$low));
if ((nsec.$high < 0 || (nsec.$high === 0 && nsec.$low < 0))) {
nsec = (x$2 = new $Int64(0, 1000000000), new $Int64(nsec.$high + x$2.$high, nsec.$low + x$2.$low));
sec = (x$3 = new $Int64(0, 1), new $Int64(sec.$high - x$3.$high, sec.$low - x$3.$low));
}
}
return new Time.ptr(new $Int64(sec.$high + 14, sec.$low + 2006054656), (((nsec.$low + ((nsec.$high >> 31) * 4294967296)) >> 0)), $pkg.Local);
};
$pkg.Unix = Unix;
isLeap = function(year) {
var $ptr, _r, _r$1, _r$2, year;
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));
};
norm = function(hi, lo, base) {
var $ptr, _q, _q$1, _tmp, _tmp$1, base, hi, lo, n, n$1, nhi, nlo;
nhi = 0;
nlo = 0;
if (lo < 0) {
n = (_q = ((-lo - 1 >> 0)) / base, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0;
hi = hi - (n) >> 0;
lo = lo + (($imul(n, base))) >> 0;
}
if (lo >= base) {
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"));
hi = hi + (n$1) >> 0;
lo = lo - (($imul(n$1, base))) >> 0;
}
_tmp = hi;
_tmp$1 = lo;
nhi = _tmp;
nlo = _tmp$1;
return [nhi, nlo];
};
Date = function(year, month, day, hour, min, sec, nsec, loc) {
var $ptr, _r, _r$1, _r$2, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, 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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _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; 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:
if (loc === ptrType$1.nil) {
$panic(new $String("time: missing Location in call to Date"));
}
m = ((month >> 0)) - 1 >> 0;
_tuple$1 = norm(year, m, 12);
year = _tuple$1[0];
m = _tuple$1[1];
month = ((m >> 0)) + 1 >> 0;
_tuple$2 = norm(sec, nsec, 1000000000);
sec = _tuple$2[0];
nsec = _tuple$2[1];
_tuple$3 = norm(min, sec, 60);
min = _tuple$3[0];
sec = _tuple$3[1];
_tuple$4 = norm(hour, min, 60);
hour = _tuple$4[0];
min = _tuple$4[1];
_tuple$5 = norm(day, hour, 24);
day = _tuple$5[0];
hour = _tuple$5[1];
y = ((x = (x$1 = (new $Int64(0, year)), new $Int64(x$1.$high - -69, x$1.$low - 4075721025)), new $Uint64(x.$high, x.$low)));
n = $div64(y, new $Uint64(0, 400), false);
y = (x$2 = $mul64(new $Uint64(0, 400), n), new $Uint64(y.$high - x$2.$high, y.$low - x$2.$low));
d = $mul64(new $Uint64(0, 146097), n);
n = $div64(y, new $Uint64(0, 100), false);
y = (x$3 = $mul64(new $Uint64(0, 100), n), new $Uint64(y.$high - x$3.$high, y.$low - x$3.$low));
d = (x$4 = $mul64(new $Uint64(0, 36524), n), new $Uint64(d.$high + x$4.$high, d.$low + x$4.$low));
n = $div64(y, new $Uint64(0, 4), false);
y = (x$5 = $mul64(new $Uint64(0, 4), n), new $Uint64(y.$high - x$5.$high, y.$low - x$5.$low));
d = (x$6 = $mul64(new $Uint64(0, 1461), n), new $Uint64(d.$high + x$6.$high, d.$low + x$6.$low));
n = y;
d = (x$7 = $mul64(new $Uint64(0, 365), n), new $Uint64(d.$high + x$7.$high, d.$low + x$7.$low));
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));
if (isLeap(year) && month >= 3) {
d = (x$10 = new $Uint64(0, 1), new $Uint64(d.$high + x$10.$high, d.$low + x$10.$low));
}
d = (x$11 = (new $Uint64(0, (day - 1 >> 0))), new $Uint64(d.$high + x$11.$high, d.$low + x$11.$low));
abs = $mul64(d, new $Uint64(0, 86400));
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));
unix = (x$13 = (new $Int64(abs.$high, abs.$low)), new $Int64(x$13.$high + -2147483647, x$13.$low + 3844486912));
_r = loc.lookup(unix); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$6 = _r;
offset = _tuple$6[1];
start = _tuple$6[3];
end = _tuple$6[4];
/* */ if (!((offset === 0))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!((offset === 0))) { */ case 2:
utc = (x$14 = (new $Int64(0, offset)), new $Int64(unix.$high - x$14.$high, unix.$low - x$14.$low));
/* */ if ((utc.$high < start.$high || (utc.$high === start.$high && utc.$low < start.$low))) { $s = 5; continue; }
/* */ if ((utc.$high > end.$high || (utc.$high === end.$high && utc.$low >= end.$low))) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if ((utc.$high < start.$high || (utc.$high === start.$high && utc.$low < start.$low))) { */ case 5:
_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; }
_tuple$7 = _r$1;
offset = _tuple$7[1];
$s = 7; continue;
/* } else if ((utc.$high > end.$high || (utc.$high === end.$high && utc.$low >= end.$low))) { */ case 6:
_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; }
_tuple$8 = _r$2;
offset = _tuple$8[1];
/* } */ case 7:
case 4:
unix = (x$15 = (new $Int64(0, offset)), new $Int64(unix.$high - x$15.$high, unix.$low - x$15.$low));
/* } */ case 3:
t = new Time.ptr(new $Int64(unix.$high + 14, unix.$low + 2006054656), ((nsec >> 0)), ptrType$1.nil);
t.setLoc(loc);
$s = -1; return t;
/* */ } return; } if ($f === undefined) { $f = { $blk: Date }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $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.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;
};
$pkg.Date = Date;
Time.ptr.prototype.Truncate = function(d) {
var $ptr, _tuple$1, d, r, t;
t = this;
if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) {
return t;
}
_tuple$1 = div($clone(t, Time), d);
r = _tuple$1[1];
return $clone(t, Time).Add(new Duration(-r.$high, -r.$low));
};
Time.prototype.Truncate = function(d) { return this.$val.Truncate(d); };
Time.ptr.prototype.Round = function(d) {
var $ptr, _tuple$1, d, r, t, x;
t = this;
if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) {
return t;
}
_tuple$1 = div($clone(t, Time), d);
r = _tuple$1[1];
if ((x = new Duration(r.$high + r.$high, r.$low + r.$low), (x.$high < d.$high || (x.$high === d.$high && x.$low < d.$low)))) {
return $clone(t, Time).Add(new Duration(-r.$high, -r.$low));
}
return $clone(t, Time).Add(new Duration(d.$high - r.$high, d.$low - r.$low));
};
Time.prototype.Round = function(d) { return this.$val.Round(d); };
div = function(t, d) {
var $ptr, _q, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, d, d0, d1, d1$1, neg, nsec, qmod2, r, sec, t, tmp, u0, u0x, u1, 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;
qmod2 = 0;
r = new Duration(0, 0);
neg = false;
nsec = t.nsec;
if ((x = t.sec, (x.$high < 0 || (x.$high === 0 && x.$low < 0)))) {
neg = true;
t.sec = (x$1 = t.sec, new $Int64(-x$1.$high, -x$1.$low));
nsec = -nsec;
if (nsec < 0) {
nsec = nsec + (1000000000) >> 0;
t.sec = (x$2 = t.sec, x$3 = new $Int64(0, 1), new $Int64(x$2.$high - x$3.$high, x$2.$low - x$3.$low));
}
}
if ((d.$high < 0 || (d.$high === 0 && d.$low < 1000000000)) && (x$4 = $div64(new Duration(0, 1000000000), (new Duration(d.$high + d.$high, d.$low + d.$low)), true), (x$4.$high === 0 && x$4.$low === 0))) {
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;
r = (new Duration(0, (_r = nsec % (((d.$low + ((d.$high >> 31) * 4294967296)) >> 0)), _r === _r ? _r : $throwRuntimeError("integer divide by zero"))));
} else if ((x$5 = $div64(d, new Duration(0, 1000000000), true), (x$5.$high === 0 && x$5.$low === 0))) {
d1 = ((x$6 = $div64(d, new Duration(0, 1000000000), false), new $Int64(x$6.$high, x$6.$low)));
qmod2 = (((x$7 = $div64(t.sec, d1, false), x$7.$low + ((x$7.$high >> 31) * 4294967296)) >> 0)) & 1;
r = (x$8 = $mul64(((x$9 = $div64(t.sec, d1, true), new Duration(x$9.$high, x$9.$low))), new Duration(0, 1000000000)), x$10 = (new Duration(0, nsec)), new Duration(x$8.$high + x$10.$high, x$8.$low + x$10.$low));
} else {
sec = ((x$11 = t.sec, new $Uint64(x$11.$high, x$11.$low)));
tmp = $mul64(($shiftRightUint64(sec, 32)), new $Uint64(0, 1000000000));
u1 = $shiftRightUint64(tmp, 32);
u0 = $shiftLeft64(tmp, 32);
tmp = $mul64((new $Uint64(sec.$high & 0, (sec.$low & 4294967295) >>> 0)), new $Uint64(0, 1000000000));
_tmp = u0;
_tmp$1 = new $Uint64(u0.$high + tmp.$high, u0.$low + tmp.$low);
u0x = _tmp;
u0 = _tmp$1;
if ((u0.$high < u0x.$high || (u0.$high === u0x.$high && u0.$low < u0x.$low))) {
u1 = (x$12 = new $Uint64(0, 1), new $Uint64(u1.$high + x$12.$high, u1.$low + x$12.$low));
}
_tmp$2 = u0;
_tmp$3 = (x$13 = (new $Uint64(0, nsec)), new $Uint64(u0.$high + x$13.$high, u0.$low + x$13.$low));
u0x = _tmp$2;
u0 = _tmp$3;
if ((u0.$high < u0x.$high || (u0.$high === u0x.$high && u0.$low < u0x.$low))) {
u1 = (x$14 = new $Uint64(0, 1), new $Uint64(u1.$high + x$14.$high, u1.$low + x$14.$low));
}
d1$1 = (new $Uint64(d.$high, d.$low));
while (true) {
if (!(!((x$15 = $shiftRightUint64(d1$1, 63), (x$15.$high === 0 && x$15.$low === 1))))) { break; }
d1$1 = $shiftLeft64(d1$1, (1));
}
d0 = new $Uint64(0, 0);
while (true) {
qmod2 = 0;
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))) {
qmod2 = 1;
_tmp$4 = u0;
_tmp$5 = new $Uint64(u0.$high - d0.$high, u0.$low - d0.$low);
u0x = _tmp$4;
u0 = _tmp$5;
if ((u0.$high > u0x.$high || (u0.$high === u0x.$high && u0.$low > u0x.$low))) {
u1 = (x$16 = new $Uint64(0, 1), new $Uint64(u1.$high - x$16.$high, u1.$low - x$16.$low));
}
u1 = (x$17 = d1$1, new $Uint64(u1.$high - x$17.$high, u1.$low - x$17.$low));
}
if ((d1$1.$high === 0 && d1$1.$low === 0) && (x$18 = (new $Uint64(d.$high, d.$low)), (d0.$high === x$18.$high && d0.$low === x$18.$low))) {
break;
}
d0 = $shiftRightUint64(d0, (1));
d0 = (x$19 = $shiftLeft64((new $Uint64(d1$1.$high & 0, (d1$1.$low & 1) >>> 0)), 63), new $Uint64(d0.$high | x$19.$high, (d0.$low | x$19.$low) >>> 0));
d1$1 = $shiftRightUint64(d1$1, (1));
}
r = (new Duration(u0.$high, u0.$low));
}
if (neg && !((r.$high === 0 && r.$low === 0))) {
qmod2 = (qmod2 ^ (1)) >> 0;
r = new Duration(d.$high - r.$high, d.$low - r.$low);
}
return [qmod2, r];
};
Location.ptr.prototype.get = function() {
var $ptr, l, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; l = $f.l; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
l = this;
if (l === ptrType$1.nil) {
$s = -1; return utcLoc;
}
/* */ if (l === localLoc) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (l === localLoc) { */ case 1:
$r = localOnce.Do(initLocal); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
$s = -1; return l;
/* */ } return; } if ($f === undefined) { $f = { $blk: Location.ptr.prototype.get }; } $f.$ptr = $ptr; $f.l = l; $f.$s = $s; $f.$r = $r; return $f;
};
Location.prototype.get = function() { return this.$val.get(); };
Location.ptr.prototype.String = function() {
var $ptr, _r, l, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; l = $f.l; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
l = this;
_r = l.get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r.name;
/* */ } return; } if ($f === undefined) { $f = { $blk: Location.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.l = l; $f.$s = $s; $f.$r = $r; return $f;
};
Location.prototype.String = function() { return this.$val.String(); };
FixedZone = function(name, offset) {
var $ptr, l, name, offset, x;
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);
l.cacheZone = (x = l.zone, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]));
return l;
};
$pkg.FixedZone = FixedZone;
Location.ptr.prototype.lookup = function(sec) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
name = "";
offset = 0;
isDST = false;
start = new $Int64(0, 0);
end = new $Int64(0, 0);
l = this;
_r = l.get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
l = _r;
if (l.zone.$length === 0) {
name = "UTC";
offset = 0;
isDST = false;
start = new $Int64(-2147483648, 0);
end = new $Int64(2147483647, 4294967295);
$s = -1; return [name, offset, isDST, start, end];
}
zone$1 = l.cacheZone;
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)))) {
name = zone$1.name;
offset = zone$1.offset;
isDST = zone$1.isDST;
start = l.cacheStart;
end = l.cacheEnd;
$s = -1; return [name, offset, isDST, start, end];
}
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)))) {
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]));
name = zone$2.name;
offset = zone$2.offset;
isDST = zone$2.isDST;
start = new $Int64(-2147483648, 0);
if (l.tx.$length > 0) {
end = (x$6 = l.tx, (0 >= x$6.$length ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + 0])).when;
} else {
end = new $Int64(2147483647, 4294967295);
}
$s = -1; return [name, offset, isDST, start, end];
}
tx = l.tx;
end = new $Int64(2147483647, 4294967295);
lo = 0;
hi = tx.$length;
while (true) {
if (!((hi - lo >> 0) > 1)) { break; }
m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
lim = ((m < 0 || m >= tx.$length) ? ($throwRuntimeError("index out of range"), undefined) : tx.$array[tx.$offset + m]).when;
if ((sec.$high < lim.$high || (sec.$high === lim.$high && sec.$low < lim.$low))) {
end = lim;
hi = m;
} else {
lo = m;
}
}
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]));
name = zone$3.name;
offset = zone$3.offset;
isDST = zone$3.isDST;
start = ((lo < 0 || lo >= tx.$length) ? ($throwRuntimeError("index out of range"), undefined) : tx.$array[tx.$offset + lo]).when;
$s = -1; return [name, offset, isDST, start, end];
/* */ } return; } if ($f === undefined) { $f = { $blk: Location.ptr.prototype.lookup }; } $f.$ptr = $ptr; $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;
};
Location.prototype.lookup = function(sec) { return this.$val.lookup(sec); };
Location.ptr.prototype.lookupFirstZone = function() {
var $ptr, _i, _ref, l, x, x$1, x$2, x$3, x$4, x$5, zi, zi$1;
l = this;
if (!l.firstZoneUsed()) {
return 0;
}
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) {
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;
while (true) {
if (!(zi >= 0)) { break; }
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) {
return zi;
}
zi = zi - (1) >> 0;
}
}
_ref = l.zone;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
zi$1 = _i;
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) {
return zi$1;
}
_i++;
}
return 0;
};
Location.prototype.lookupFirstZone = function() { return this.$val.lookupFirstZone(); };
Location.ptr.prototype.firstZoneUsed = function() {
var $ptr, _i, _ref, l, tx;
l = this;
_ref = l.tx;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
tx = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), zoneTrans);
if (tx.index === 0) {
return true;
}
_i++;
}
return false;
};
Location.prototype.firstZoneUsed = function() { return this.$val.firstZoneUsed(); };
Location.ptr.prototype.lookupName = function(name, unix) {
var $ptr, _i, _i$1, _r, _r$1, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple$1, i, i$1, isDST, isDST$1, l, nam, name, offset, offset$1, ok, unix, x, x$1, x$2, zone$1, zone$2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple$1 = $f._tuple$1; i = $f.i; i$1 = $f.i$1; isDST = $f.isDST; isDST$1 = $f.isDST$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:
offset = 0;
isDST = false;
ok = false;
l = this;
_r = l.get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
l = _r;
_ref = l.zone;
_i = 0;
/* while (true) { */ case 2:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
i = _i;
zone$1 = (x = l.zone, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
/* */ if (zone$1.name === name) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (zone$1.name === name) { */ case 4:
_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; }
_tuple$1 = _r$1;
nam = _tuple$1[0];
offset$1 = _tuple$1[1];
isDST$1 = _tuple$1[2];
if (nam === zone$1.name) {
_tmp = offset$1;
_tmp$1 = isDST$1;
_tmp$2 = true;
offset = _tmp;
isDST = _tmp$1;
ok = _tmp$2;
$s = -1; return [offset, isDST, ok];
}
/* } */ case 5:
_i++;
/* } */ $s = 2; continue; case 3:
_ref$1 = l.zone;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
i$1 = _i$1;
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]));
if (zone$2.name === name) {
_tmp$3 = zone$2.offset;
_tmp$4 = zone$2.isDST;
_tmp$5 = true;
offset = _tmp$3;
isDST = _tmp$4;
ok = _tmp$5;
$s = -1; return [offset, isDST, ok];
}
_i$1++;
}
$s = -1; return [offset, isDST, ok];
/* */ } return; } if ($f === undefined) { $f = { $blk: Location.ptr.prototype.lookupName }; } $f.$ptr = $ptr; $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._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple$1 = _tuple$1; $f.i = i; $f.i$1 = i$1; $f.isDST = isDST; $f.isDST$1 = isDST$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;
};
Location.prototype.lookupName = function(name, unix) { return this.$val.lookupName(name, unix); };
ptrType$3.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
ptrType$4.methods = [{prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([Duration], [$Bool], false)}];
ptrType$5.methods = [{prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [], false)}];
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$1], [Time], false)}, {prop: "Location", name: "Location", pkg: "", typ: $funcType([], [ptrType$1], 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)}];
ptrType$6.methods = [{prop: "setLoc", name: "setLoc", pkg: "time", typ: $funcType([ptrType$1], [], 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)}];
Month.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
Weekday.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
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)}];
ptrType$1.methods = [{prop: "get", name: "get", pkg: "time", typ: $funcType([], [ptrType$1], 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, $Bool], false)}];
runtimeTimer.init("time", [{prop: "i", name: "i", exported: false, typ: $Int32, tag: ""}, {prop: "when", name: "when", exported: false, typ: $Int64, tag: ""}, {prop: "period", name: "period", exported: false, typ: $Int64, tag: ""}, {prop: "f", name: "f", exported: false, typ: funcType$1, tag: ""}, {prop: "arg", name: "arg", exported: false, typ: $emptyInterface, tag: ""}, {prop: "timeout", name: "timeout", exported: false, typ: ptrType$2, tag: ""}, {prop: "active", name: "active", exported: false, typ: $Bool, tag: ""}]);
ParseError.init("", [{prop: "Layout", name: "Layout", exported: true, typ: $String, tag: ""}, {prop: "Value", name: "Value", exported: true, typ: $String, tag: ""}, {prop: "LayoutElem", name: "LayoutElem", exported: true, typ: $String, tag: ""}, {prop: "ValueElem", name: "ValueElem", exported: true, typ: $String, tag: ""}, {prop: "Message", name: "Message", exported: true, typ: $String, tag: ""}]);
Timer.init("time", [{prop: "C", name: "C", exported: true, typ: chanType$1, tag: ""}, {prop: "r", name: "r", exported: false, typ: runtimeTimer, tag: ""}]);
Ticker.init("time", [{prop: "C", name: "C", exported: true, typ: chanType$1, tag: ""}, {prop: "r", name: "r", exported: false, typ: runtimeTimer, tag: ""}]);
Time.init("time", [{prop: "sec", name: "sec", exported: false, typ: $Int64, tag: ""}, {prop: "nsec", name: "nsec", exported: false, typ: $Int32, tag: ""}, {prop: "loc", name: "loc", exported: false, typ: ptrType$1, tag: ""}]);
Location.init("time", [{prop: "name", name: "name", exported: false, typ: $String, tag: ""}, {prop: "zone", name: "zone", exported: false, typ: sliceType, tag: ""}, {prop: "tx", name: "tx", exported: false, typ: sliceType$1, tag: ""}, {prop: "cacheStart", name: "cacheStart", exported: false, typ: $Int64, tag: ""}, {prop: "cacheEnd", name: "cacheEnd", exported: false, typ: $Int64, tag: ""}, {prop: "cacheZone", name: "cacheZone", exported: false, typ: ptrType, tag: ""}]);
zone.init("time", [{prop: "name", name: "name", exported: false, typ: $String, tag: ""}, {prop: "offset", name: "offset", exported: false, typ: $Int, tag: ""}, {prop: "isDST", name: "isDST", exported: false, typ: $Bool, tag: ""}]);
zoneTrans.init("time", [{prop: "when", name: "when", exported: false, typ: $Int64, tag: ""}, {prop: "index", name: "index", exported: false, typ: $Uint8, tag: ""}, {prop: "isstd", name: "isstd", exported: false, typ: $Bool, tag: ""}, {prop: "isutc", name: "isutc", exported: false, typ: $Bool, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = nosync.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = registry.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = runtime.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = syscall.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
localLoc = new Location.ptr("", sliceType.nil, sliceType$1.nil, new $Int64(0, 0), new $Int64(0, 0), ptrType.nil);
localOnce = new nosync.Once.ptr(false, false);
std0x = $toNativeArray($kindInt, [260, 265, 524, 526, 528, 274]);
longDayNames = new sliceType$2(["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]);
shortDayNames = new sliceType$2(["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]);
shortMonthNames = new sliceType$2(["---", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]);
longMonthNames = new sliceType$2(["---", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]);
atoiError = errors.New("time: invalid number");
errBad = errors.New("bad value for field");
errLeadingInt = errors.New("time: bad [0-9]*");
months = $toNativeArray($kindString, ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]);
days = $toNativeArray($kindString, ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]);
daysBefore = $toNativeArray($kindInt32, [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365]);
utcLoc = new Location.ptr("UTC", sliceType.nil, sliceType$1.nil, new $Int64(0, 0), new $Int64(0, 0), ptrType.nil);
$pkg.UTC = utcLoc;
$pkg.Local = localLoc;
_tuple = syscall.Getenv("ZONEINFO");
zoneinfo = _tuple[0];
badData = errors.New("malformed time zone information");
init();
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["os"] = (function() {
var $pkg = {}, $init, errors, js, windows, io, runtime, sync, atomic, syscall, time, utf16, utf8, PathError, SyscallError, LinkError, file, dirInfo, File, FileInfo, FileMode, fileStat, sliceType, ptrType, sliceType$1, sliceType$2, sliceType$3, ptrType$1, ptrType$2, ptrType$3, ptrType$5, ptrType$10, arrayType, ptrType$11, sliceType$5, ptrType$12, ptrType$13, funcType$1, arrayType$2, arrayType$3, ptrType$14, ptrType$15, sliceType$7, arrayType$6, ptrType$16, readConsole, devNullStat, devNullStat$24ptr, runtime_args, init, runtime_beforeExit, Getenv, NewSyscallError, IsExist, underlyingError, isExist, Getpid, init$1, Open, fixCount, Readlink, syscallMode, newFile, newConsoleFile, NewFile, epipecheck, openFile, openDir, OpenFile, Remove, TempDir, IsPathSeparator, basename, isAbs, volumeName, fixLongPath, init$2, Exit, Stat, Lstat;
errors = $packages["errors"];
js = $packages["github.com/gopherjs/gopherjs/js"];
windows = $packages["internal/syscall/windows"];
io = $packages["io"];
runtime = $packages["runtime"];
sync = $packages["sync"];
atomic = $packages["sync/atomic"];
syscall = $packages["syscall"];
time = $packages["time"];
utf16 = $packages["unicode/utf16"];
utf8 = $packages["unicode/utf8"];
PathError = $pkg.PathError = $newType(0, $kindStruct, "os.PathError", true, "os", true, function(Op_, Path_, Err_) {
this.$val = this;
if (arguments.length === 0) {
this.Op = "";
this.Path = "";
this.Err = $ifaceNil;
return;
}
this.Op = Op_;
this.Path = Path_;
this.Err = Err_;
});
SyscallError = $pkg.SyscallError = $newType(0, $kindStruct, "os.SyscallError", true, "os", true, function(Syscall_, Err_) {
this.$val = this;
if (arguments.length === 0) {
this.Syscall = "";
this.Err = $ifaceNil;
return;
}
this.Syscall = Syscall_;
this.Err = Err_;
});
LinkError = $pkg.LinkError = $newType(0, $kindStruct, "os.LinkError", true, "os", true, function(Op_, Old_, New_, Err_) {
this.$val = this;
if (arguments.length === 0) {
this.Op = "";
this.Old = "";
this.New = "";
this.Err = $ifaceNil;
return;
}
this.Op = Op_;
this.Old = Old_;
this.New = New_;
this.Err = Err_;
});
file = $pkg.file = $newType(0, $kindStruct, "os.file", true, "os", false, function(fd_, name_, dirinfo_, l_, isConsole_, lastbits_, readuint16_, readbyte_, readbyteOffset_) {
this.$val = this;
if (arguments.length === 0) {
this.fd = 0;
this.name = "";
this.dirinfo = ptrType$12.nil;
this.l = new sync.Mutex.ptr(0, 0);
this.isConsole = false;
this.lastbits = sliceType$3.nil;
this.readuint16 = sliceType$2.nil;
this.readbyte = sliceType$3.nil;
this.readbyteOffset = 0;
return;
}
this.fd = fd_;
this.name = name_;
this.dirinfo = dirinfo_;
this.l = l_;
this.isConsole = isConsole_;
this.lastbits = lastbits_;
this.readuint16 = readuint16_;
this.readbyte = readbyte_;
this.readbyteOffset = readbyteOffset_;
});
dirInfo = $pkg.dirInfo = $newType(0, $kindStruct, "os.dirInfo", true, "os", false, function(data_, needdata_, path_, isempty_) {
this.$val = this;
if (arguments.length === 0) {
this.data = new syscall.Win32finddata.ptr(0, new syscall.Filetime.ptr(0, 0), new syscall.Filetime.ptr(0, 0), new syscall.Filetime.ptr(0, 0), 0, 0, 0, 0, arrayType$2.zero(), arrayType$3.zero());
this.needdata = false;
this.path = "";
this.isempty = false;
return;
}
this.data = data_;
this.needdata = needdata_;
this.path = path_;
this.isempty = isempty_;
});
File = $pkg.File = $newType(0, $kindStruct, "os.File", true, "os", true, function(file_) {
this.$val = this;
if (arguments.length === 0) {
this.file = ptrType$13.nil;
return;
}
this.file = file_;
});
FileInfo = $pkg.FileInfo = $newType(8, $kindInterface, "os.FileInfo", true, "os", true, null);
FileMode = $pkg.FileMode = $newType(4, $kindUint32, "os.FileMode", true, "os", true, null);
fileStat = $pkg.fileStat = $newType(0, $kindStruct, "os.fileStat", true, "os", false, function(name_, sys_, pipe_, Mutex_, path_, vol_, idxhi_, idxlo_) {
this.$val = this;
if (arguments.length === 0) {
this.name = "";
this.sys = new syscall.Win32FileAttributeData.ptr(0, new syscall.Filetime.ptr(0, 0), new syscall.Filetime.ptr(0, 0), new syscall.Filetime.ptr(0, 0), 0, 0);
this.pipe = false;
this.Mutex = new sync.Mutex.ptr(0, 0);
this.path = "";
this.vol = 0;
this.idxhi = 0;
this.idxlo = 0;
return;
}
this.name = name_;
this.sys = sys_;
this.pipe = pipe_;
this.Mutex = Mutex_;
this.path = path_;
this.vol = vol_;
this.idxhi = idxhi_;
this.idxlo = idxlo_;
});
sliceType = $sliceType($String);
ptrType = $ptrType(File);
sliceType$1 = $sliceType(FileInfo);
sliceType$2 = $sliceType($Uint16);
sliceType$3 = $sliceType($Uint8);
ptrType$1 = $ptrType(PathError);
ptrType$2 = $ptrType(LinkError);
ptrType$3 = $ptrType(SyscallError);
ptrType$5 = $ptrType($Uint32);
ptrType$10 = $ptrType($Int32);
arrayType = $arrayType($Uint16, 8192);
ptrType$11 = $ptrType(arrayType);
sliceType$5 = $sliceType(ptrType$11);
ptrType$12 = $ptrType(dirInfo);
ptrType$13 = $ptrType(file);
funcType$1 = $funcType([ptrType$13], [$error], false);
arrayType$2 = $arrayType($Uint16, 259);
arrayType$3 = $arrayType($Uint16, 13);
ptrType$14 = $ptrType($Uint16);
ptrType$15 = $ptrType($Uint8);
sliceType$7 = $sliceType($Int32);
arrayType$6 = $arrayType($Uint8, 32);
ptrType$16 = $ptrType(fileStat);
runtime_args = function() {
var $ptr;
return $pkg.Args;
};
init = function() {
var $ptr, argv, i, process;
process = $global.process;
if (!(process === undefined)) {
argv = process.argv;
$pkg.Args = $makeSlice(sliceType, ($parseInt(argv.length) - 1 >> 0));
i = 0;
while (true) {
if (!(i < ($parseInt(argv.length) - 1 >> 0))) { break; }
((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));
i = i + (1) >> 0;
}
}
if ($pkg.Args.$length === 0) {
$pkg.Args = new sliceType(["?"]);
}
};
runtime_beforeExit = function() {
var $ptr;
};
File.ptr.prototype.Readdir = function(n) {
var $ptr, f, n;
f = this;
if (f === ptrType.nil) {
return [sliceType$1.nil, $pkg.ErrInvalid];
}
return f.readdir(n);
};
File.prototype.Readdir = function(n) { return this.$val.Readdir(n); };
File.ptr.prototype.Readdirnames = function(n) {
var $ptr, _r, _tmp, _tmp$1, _tuple, err, f, n, names, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
names = sliceType.nil;
err = $ifaceNil;
f = this;
if (f === ptrType.nil) {
_tmp = sliceType.nil;
_tmp$1 = $pkg.ErrInvalid;
names = _tmp;
err = _tmp$1;
$s = -1; return [names, err];
}
_r = f.readdirnames(n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
names = _tuple[0];
err = _tuple[1];
$s = -1; return [names, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Readdirnames }; } $f.$ptr = $ptr; $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;
};
File.prototype.Readdirnames = function(n) { return this.$val.Readdirnames(n); };
File.ptr.prototype.readdir = function(n) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, d, e, err, f, fi, file$1, n, name, size, wantAll;
fi = sliceType$1.nil;
err = $ifaceNil;
file$1 = this;
if (file$1 === ptrType.nil) {
_tmp = sliceType$1.nil;
_tmp$1 = new syscall.Errno(536870951);
fi = _tmp;
err = _tmp$1;
return [fi, err];
}
if (!file$1.file.isdir()) {
_tmp$2 = sliceType$1.nil;
_tmp$3 = new PathError.ptr("Readdir", file$1.file.name, new syscall.Errno(3));
fi = _tmp$2;
err = _tmp$3;
return [fi, err];
}
if (!file$1.file.dirinfo.isempty && (file$1.file.fd === 4294967295)) {
_tmp$4 = sliceType$1.nil;
_tmp$5 = new syscall.Errno(536870951);
fi = _tmp$4;
err = _tmp$5;
return [fi, err];
}
wantAll = n <= 0;
size = n;
if (wantAll) {
n = -1;
size = 100;
}
fi = $makeSlice(sliceType$1, 0, size);
d = file$1.file.dirinfo.data;
while (true) {
if (!(!((n === 0)) && !file$1.file.dirinfo.isempty)) { break; }
if (file$1.file.dirinfo.needdata) {
e = syscall.FindNextFile(file$1.file.fd, d);
if (!($interfaceIsEqual(e, $ifaceNil))) {
if ($interfaceIsEqual(e, new syscall.Errno(18))) {
break;
} else {
err = new PathError.ptr("FindNextFile", file$1.file.name, e);
if (!wantAll) {
fi = sliceType$1.nil;
}
return [fi, err];
}
}
}
file$1.file.dirinfo.needdata = true;
name = syscall.UTF16ToString($subslice(new sliceType$2(d.FileName), 0));
if (name === "." || name === "..") {
continue;
}
f = new fileStat.ptr(name, new syscall.Win32FileAttributeData.ptr(d.FileAttributes, $clone(d.CreationTime, syscall.Filetime), $clone(d.LastAccessTime, syscall.Filetime), $clone(d.LastWriteTime, syscall.Filetime), d.FileSizeHigh, d.FileSizeLow), false, new sync.Mutex.ptr(0, 0), file$1.file.dirinfo.path + "\\" + name, 0, 0, 0);
n = n - (1) >> 0;
fi = $append(fi, f);
}
if (!wantAll && (fi.$length === 0)) {
_tmp$6 = fi;
_tmp$7 = io.EOF;
fi = _tmp$6;
err = _tmp$7;
return [fi, err];
}
_tmp$8 = fi;
_tmp$9 = $ifaceNil;
fi = _tmp$8;
err = _tmp$9;
return [fi, err];
};
File.prototype.readdir = function(n) { return this.$val.readdir(n); };
File.ptr.prototype.readdirnames = function(n) {
var $ptr, _i, _r, _ref, _tmp, _tmp$1, _tuple, err, fi, file$1, fis, i, n, names, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; fi = $f.fi; file$1 = $f.file$1; fis = $f.fis; i = $f.i; n = $f.n; names = $f.names; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
names = sliceType.nil;
err = $ifaceNil;
file$1 = this;
_tuple = file$1.Readdir(n);
fis = _tuple[0];
err = _tuple[1];
names = $makeSlice(sliceType, fis.$length);
_ref = fis;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
i = _i;
fi = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_r = fi.Name(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
((i < 0 || i >= names.$length) ? ($throwRuntimeError("index out of range"), undefined) : names.$array[names.$offset + i] = _r);
_i++;
/* } */ $s = 1; continue; case 2:
_tmp = names;
_tmp$1 = err;
names = _tmp;
err = _tmp$1;
$s = -1; return [names, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.readdirnames }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.fi = fi; $f.file$1 = file$1; $f.fis = fis; $f.i = i; $f.n = n; $f.names = names; $f.$s = $s; $f.$r = $r; return $f;
};
File.prototype.readdirnames = function(n) { return this.$val.readdirnames(n); };
Getenv = function(key) {
var $ptr, _tuple, key, v;
_tuple = syscall.Getenv(key);
v = _tuple[0];
return v;
};
$pkg.Getenv = Getenv;
PathError.ptr.prototype.Error = function() {
var $ptr, _r, e, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
e = this;
_r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return e.Op + " " + e.Path + ": " + _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: PathError.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
};
PathError.prototype.Error = function() { return this.$val.Error(); };
SyscallError.ptr.prototype.Error = function() {
var $ptr, _r, e, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
e = this;
_r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return e.Syscall + ": " + _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: SyscallError.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
};
SyscallError.prototype.Error = function() { return this.$val.Error(); };
NewSyscallError = function(syscall$1, err) {
var $ptr, err, syscall$1;
if ($interfaceIsEqual(err, $ifaceNil)) {
return $ifaceNil;
}
return new SyscallError.ptr(syscall$1, err);
};
$pkg.NewSyscallError = NewSyscallError;
IsExist = function(err) {
var $ptr, err;
return isExist(err);
};
$pkg.IsExist = IsExist;
underlyingError = function(err) {
var $ptr, _ref, err, err$1, err$2, err$3;
_ref = err;
if ($assertType(_ref, ptrType$1, true)[1]) {
err$1 = _ref.$val;
return err$1.Err;
} else if ($assertType(_ref, ptrType$2, true)[1]) {
err$2 = _ref.$val;
return err$2.Err;
} else if ($assertType(_ref, ptrType$3, true)[1]) {
err$3 = _ref.$val;
return err$3.Err;
}
return err;
};
isExist = function(err) {
var $ptr, err;
err = underlyingError(err);
return $interfaceIsEqual(err, new syscall.Errno(183)) || $interfaceIsEqual(err, new syscall.Errno(145)) || $interfaceIsEqual(err, new syscall.Errno(80)) || $interfaceIsEqual(err, $pkg.ErrExist);
};
Getpid = function() {
var $ptr;
return syscall.Getpid();
};
$pkg.Getpid = Getpid;
init$1 = function() {
var $ptr, _i, _ref, _tuple, argc, argc$24ptr, argv, cmd, e, i, v, $deferred;
/* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
argc = 0;
cmd = syscall.GetCommandLine();
_tuple = syscall.CommandLineToArgv(cmd, (argc$24ptr || (argc$24ptr = new ptrType$10(function() { return argc; }, function($v) { argc = $v; }))));
argv = _tuple[0];
e = _tuple[1];
if (!($interfaceIsEqual(e, $ifaceNil))) {
return;
}
$deferred.push([syscall.LocalFree, [((((argv)) >>> 0))]]);
$pkg.Args = $makeSlice(sliceType, argc);
_ref = $subslice(new sliceType$5((argv)), 0, argc);
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
((i < 0 || i >= $pkg.Args.$length) ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Args.$array[$pkg.Args.$offset + i] = syscall.UTF16ToString(new sliceType$2((v))));
_i++;
}
/* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); }
};
File.ptr.prototype.Name = function() {
var $ptr, f;
f = this;
return f.file.name;
};
File.prototype.Name = function() { return this.$val.Name(); };
LinkError.ptr.prototype.Error = function() {
var $ptr, _r, e, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
e = this;
_r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return e.Op + " " + e.Old + " " + e.New + ": " + _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: LinkError.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
};
LinkError.prototype.Error = function() { return this.$val.Error(); };
File.ptr.prototype.Read = function(b) {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, b, e, err, err$1, f, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; err$1 = $f.err$1; f = $f.f; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
n = 0;
err = $ifaceNil;
f = this;
err$1 = f.checkValid("read");
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
_tmp = 0;
_tmp$1 = err$1;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
_r = f.read(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
e = _tuple[1];
if ((n === 0) && b.$length > 0 && $interfaceIsEqual(e, $ifaceNil)) {
_tmp$2 = 0;
_tmp$3 = io.EOF;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
}
if (!($interfaceIsEqual(e, $ifaceNil))) {
err = new PathError.ptr("read", f.file.name, e);
}
_tmp$4 = n;
_tmp$5 = err;
n = _tmp$4;
err = _tmp$5;
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Read }; } $f.$ptr = $ptr; $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.err$1 = err$1; $f.f = f; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
};
File.prototype.Read = function(b) { return this.$val.Read(b); };
File.ptr.prototype.ReadAt = function(b, off) {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, err$1, f, m, n, off, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
f = this;
err$1 = f.checkValid("read");
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
_tmp = 0;
_tmp$1 = err$1;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
/* while (true) { */ case 1:
/* if (!(b.$length > 0)) { break; } */ if(!(b.$length > 0)) { $s = 2; continue; }
_r = f.pread(b, off); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
m = _tuple[0];
e = _tuple[1];
if ((m === 0) && $interfaceIsEqual(e, $ifaceNil)) {
_tmp$2 = n;
_tmp$3 = io.EOF;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
}
if (!($interfaceIsEqual(e, $ifaceNil))) {
err = new PathError.ptr("read", f.file.name, e);
/* break; */ $s = 2; continue;
}
n = n + (m) >> 0;
b = $subslice(b, m);
off = (x = (new $Int64(0, m)), new $Int64(off.$high + x.$high, off.$low + x.$low));
/* } */ $s = 1; continue; case 2:
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.ReadAt }; } $f.$ptr = $ptr; $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;
};
File.prototype.ReadAt = function(b, off) { return this.$val.ReadAt(b, off); };
File.ptr.prototype.Write = function(b) {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, err$1, f, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
f = this;
err$1 = f.checkValid("write");
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
_tmp = 0;
_tmp$1 = err$1;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
_r = f.write(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
e = _tuple[1];
if (n < 0) {
n = 0;
}
if (!((n === b.$length))) {
err = io.ErrShortWrite;
}
epipecheck(f, e);
if (!($interfaceIsEqual(e, $ifaceNil))) {
err = new PathError.ptr("write", f.file.name, e);
}
_tmp$2 = n;
_tmp$3 = err;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Write }; } $f.$ptr = $ptr; $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;
};
File.prototype.Write = function(b) { return this.$val.Write(b); };
File.ptr.prototype.WriteAt = function(b, off) {
var $ptr, _r, _tmp, _tmp$1, _tuple, b, e, err, err$1, f, m, n, off, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _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:
n = 0;
err = $ifaceNil;
f = this;
err$1 = f.checkValid("write");
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
_tmp = 0;
_tmp$1 = err$1;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
/* while (true) { */ case 1:
/* if (!(b.$length > 0)) { break; } */ if(!(b.$length > 0)) { $s = 2; continue; }
_r = f.pwrite(b, off); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
m = _tuple[0];
e = _tuple[1];
if (!($interfaceIsEqual(e, $ifaceNil))) {
err = new PathError.ptr("write", f.file.name, e);
/* break; */ $s = 2; continue;
}
n = n + (m) >> 0;
b = $subslice(b, m);
off = (x = (new $Int64(0, m)), new $Int64(off.$high + x.$high, off.$low + x.$low));
/* } */ $s = 1; continue; case 2:
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.WriteAt }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $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;
};
File.prototype.WriteAt = function(b, off) { return this.$val.WriteAt(b, off); };
File.ptr.prototype.Seek = function(offset, whence) {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, e, err, err$1, f, offset, r, ret, whence, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
ret = new $Int64(0, 0);
err = $ifaceNil;
f = this;
err$1 = f.checkValid("seek");
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
_tmp = new $Int64(0, 0);
_tmp$1 = err$1;
ret = _tmp;
err = _tmp$1;
$s = -1; return [ret, err];
}
_r = f.seek(offset, whence); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
r = _tuple[0];
e = _tuple[1];
if ($interfaceIsEqual(e, $ifaceNil) && !(f.file.dirinfo === ptrType$12.nil) && !((r.$high === 0 && r.$low === 0))) {
e = new syscall.Errno(536870954);
}
if (!($interfaceIsEqual(e, $ifaceNil))) {
_tmp$2 = new $Int64(0, 0);
_tmp$3 = new PathError.ptr("seek", f.file.name, e);
ret = _tmp$2;
err = _tmp$3;
$s = -1; return [ret, err];
}
_tmp$4 = r;
_tmp$5 = $ifaceNil;
ret = _tmp$4;
err = _tmp$5;
$s = -1; return [ret, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Seek }; } $f.$ptr = $ptr; $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;
};
File.prototype.Seek = function(offset, whence) { return this.$val.Seek(offset, whence); };
File.ptr.prototype.WriteString = function(s) {
var $ptr, _r, _tuple, err, f, n, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
f = this;
_r = f.Write((new sliceType$3($stringToBytes(s)))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.WriteString }; } $f.$ptr = $ptr; $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;
};
File.prototype.WriteString = function(s) { return this.$val.WriteString(s); };
File.ptr.prototype.Chdir = function() {
var $ptr, e, err, f;
f = this;
err = f.checkValid("chdir");
if (!($interfaceIsEqual(err, $ifaceNil))) {
return err;
}
e = syscall.Fchdir(f.file.fd);
if (!($interfaceIsEqual(e, $ifaceNil))) {
return new PathError.ptr("chdir", f.file.name, e);
}
return $ifaceNil;
};
File.prototype.Chdir = function() { return this.$val.Chdir(); };
Open = function(name) {
var $ptr, name;
return OpenFile(name, 0, 0);
};
$pkg.Open = Open;
fixCount = function(n, err) {
var $ptr, err, n;
if (n < 0) {
n = 0;
}
return [n, err];
};
File.ptr.prototype.checkValid = function(op) {
var $ptr, f, op;
f = this;
if (f === ptrType.nil) {
return $pkg.ErrInvalid;
}
if (f.file.fd === 4294967295) {
return new PathError.ptr(op, f.file.name, $pkg.ErrClosed);
}
return $ifaceNil;
};
File.prototype.checkValid = function(op) { return this.$val.checkValid(op); };
Readlink = function(name) {
var $ptr, _tuple, _tuple$1, b, e, len, n, name;
len = 128;
while (true) {
b = $makeSlice(sliceType$3, len);
_tuple$1 = syscall.Readlink(fixLongPath(name), b);
_tuple = fixCount(_tuple$1[0], _tuple$1[1]);
n = _tuple[0];
e = _tuple[1];
if (!($interfaceIsEqual(e, $ifaceNil))) {
return ["", new PathError.ptr("readlink", name, e)];
}
if (n < len) {
return [($bytesToString($subslice(b, 0, n))), $ifaceNil];
}
len = $imul(len, (2));
}
};
$pkg.Readlink = Readlink;
syscallMode = function(i) {
var $ptr, i, o;
o = 0;
o = (o | (((new FileMode(i).Perm() >>> 0)))) >>> 0;
if (!((((i & 8388608) >>> 0) === 0))) {
o = (o | (2048)) >>> 0;
}
if (!((((i & 4194304) >>> 0) === 0))) {
o = (o | (1024)) >>> 0;
}
if (!((((i & 1048576) >>> 0) === 0))) {
o = (o | (512)) >>> 0;
}
return o;
};
File.ptr.prototype.Chmod = function(mode) {
var $ptr, e, err, f, mode;
f = this;
err = f.checkValid("chmod");
if (!($interfaceIsEqual(err, $ifaceNil))) {
return err;
}
e = syscall.Fchmod(f.file.fd, syscallMode(mode));
if (!($interfaceIsEqual(e, $ifaceNil))) {
return new PathError.ptr("chmod", f.file.name, e);
}
return $ifaceNil;
};
File.prototype.Chmod = function(mode) { return this.$val.Chmod(mode); };
File.ptr.prototype.Chown = function(uid, gid) {
var $ptr, e, err, f, gid, uid;
f = this;
err = f.checkValid("chown");
if (!($interfaceIsEqual(err, $ifaceNil))) {
return err;
}
e = syscall.Fchown(f.file.fd, uid, gid);
if (!($interfaceIsEqual(e, $ifaceNil))) {
return new PathError.ptr("chown", f.file.name, e);
}
return $ifaceNil;
};
File.prototype.Chown = function(uid, gid) { return this.$val.Chown(uid, gid); };
File.ptr.prototype.Truncate = function(size) {
var $ptr, e, err, f, size;
f = this;
err = f.checkValid("truncate");
if (!($interfaceIsEqual(err, $ifaceNil))) {
return err;
}
e = syscall.Ftruncate(f.file.fd, size);
if (!($interfaceIsEqual(e, $ifaceNil))) {
return new PathError.ptr("truncate", f.file.name, e);
}
return $ifaceNil;
};
File.prototype.Truncate = function(size) { return this.$val.Truncate(size); };
File.ptr.prototype.Sync = function() {
var $ptr, e, err, f;
f = this;
err = f.checkValid("sync");
if (!($interfaceIsEqual(err, $ifaceNil))) {
return err;
}
e = syscall.Fsync(f.file.fd);
if (!($interfaceIsEqual(e, $ifaceNil))) {
return new PathError.ptr("sync", f.file.name, e);
}
return $ifaceNil;
};
File.prototype.Sync = function() { return this.$val.Sync(); };
File.ptr.prototype.Fd = function() {
var $ptr, file$1;
file$1 = this;
if (file$1 === ptrType.nil) {
return 4294967295;
}
return ((file$1.file.fd >>> 0));
};
File.prototype.Fd = function() { return this.$val.Fd(); };
newFile = function(h, name) {
var $ptr, f, h, name;
f = new File.ptr(new file.ptr(h, name, ptrType$12.nil, new sync.Mutex.ptr(0, 0), false, sliceType$3.nil, sliceType$2.nil, sliceType$3.nil, 0));
runtime.SetFinalizer(f.file, new funcType$1($methodExpr(ptrType$13, "close")));
return f;
};
newConsoleFile = function(h, name) {
var $ptr, f, h, name;
f = newFile(h, name);
f.file.isConsole = true;
return f;
};
NewFile = function(fd, name) {
var $ptr, fd, h, m, m$24ptr, name;
h = ((fd >>> 0));
if (h === 4294967295) {
return ptrType.nil;
}
m = 0;
if ($interfaceIsEqual(syscall.GetConsoleMode(h, (m$24ptr || (m$24ptr = new ptrType$5(function() { return m; }, function($v) { m = $v; })))), $ifaceNil)) {
return newConsoleFile(h, name);
}
return newFile(h, name);
};
$pkg.NewFile = NewFile;
epipecheck = function(file$1, e) {
var $ptr, e, file$1;
};
file.ptr.prototype.isdir = function() {
var $ptr, f;
f = this;
return !(f === ptrType$13.nil) && !(f.dirinfo === ptrType$12.nil);
};
file.prototype.isdir = function() { return this.$val.isdir(); };
openFile = function(name, flag, perm) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, e, err, file$1, flag, name, perm, r;
file$1 = ptrType.nil;
err = $ifaceNil;
_tuple = syscall.Open(fixLongPath(name), flag | 524288, syscallMode(perm));
r = _tuple[0];
e = _tuple[1];
if (!($interfaceIsEqual(e, $ifaceNil))) {
_tmp = ptrType.nil;
_tmp$1 = e;
file$1 = _tmp;
err = _tmp$1;
return [file$1, err];
}
_tmp$2 = NewFile(((r >>> 0)), name);
_tmp$3 = $ifaceNil;
file$1 = _tmp$2;
err = _tmp$3;
return [file$1, err];
};
openDir = function(name) {
var $ptr, _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, d, e, e$1, err, f, fa, file$1, mask, maskp, name, path, pathp, r;
file$1 = ptrType.nil;
err = $ifaceNil;
mask = "";
path = fixLongPath(name);
if ((path.length === 2) && (path.charCodeAt(1) === 58) || (path.length > 0 && (path.charCodeAt((path.length - 1 >> 0)) === 92))) {
mask = path + "*";
} else {
mask = path + "\\*";
}
_tuple = syscall.UTF16PtrFromString(mask);
maskp = _tuple[0];
e = _tuple[1];
if (!($interfaceIsEqual(e, $ifaceNil))) {
_tmp = ptrType.nil;
_tmp$1 = e;
file$1 = _tmp;
err = _tmp$1;
return [file$1, err];
}
d = new dirInfo.ptr(new syscall.Win32finddata.ptr(0, new syscall.Filetime.ptr(0, 0), new syscall.Filetime.ptr(0, 0), new syscall.Filetime.ptr(0, 0), 0, 0, 0, 0, arrayType$2.zero(), arrayType$3.zero()), false, "", false);
_tuple$1 = syscall.FindFirstFile(maskp, d.data);
r = _tuple$1[0];
e = _tuple$1[1];
if (!($interfaceIsEqual(e, $ifaceNil))) {
if (!($interfaceIsEqual(e, new syscall.Errno(2)))) {
_tmp$2 = ptrType.nil;
_tmp$3 = e;
file$1 = _tmp$2;
err = _tmp$3;
return [file$1, err];
}
fa = new syscall.Win32FileAttributeData.ptr(0, new syscall.Filetime.ptr(0, 0), new syscall.Filetime.ptr(0, 0), new syscall.Filetime.ptr(0, 0), 0, 0);
_tuple$2 = syscall.UTF16PtrFromString(path);
pathp = _tuple$2[0];
e$1 = _tuple$2[1];
if (!($interfaceIsEqual(e$1, $ifaceNil))) {
_tmp$4 = ptrType.nil;
_tmp$5 = e$1;
file$1 = _tmp$4;
err = _tmp$5;
return [file$1, err];
}
e$1 = syscall.GetFileAttributesEx(pathp, 0, ((fa)));
if (!($interfaceIsEqual(e$1, $ifaceNil))) {
_tmp$6 = ptrType.nil;
_tmp$7 = e$1;
file$1 = _tmp$6;
err = _tmp$7;
return [file$1, err];
}
if (((fa.FileAttributes & 16) >>> 0) === 0) {
_tmp$8 = ptrType.nil;
_tmp$9 = e$1;
file$1 = _tmp$8;
err = _tmp$9;
return [file$1, err];
}
d.isempty = true;
}
d.path = path;
if (!isAbs(d.path)) {
_tuple$3 = syscall.FullPath(d.path);
d.path = _tuple$3[0];
e = _tuple$3[1];
if (!($interfaceIsEqual(e, $ifaceNil))) {
_tmp$10 = ptrType.nil;
_tmp$11 = e;
file$1 = _tmp$10;
err = _tmp$11;
return [file$1, err];
}
}
f = newFile(r, name);
f.file.dirinfo = d;
_tmp$12 = f;
_tmp$13 = $ifaceNil;
file$1 = _tmp$12;
err = _tmp$13;
return [file$1, err];
};
OpenFile = function(name, flag, perm) {
var $ptr, _tuple, _tuple$1, errd, errf, flag, name, perm, r;
if (name === "") {
return [ptrType.nil, new PathError.ptr("open", name, new syscall.Errno(2))];
}
_tuple = openFile(name, flag, perm);
r = _tuple[0];
errf = _tuple[1];
if ($interfaceIsEqual(errf, $ifaceNil)) {
return [r, $ifaceNil];
}
_tuple$1 = openDir(name);
r = _tuple$1[0];
errd = _tuple$1[1];
if ($interfaceIsEqual(errd, $ifaceNil)) {
if (!(((flag & 1) === 0)) || !(((flag & 2) === 0))) {
r.Close();
return [ptrType.nil, new PathError.ptr("open", name, new syscall.Errno(536870954))];
}
return [r, $ifaceNil];
}
return [ptrType.nil, new PathError.ptr("open", name, errf)];
};
$pkg.OpenFile = OpenFile;
File.ptr.prototype.Close = function() {
var $ptr, file$1;
file$1 = this;
if (file$1 === ptrType.nil) {
return $pkg.ErrInvalid;
}
return file$1.file.close();
};
File.prototype.Close = function() { return this.$val.Close(); };
file.ptr.prototype.close = function() {
var $ptr, e, err, file$1;
file$1 = this;
if (file$1 === ptrType$13.nil) {
return new syscall.Errno(536870951);
}
if (file$1.isdir() && file$1.dirinfo.isempty) {
return $ifaceNil;
}
if (file$1.fd === 4294967295) {
return new syscall.Errno(536870951);
}
e = $ifaceNil;
if (file$1.isdir()) {
e = syscall.FindClose(file$1.fd);
} else {
e = syscall.CloseHandle(file$1.fd);
}
err = $ifaceNil;
if (!($interfaceIsEqual(e, $ifaceNil))) {
err = new PathError.ptr("close", file$1.name, e);
}
file$1.fd = 4294967295;
runtime.SetFinalizer(file$1, $ifaceNil);
return err;
};
file.prototype.close = function() { return this.$val.close(); };
File.ptr.prototype.readConsole = function(b) {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, b, buf, err, err$1, f, i, i$1, n, n$1, n$2, nw, r, src, uint16s, x, x$1, x$2, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; b = $f.b; buf = $f.buf; err = $f.err; err$1 = $f.err$1; f = $f.f; i = $f.i; i$1 = $f.i$1; n = $f.n; n$1 = $f.n$1; n$2 = $f.n$2; nw = $f.nw; r = $f.r; src = $f.src; uint16s = $f.uint16s; 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:
n = 0;
err = $ifaceNil;
f = this;
if (b.$length === 0) {
_tmp = 0;
_tmp$1 = $ifaceNil;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
if (f.file.readuint16 === sliceType$2.nil) {
f.file.readuint16 = $makeSlice(sliceType$2, 0, 10000);
f.file.readbyte = $makeSlice(sliceType$3, 0, ($imul(4, f.file.readuint16.$capacity)));
}
/* while (true) { */ case 1:
/* if (!(f.file.readbyteOffset >= f.file.readbyte.$length)) { break; } */ if(!(f.file.readbyteOffset >= f.file.readbyte.$length)) { $s = 2; continue; }
nw = [nw];
n$1 = f.file.readuint16.$capacity - f.file.readuint16.$length >> 0;
if (n$1 > b.$length) {
n$1 = b.$length;
}
nw[0] = 0;
_r = readConsole(f.file.fd, (x = $subslice(f.file.readuint16, 0, (f.file.readuint16.$length + 1 >> 0)), $indexPtr(x.$array, x.$offset + f.file.readuint16.$length, ptrType$14)), ((n$1 >>> 0)), (nw.$ptr || (nw.$ptr = new ptrType$5(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, nw))), ptrType$15.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err$1 = _r;
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
_tmp$2 = 0;
_tmp$3 = err$1;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
}
uint16s = $subslice(f.file.readuint16, 0, (f.file.readuint16.$length + ((nw[0] >> 0)) >> 0));
f.file.readuint16 = $subslice(f.file.readuint16, 0, 0);
buf = $subslice(f.file.readbyte, 0, 0);
i = 0;
while (true) {
if (!(i < uint16s.$length)) { break; }
r = ((((i < 0 || i >= uint16s.$length) ? ($throwRuntimeError("index out of range"), undefined) : uint16s.$array[uint16s.$offset + i]) >> 0));
if (utf16.IsSurrogate(r)) {
if ((i + 1 >> 0) === uint16s.$length) {
if (nw[0] > 0) {
f.file.readuint16 = $subslice(f.file.readuint16, 0, 1);
(x$1 = f.file.readuint16, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0] = ((r << 16 >>> 16))));
break;
}
r = 65533;
} else {
r = utf16.DecodeRune(r, (((x$2 = i + 1 >> 0, ((x$2 < 0 || x$2 >= uint16s.$length) ? ($throwRuntimeError("index out of range"), undefined) : uint16s.$array[uint16s.$offset + x$2])) >> 0)));
if (!((r === 65533))) {
i = i + (1) >> 0;
}
}
}
n$2 = utf8.EncodeRune($subslice(buf, buf.$length, buf.$capacity), r);
buf = $subslice(buf, 0, (buf.$length + n$2 >> 0));
i = i + (1) >> 0;
}
f.file.readbyte = buf;
f.file.readbyteOffset = 0;
if (nw[0] === 0) {
/* break; */ $s = 2; continue;
}
/* } */ $s = 1; continue; case 2:
src = $subslice(f.file.readbyte, f.file.readbyteOffset);
i$1 = 0;
i$1 = 0;
while (true) {
if (!(i$1 < src.$length && i$1 < b.$length)) { break; }
x$3 = ((i$1 < 0 || i$1 >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + i$1]);
if (x$3 === 26) {
if (i$1 === 0) {
f.file.readbyteOffset = f.file.readbyteOffset + (1) >> 0;
}
break;
}
((i$1 < 0 || i$1 >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i$1] = x$3);
i$1 = i$1 + (1) >> 0;
}
f.file.readbyteOffset = f.file.readbyteOffset + (i$1) >> 0;
_tmp$4 = i$1;
_tmp$5 = $ifaceNil;
n = _tmp$4;
err = _tmp$5;
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.readConsole }; } $f.$ptr = $ptr; $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.b = b; $f.buf = buf; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.i = i; $f.i$1 = i$1; $f.n = n; $f.n$1 = n$1; $f.n$2 = n$2; $f.nw = nw; $f.r = r; $f.src = src; $f.uint16s = uint16s; $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;
};
File.prototype.readConsole = function(b) { return this.$val.readConsole(b); };
File.ptr.prototype.read = function(b) {
var $ptr, _r, _tuple, _tuple$1, _tuple$2, b, err, f, n, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; b = $f.b; err = $f.err; f = $f.f; 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);
n = 0;
err = $ifaceNil;
f = this;
$r = f.file.l.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(f.file.l, "Unlock"), []]);
/* */ if (f.file.isConsole) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (f.file.isConsole) { */ case 2:
_r = f.readConsole(b); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
$s = -1; return [n, err];
/* } */ case 3:
_tuple$2 = syscall.Read(f.file.fd, b);
_tuple$1 = fixCount(_tuple$2[0], _tuple$2[1]);
n = _tuple$1[0];
err = _tuple$1[1];
$s = -1; return [n, err];
/* */ } 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: File.ptr.prototype.read }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.b = b; $f.err = err; $f.f = f; $f.n = n; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
File.prototype.read = function(b) { return this.$val.read(b); };
File.ptr.prototype.pread = function(b, off) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, b, curoffset, done, e, err, f, n, o, off, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; curoffset = $f.curoffset; done = $f.done; e = $f.e; err = $f.err; f = $f.f; n = $f.n; o = $f.o; off = $f.off; $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);
done = [done];
o = [o];
n = 0;
err = $ifaceNil;
f = this;
$r = f.file.l.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(f.file.l, "Unlock"), []]);
_tuple = syscall.Seek(f.file.fd, new $Int64(0, 0), 1);
curoffset = _tuple[0];
e = _tuple[1];
if (!($interfaceIsEqual(e, $ifaceNil))) {
_tmp = 0;
_tmp$1 = e;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
$deferred.push([syscall.Seek, [f.file.fd, curoffset, 0]]);
o[0] = new syscall.Overlapped.ptr(0, 0, ((off.$low >>> 0)), (($shiftRightInt64(off, 32).$low >>> 0)), 0);
done[0] = 0;
e = syscall.ReadFile(f.file.fd, b, (done.$ptr || (done.$ptr = new ptrType$5(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, done))), o[0]);
if (!($interfaceIsEqual(e, $ifaceNil))) {
if ($interfaceIsEqual(e, new syscall.Errno(38))) {
_tmp$2 = 0;
_tmp$3 = $ifaceNil;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
}
_tmp$4 = 0;
_tmp$5 = e;
n = _tmp$4;
err = _tmp$5;
$s = -1; return [n, err];
}
_tmp$6 = ((done[0] >> 0));
_tmp$7 = $ifaceNil;
n = _tmp$6;
err = _tmp$7;
$s = -1; return [n, err];
/* */ } 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: File.ptr.prototype.pread }; } $f.$ptr = $ptr; $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.curoffset = curoffset; $f.done = done; $f.e = e; $f.err = err; $f.f = f; $f.n = n; $f.o = o; $f.off = off; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
File.prototype.pread = function(b, off) { return this.$val.pread(b, off); };
File.ptr.prototype.writeConsole = function(b) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, chunk, err, f, l, m, n, r, runes, uint16s, written;
n = 0;
err = $ifaceNil;
f = this;
n = b.$length;
runes = $makeSlice(sliceType$7, 0, 256);
if (f.file.lastbits.$length > 0) {
b = $appendSlice(f.file.lastbits, b);
f.file.lastbits = sliceType$3.nil;
}
while (true) {
if (!(b.$length >= 4 || utf8.FullRune(b))) { break; }
_tuple = utf8.DecodeRune(b);
r = _tuple[0];
l = _tuple[1];
runes = $append(runes, r);
b = $subslice(b, l);
}
if (b.$length > 0) {
f.file.lastbits = $makeSlice(sliceType$3, b.$length);
$copySlice(f.file.lastbits, b);
}
while (true) {
if (!(runes.$length > 0)) { break; }
m = runes.$length;
if (m > 16000) {
m = 16000;
}
chunk = $subslice(runes, 0, m);
runes = $subslice(runes, m);
uint16s = utf16.Encode(chunk);
while (true) {
if (!(uint16s.$length > 0)) { break; }
written = [written];
written[0] = 0;
err = syscall.WriteConsole(f.file.fd, $indexPtr(uint16s.$array, uint16s.$offset + 0, ptrType$14), ((uint16s.$length >>> 0)), (written.$ptr || (written.$ptr = new ptrType$5(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, written))), ptrType$15.nil);
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = 0;
_tmp$1 = $ifaceNil;
n = _tmp;
err = _tmp$1;
return [n, err];
}
uint16s = $subslice(uint16s, written[0]);
}
}
_tmp$2 = n;
_tmp$3 = $ifaceNil;
n = _tmp$2;
err = _tmp$3;
return [n, err];
};
File.prototype.writeConsole = function(b) { return this.$val.writeConsole(b); };
File.ptr.prototype.write = function(b) {
var $ptr, _tuple, _tuple$1, _tuple$2, b, err, f, n, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; b = $f.b; err = $f.err; f = $f.f; 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);
n = 0;
err = $ifaceNil;
f = this;
$r = f.file.l.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(f.file.l, "Unlock"), []]);
if (f.file.isConsole) {
_tuple = f.writeConsole(b);
n = _tuple[0];
err = _tuple[1];
$s = -1; return [n, err];
}
_tuple$2 = syscall.Write(f.file.fd, b);
_tuple$1 = fixCount(_tuple$2[0], _tuple$2[1]);
n = _tuple$1[0];
err = _tuple$1[1];
$s = -1; return [n, err];
/* */ } 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: File.ptr.prototype.write }; } $f.$ptr = $ptr; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.b = b; $f.err = err; $f.f = f; $f.n = n; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
File.prototype.write = function(b) { return this.$val.write(b); };
File.ptr.prototype.pwrite = function(b, off) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, b, curoffset, done, e, err, f, n, o, off, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; curoffset = $f.curoffset; done = $f.done; e = $f.e; err = $f.err; f = $f.f; n = $f.n; o = $f.o; off = $f.off; $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);
done = [done];
o = [o];
n = 0;
err = $ifaceNil;
f = this;
$r = f.file.l.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(f.file.l, "Unlock"), []]);
_tuple = syscall.Seek(f.file.fd, new $Int64(0, 0), 1);
curoffset = _tuple[0];
e = _tuple[1];
if (!($interfaceIsEqual(e, $ifaceNil))) {
_tmp = 0;
_tmp$1 = e;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
$deferred.push([syscall.Seek, [f.file.fd, curoffset, 0]]);
o[0] = new syscall.Overlapped.ptr(0, 0, ((off.$low >>> 0)), (($shiftRightInt64(off, 32).$low >>> 0)), 0);
done[0] = 0;
e = syscall.WriteFile(f.file.fd, b, (done.$ptr || (done.$ptr = new ptrType$5(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, done))), o[0]);
if (!($interfaceIsEqual(e, $ifaceNil))) {
_tmp$2 = 0;
_tmp$3 = e;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
}
_tmp$4 = ((done[0] >> 0));
_tmp$5 = $ifaceNil;
n = _tmp$4;
err = _tmp$5;
$s = -1; return [n, err];
/* */ } 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: File.ptr.prototype.pwrite }; } $f.$ptr = $ptr; $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.curoffset = curoffset; $f.done = done; $f.e = e; $f.err = err; $f.f = f; $f.n = n; $f.o = o; $f.off = off; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
File.prototype.pwrite = function(b, off) { return this.$val.pwrite(b, off); };
File.ptr.prototype.seek = function(offset, whence) {
var $ptr, _tuple, err, f, offset, ret, whence, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _tuple = $f._tuple; err = $f.err; f = $f.f; offset = $f.offset; ret = $f.ret; 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);
ret = new $Int64(0, 0);
err = $ifaceNil;
f = this;
$r = f.file.l.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(f.file.l, "Unlock"), []]);
_tuple = syscall.Seek(f.file.fd, offset, whence);
ret = _tuple[0];
err = _tuple[1];
$s = -1; return [ret, err];
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [ret, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: File.ptr.prototype.seek }; } $f.$ptr = $ptr; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.offset = offset; $f.ret = ret; $f.whence = whence; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
File.prototype.seek = function(offset, whence) { return this.$val.seek(offset, whence); };
Remove = function(name) {
var $ptr, _tuple, _tuple$1, a, e, e1, e2, name, p;
_tuple = syscall.UTF16PtrFromString(fixLongPath(name));
p = _tuple[0];
e = _tuple[1];
if (!($interfaceIsEqual(e, $ifaceNil))) {
return new PathError.ptr("remove", name, e);
}
e = syscall.DeleteFile(p);
if ($interfaceIsEqual(e, $ifaceNil)) {
return $ifaceNil;
}
e1 = syscall.RemoveDirectory(p);
if ($interfaceIsEqual(e1, $ifaceNil)) {
return $ifaceNil;
}
if (!($interfaceIsEqual(e1, e))) {
_tuple$1 = syscall.GetFileAttributes(p);
a = _tuple$1[0];
e2 = _tuple$1[1];
if (!($interfaceIsEqual(e2, $ifaceNil))) {
e = e2;
} else {
if (!((((a & 16) >>> 0) === 0))) {
e = e1;
} else if (!((((a & 1) >>> 0) === 0))) {
e1 = syscall.SetFileAttributes(p, (a & ~1) >>> 0);
if ($interfaceIsEqual(e1, $ifaceNil)) {
e = syscall.DeleteFile(p);
if ($interfaceIsEqual(e, $ifaceNil)) {
return $ifaceNil;
}
}
}
}
}
return new PathError.ptr("remove", name, e);
};
$pkg.Remove = Remove;
TempDir = function() {
var $ptr, _tuple, b, n, x;
n = 260;
while (true) {
b = $makeSlice(sliceType$2, n);
_tuple = syscall.GetTempPath(((b.$length >>> 0)), $indexPtr(b.$array, b.$offset + 0, ptrType$14));
n = _tuple[0];
if (n > ((b.$length >>> 0))) {
continue;
}
if (n > 0 && ((x = n - 1 >>> 0, ((x < 0 || x >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x])) === 92)) {
n = n - (1) >>> 0;
}
return ($runesToString(utf16.Decode($subslice(b, 0, n))));
}
};
$pkg.TempDir = TempDir;
IsPathSeparator = function(c) {
var $ptr, c;
return (c === 92) || (c === 47);
};
$pkg.IsPathSeparator = IsPathSeparator;
basename = function(name) {
var $ptr, i, name;
if ((name.length === 2) && (name.charCodeAt(1) === 58)) {
name = ".";
} else if (name.length > 2 && (name.charCodeAt(1) === 58)) {
name = $substring(name, 2);
}
i = name.length - 1 >> 0;
while (true) {
if (!(i > 0 && ((name.charCodeAt(i) === 47) || (name.charCodeAt(i) === 92)))) { break; }
name = $substring(name, 0, i);
i = i - (1) >> 0;
}
i = i - (1) >> 0;
while (true) {
if (!(i >= 0)) { break; }
if ((name.charCodeAt(i) === 47) || (name.charCodeAt(i) === 92)) {
name = $substring(name, (i + 1 >> 0));
break;
}
i = i - (1) >> 0;
}
return name;
};
isAbs = function(path) {
var $ptr, b, path, v;
b = false;
v = volumeName(path);
if (v === "") {
b = false;
return b;
}
path = $substring(path, v.length);
if (path === "") {
b = false;
return b;
}
b = IsPathSeparator(path.charCodeAt(0));
return b;
};
volumeName = function(path) {
var $ptr, c, l, n, path, v;
v = "";
if (path.length < 2) {
v = "";
return v;
}
c = path.charCodeAt(0);
if ((path.charCodeAt(1) === 58) && (48 <= c && c <= 57 || 97 <= c && c <= 122 || 65 <= c && c <= 90)) {
v = $substring(path, 0, 2);
return v;
}
l = path.length;
if (l >= 5 && IsPathSeparator(path.charCodeAt(0)) && IsPathSeparator(path.charCodeAt(1)) && !IsPathSeparator(path.charCodeAt(2)) && !((path.charCodeAt(2) === 46))) {
n = 3;
while (true) {
if (!(n < (l - 1 >> 0))) { break; }
if (IsPathSeparator(path.charCodeAt(n))) {
n = n + (1) >> 0;
if (!IsPathSeparator(path.charCodeAt(n))) {
if (path.charCodeAt(n) === 46) {
break;
}
while (true) {
if (!(n < l)) { break; }
if (IsPathSeparator(path.charCodeAt(n))) {
break;
}
n = n + (1) >> 0;
}
v = $substring(path, 0, n);
return v;
}
break;
}
n = n + (1) >> 0;
}
}
v = "";
return v;
};
fixLongPath = function(path) {
var $ptr, _tmp, _tmp$1, n, path, pathbuf, r, w;
if (path.length < 248) {
return path;
}
if (path.length >= 2 && $substring(path, 0, 2) === "\\\\") {
return path;
}
if (!isAbs(path)) {
return path;
}
pathbuf = $makeSlice(sliceType$3, ((3 + path.length >> 0) + 1 >> 0));
$copyString(pathbuf, "\\\\?");
n = path.length;
_tmp = 0;
_tmp$1 = 3;
r = _tmp;
w = _tmp$1;
while (true) {
if (!(r < n)) { break; }
if (IsPathSeparator(path.charCodeAt(r))) {
r = r + (1) >> 0;
} else if ((path.charCodeAt(r) === 46) && (((r + 1 >> 0) === n) || IsPathSeparator(path.charCodeAt((r + 1 >> 0))))) {
r = r + (1) >> 0;
} else if ((r + 1 >> 0) < n && (path.charCodeAt(r) === 46) && (path.charCodeAt((r + 1 >> 0)) === 46) && (((r + 2 >> 0) === n) || IsPathSeparator(path.charCodeAt((r + 2 >> 0))))) {
return path;
} else {
((w < 0 || w >= pathbuf.$length) ? ($throwRuntimeError("index out of range"), undefined) : pathbuf.$array[pathbuf.$offset + w] = 92);
w = w + (1) >> 0;
while (true) {
if (!(r < n && !IsPathSeparator(path.charCodeAt(r)))) { break; }
((w < 0 || w >= pathbuf.$length) ? ($throwRuntimeError("index out of range"), undefined) : pathbuf.$array[pathbuf.$offset + w] = path.charCodeAt(r));
w = w + (1) >> 0;
r = r + (1) >> 0;
}
}
}
if (w === 6) {
((w < 0 || w >= pathbuf.$length) ? ($throwRuntimeError("index out of range"), undefined) : pathbuf.$array[pathbuf.$offset + w] = 92);
w = w + (1) >> 0;
}
return ($bytesToString($subslice(pathbuf, 0, w)));
};
init$2 = function() {
var $ptr;
if (true) {
return;
}
$pkg.Args = runtime_args();
};
Exit = function(code) {
var $ptr, code;
if (code === 0) {
runtime_beforeExit();
}
syscall.Exit(code);
};
$pkg.Exit = Exit;
File.ptr.prototype.Stat = function() {
var $ptr, _r, _tuple, d, err, file$1, ft, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; d = $f.d; err = $f.err; file$1 = $f.file$1; ft = $f.ft; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
d = [d];
file$1 = this;
if (file$1 === ptrType.nil) {
$s = -1; return [$ifaceNil, $pkg.ErrInvalid];
}
if (file$1 === ptrType.nil || file$1.file.fd < 0) {
$s = -1; return [$ifaceNil, new syscall.Errno(536870951)];
}
/* */ if (file$1.file.isdir()) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (file$1.file.isdir()) { */ case 1:
_r = Stat(file$1.file.dirinfo.path); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 2:
if (file$1.file.name === "NUL") {
$s = -1; return [devNullStat, $ifaceNil];
}
_tuple = syscall.GetFileType(file$1.file.fd);
ft = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [$ifaceNil, new PathError.ptr("GetFileType", file$1.file.name, err)];
}
if (ft === 3) {
$s = -1; return [new fileStat.ptr(basename(file$1.file.name), new syscall.Win32FileAttributeData.ptr(0, new syscall.Filetime.ptr(0, 0), new syscall.Filetime.ptr(0, 0), new syscall.Filetime.ptr(0, 0), 0, 0), true, new sync.Mutex.ptr(0, 0), "", 0, 0, 0), $ifaceNil];
}
d[0] = new syscall.ByHandleFileInformation.ptr(0, new syscall.Filetime.ptr(0, 0), new syscall.Filetime.ptr(0, 0), new syscall.Filetime.ptr(0, 0), 0, 0, 0, 0, 0, 0);
err = syscall.GetFileInformationByHandle(file$1.file.fd, d[0]);
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [$ifaceNil, new PathError.ptr("GetFileInformationByHandle", file$1.file.name, err)];
}
$s = -1; return [new fileStat.ptr(basename(file$1.file.name), new syscall.Win32FileAttributeData.ptr(d[0].FileAttributes, $clone(d[0].CreationTime, syscall.Filetime), $clone(d[0].LastAccessTime, syscall.Filetime), $clone(d[0].LastWriteTime, syscall.Filetime), d[0].FileSizeHigh, d[0].FileSizeLow), false, new sync.Mutex.ptr(0, 0), "", d[0].VolumeSerialNumber, d[0].FileIndexHigh, d[0].FileIndexLow), $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Stat }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.d = d; $f.err = err; $f.file$1 = file$1; $f.ft = ft; $f.$s = $s; $f.$r = $r; return $f;
};
File.prototype.Stat = function() { return this.$val.Stat(); };
Stat = function(name) {
var $ptr, _r, _tuple, _tuple$1, err, fi, i, name, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; fi = $f.fi; i = $f.i; name = $f.name; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
fi = $ifaceNil;
err = $ifaceNil;
i = 0;
/* while (true) { */ case 1:
/* if (!(i < 255)) { break; } */ if(!(i < 255)) { $s = 2; continue; }
_tuple = Lstat(name);
fi = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [fi, err];
}
_r = fi.Mode(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (((_r & 134217728) >>> 0) === 0) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (((_r & 134217728) >>> 0) === 0) { */ case 3:
$s = -1; return [fi, $ifaceNil];
/* } */ case 4:
_tuple$1 = Readlink(name);
name = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [fi, err];
}
i = i + (1) >> 0;
/* } */ $s = 1; continue; case 2:
$s = -1; return [$ifaceNil, new PathError.ptr("Stat", name, new syscall.Errno(536870969))];
/* */ } return; } if ($f === undefined) { $f = { $blk: Stat }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.fi = fi; $f.i = i; $f.name = name; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Stat = Stat;
Lstat = function(name) {
var $ptr, _tuple, _tuple$1, _tuple$2, e, e2, fd, fs, h, name, namep;
if (name.length === 0) {
return [$ifaceNil, new PathError.ptr("Lstat", name, new syscall.Errno(3))];
}
if (name === "NUL") {
return [devNullStat, $ifaceNil];
}
fs = new fileStat.ptr(basename(name), new syscall.Win32FileAttributeData.ptr(0, new syscall.Filetime.ptr(0, 0), new syscall.Filetime.ptr(0, 0), new syscall.Filetime.ptr(0, 0), 0, 0), false, new sync.Mutex.ptr(0, 0), "", 0, 0, 0);
_tuple = syscall.UTF16PtrFromString(fixLongPath(name));
namep = _tuple[0];
e = _tuple[1];
if (!($interfaceIsEqual(e, $ifaceNil))) {
return [$ifaceNil, new PathError.ptr("Lstat", name, e)];
}
e = syscall.GetFileAttributesEx(namep, 0, ((fs.sys)));
if (!($interfaceIsEqual(e, $ifaceNil))) {
if (!($interfaceIsEqual(e, new syscall.Errno(32)))) {
return [$ifaceNil, new PathError.ptr("GetFileAttributesEx", name, e)];
}
fd = new syscall.Win32finddata.ptr(0, new syscall.Filetime.ptr(0, 0), new syscall.Filetime.ptr(0, 0), new syscall.Filetime.ptr(0, 0), 0, 0, 0, 0, arrayType$2.zero(), arrayType$3.zero());
_tuple$1 = syscall.FindFirstFile(namep, fd);
h = _tuple$1[0];
e2 = _tuple$1[1];
if (!($interfaceIsEqual(e2, $ifaceNil))) {
return [$ifaceNil, new PathError.ptr("FindFirstFile", name, e)];
}
syscall.FindClose(h);
fs.sys.FileAttributes = fd.FileAttributes;
syscall.Filetime.copy(fs.sys.CreationTime, fd.CreationTime);
syscall.Filetime.copy(fs.sys.LastAccessTime, fd.LastAccessTime);
syscall.Filetime.copy(fs.sys.LastWriteTime, fd.LastWriteTime);
fs.sys.FileSizeHigh = fd.FileSizeHigh;
fs.sys.FileSizeLow = fd.FileSizeLow;
}
fs.path = name;
if (!isAbs(fs.path)) {
_tuple$2 = syscall.FullPath(fs.path);
fs.path = _tuple$2[0];
e = _tuple$2[1];
if (!($interfaceIsEqual(e, $ifaceNil))) {
return [$ifaceNil, e];
}
}
return [fs, $ifaceNil];
};
$pkg.Lstat = Lstat;
FileMode.prototype.String = function() {
var $ptr, _i, _i$1, _ref, _ref$1, _rune, _rune$1, buf, c, c$1, i, i$1, m, w, y, y$1;
m = this.$val;
buf = arrayType$6.zero();
w = 0;
_ref = "dalTLDpSugct";
_i = 0;
while (true) {
if (!(_i < _ref.length)) { break; }
_rune = $decodeRune(_ref, _i);
i = _i;
c = _rune[0];
if (!((((m & (((y = (((31 - i >> 0) >>> 0)), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0) === 0))) {
((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = ((c << 24 >>> 24)));
w = w + (1) >> 0;
}
_i += _rune[1];
}
if (w === 0) {
((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 45);
w = w + (1) >> 0;
}
_ref$1 = "rwxrwxrwx";
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.length)) { break; }
_rune$1 = $decodeRune(_ref$1, _i$1);
i$1 = _i$1;
c$1 = _rune$1[0];
if (!((((m & (((y$1 = (((8 - i$1 >> 0) >>> 0)), y$1 < 32 ? (1 << y$1) : 0) >>> 0))) >>> 0) === 0))) {
((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = ((c$1 << 24 >>> 24)));
} else {
((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 45);
}
w = w + (1) >> 0;
_i$1 += _rune$1[1];
}
return ($bytesToString($subslice(new sliceType$3(buf), 0, w)));
};
$ptrType(FileMode).prototype.String = function() { return new FileMode(this.$get()).String(); };
FileMode.prototype.IsDir = function() {
var $ptr, m;
m = this.$val;
return !((((m & 2147483648) >>> 0) === 0));
};
$ptrType(FileMode).prototype.IsDir = function() { return new FileMode(this.$get()).IsDir(); };
FileMode.prototype.IsRegular = function() {
var $ptr, m;
m = this.$val;
return ((m & 2399141888) >>> 0) === 0;
};
$ptrType(FileMode).prototype.IsRegular = function() { return new FileMode(this.$get()).IsRegular(); };
FileMode.prototype.Perm = function() {
var $ptr, m;
m = this.$val;
return (m & 511) >>> 0;
};
$ptrType(FileMode).prototype.Perm = function() { return new FileMode(this.$get()).Perm(); };
fileStat.ptr.prototype.Name = function() {
var $ptr, fs;
fs = this;
return fs.name;
};
fileStat.prototype.Name = function() { return this.$val.Name(); };
fileStat.ptr.prototype.IsDir = function() {
var $ptr, fs;
fs = this;
return new FileMode(fs.Mode()).IsDir();
};
fileStat.prototype.IsDir = function() { return this.$val.IsDir(); };
fileStat.ptr.prototype.Size = function() {
var $ptr, fs, x, x$1;
fs = this;
return (x = $shiftLeft64((new $Int64(0, fs.sys.FileSizeHigh)), 32), x$1 = (new $Int64(0, fs.sys.FileSizeLow)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
};
fileStat.prototype.Size = function() { return this.$val.Size(); };
fileStat.ptr.prototype.Mode = function() {
var $ptr, fs, m;
m = 0;
fs = this;
if (fs === devNullStat) {
m = 69206454;
return m;
}
if (!((((fs.sys.FileAttributes & 16) >>> 0) === 0))) {
m = (m | (2147483721)) >>> 0;
}
if (!((((fs.sys.FileAttributes & 1) >>> 0) === 0))) {
m = (m | (292)) >>> 0;
} else {
m = (m | (438)) >>> 0;
}
if (!((((fs.sys.FileAttributes & 1024) >>> 0) === 0))) {
m = (m | (134217728)) >>> 0;
}
if (fs.pipe) {
m = (m | (33554432)) >>> 0;
}
m = m;
return m;
};
fileStat.prototype.Mode = function() { return this.$val.Mode(); };
fileStat.ptr.prototype.ModTime = function() {
var $ptr, fs;
fs = this;
return time.Unix(new $Int64(0, 0), fs.sys.LastWriteTime.Nanoseconds());
};
fileStat.prototype.ModTime = function() { return this.$val.ModTime(); };
fileStat.ptr.prototype.Sys = function() {
var $ptr, fs;
fs = this;
return fs.sys;
};
fileStat.prototype.Sys = function() { return this.$val.Sys(); };
ptrType$1.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
ptrType$3.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
ptrType$2.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
ptrType$13.methods = [{prop: "isdir", name: "isdir", pkg: "os", typ: $funcType([], [$Bool], false)}, {prop: "close", name: "close", pkg: "os", typ: $funcType([], [$error], false)}];
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$3], [$Int, $error], false)}, {prop: "ReadAt", name: "ReadAt", pkg: "", typ: $funcType([sliceType$3, $Int64], [$Int, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "WriteAt", name: "WriteAt", pkg: "", typ: $funcType([sliceType$3, $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: "Chdir", name: "Chdir", pkg: "", typ: $funcType([], [$error], false)}, {prop: "checkValid", name: "checkValid", pkg: "os", typ: $funcType([$String], [$error], false)}, {prop: "Chmod", name: "Chmod", pkg: "", 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: "Fd", name: "Fd", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "readConsole", name: "readConsole", pkg: "os", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "read", name: "read", pkg: "os", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "pread", name: "pread", pkg: "os", typ: $funcType([sliceType$3, $Int64], [$Int, $error], false)}, {prop: "writeConsole", name: "writeConsole", pkg: "os", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "write", name: "write", pkg: "os", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "pwrite", name: "pwrite", pkg: "os", typ: $funcType([sliceType$3, $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)}];
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)}];
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)}, {prop: "loadFileId", name: "loadFileId", pkg: "os", typ: $funcType([], [$error], false)}];
PathError.init("", [{prop: "Op", name: "Op", exported: true, typ: $String, tag: ""}, {prop: "Path", name: "Path", exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", exported: true, typ: $error, tag: ""}]);
SyscallError.init("", [{prop: "Syscall", name: "Syscall", exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", exported: true, typ: $error, tag: ""}]);
LinkError.init("", [{prop: "Op", name: "Op", exported: true, typ: $String, tag: ""}, {prop: "Old", name: "Old", exported: true, typ: $String, tag: ""}, {prop: "New", name: "New", exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", exported: true, typ: $error, tag: ""}]);
file.init("os", [{prop: "fd", name: "fd", exported: false, typ: syscall.Handle, tag: ""}, {prop: "name", name: "name", exported: false, typ: $String, tag: ""}, {prop: "dirinfo", name: "dirinfo", exported: false, typ: ptrType$12, tag: ""}, {prop: "l", name: "l", exported: false, typ: sync.Mutex, tag: ""}, {prop: "isConsole", name: "isConsole", exported: false, typ: $Bool, tag: ""}, {prop: "lastbits", name: "lastbits", exported: false, typ: sliceType$3, tag: ""}, {prop: "readuint16", name: "readuint16", exported: false, typ: sliceType$2, tag: ""}, {prop: "readbyte", name: "readbyte", exported: false, typ: sliceType$3, tag: ""}, {prop: "readbyteOffset", name: "readbyteOffset", exported: false, typ: $Int, tag: ""}]);
dirInfo.init("os", [{prop: "data", name: "data", exported: false, typ: syscall.Win32finddata, tag: ""}, {prop: "needdata", name: "needdata", exported: false, typ: $Bool, tag: ""}, {prop: "path", name: "path", exported: false, typ: $String, tag: ""}, {prop: "isempty", name: "isempty", exported: false, typ: $Bool, tag: ""}]);
File.init("os", [{prop: "file", name: "", exported: false, typ: ptrType$13, tag: ""}]);
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)}]);
fileStat.init("os", [{prop: "name", name: "name", exported: false, typ: $String, tag: ""}, {prop: "sys", name: "sys", exported: false, typ: syscall.Win32FileAttributeData, tag: ""}, {prop: "pipe", name: "pipe", exported: false, typ: $Bool, tag: ""}, {prop: "Mutex", name: "", exported: true, typ: sync.Mutex, tag: ""}, {prop: "path", name: "path", exported: false, typ: $String, tag: ""}, {prop: "vol", name: "vol", exported: false, typ: $Uint32, tag: ""}, {prop: "idxhi", name: "idxhi", exported: false, typ: $Uint32, tag: ""}, {prop: "idxlo", name: "idxlo", exported: false, typ: $Uint32, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = windows.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = runtime.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sync.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = atomic.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = syscall.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = time.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = utf16.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = utf8.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$pkg.Args = sliceType.nil;
$pkg.ErrInvalid = errors.New("invalid argument");
$pkg.ErrPermission = errors.New("permission denied");
$pkg.ErrExist = errors.New("file already exists");
$pkg.ErrNotExist = errors.New("file does not exist");
$pkg.ErrClosed = errors.New("file already closed");
readConsole = syscall.ReadConsole;
$pkg.Stdin = NewFile(((syscall.Stdin >>> 0)), "/dev/stdin");
$pkg.Stdout = NewFile(((syscall.Stdout >>> 0)), "/dev/stdout");
$pkg.Stderr = NewFile(((syscall.Stderr >>> 0)), "/dev/stderr");
devNullStat = new fileStat.ptr("NUL", new syscall.Win32FileAttributeData.ptr(0, new syscall.Filetime.ptr(0, 0), new syscall.Filetime.ptr(0, 0), new syscall.Filetime.ptr(0, 0), 0, 0), false, new sync.Mutex.ptr(0, 0), "", 0, 0, 0);
init();
init$1();
init$2();
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["reflect"] = (function() {
var $pkg = {}, $init, errors, js, math, runtime, strconv, sync, 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, mapType$1, structType$1, sliceType$5, ptrType$3, funcType$1, sliceType$6, ptrType$4, ptrType$5, sliceType$7, sliceType$8, ptrType$6, ptrType$7, structType$8, sliceType$9, sliceType$10, sliceType$11, sliceType$12, arrayType$1, sliceType$13, ptrType$8, ptrType$9, sliceType$14, sliceType$15, ptrType$10, sliceType$16, ptrType$16, sliceType$18, ptrType$17, funcType$3, funcType$4, funcType$5, 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, New, convertOp, makeFloat, makeComplex, makeString, makeBytes, makeRunes, cvtInt, cvtUint, cvtFloatInt, cvtFloatUint, cvtIntFloat, cvtUintFloat, cvtFloat, cvtComplex, cvtIntString, cvtUintString, cvtBytesString, cvtStringBytes, cvtRunesString, cvtStringRunes, cvtT2I, cvtI2I;
errors = $packages["errors"];
js = $packages["github.com/gopherjs/gopherjs/js"];
math = $packages["math"];
runtime = $packages["runtime"];
strconv = $packages["strconv"];
sync = $packages["sync"];
uncommonType = $pkg.uncommonType = $newType(0, $kindStruct, "reflect.uncommonType", true, "reflect", false, function(pkgPath_, mcount_, _$2_, moff_, _$4_, _methods_) {
this.$val = this;
if (arguments.length === 0) {
this.pkgPath = 0;
this.mcount = 0;
this._$2 = 0;
this.moff = 0;
this._$4 = 0;
this._methods = sliceType$3.nil;
return;
}
this.pkgPath = pkgPath_;
this.mcount = mcount_;
this._$2 = _$2_;
this.moff = moff_;
this._$4 = _$4_;
this._methods = _methods_;
});
funcType = $pkg.funcType = $newType(0, $kindStruct, "reflect.funcType", true, "reflect", false, function(rtype_, inCount_, outCount_, _in_, _out_) {
this.$val = this;
if (arguments.length === 0) {
this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$4.nil, ptrType$5.nil, 0, 0);
this.inCount = 0;
this.outCount = 0;
this._in = sliceType$2.nil;
this._out = sliceType$2.nil;
return;
}
this.rtype = rtype_;
this.inCount = inCount_;
this.outCount = outCount_;
this._in = _in_;
this._out = _out_;
});
name = $pkg.name = $newType(0, $kindStruct, "reflect.name", true, "reflect", false, function(bytes_) {
this.$val = this;
if (arguments.length === 0) {
this.bytes = ptrType$5.nil;
return;
}
this.bytes = bytes_;
});
nameData = $pkg.nameData = $newType(0, $kindStruct, "reflect.nameData", true, "reflect", false, function(name_, tag_, pkgPath_, exported_) {
this.$val = this;
if (arguments.length === 0) {
this.name = "";
this.tag = "";
this.pkgPath = "";
this.exported = false;
return;
}
this.name = name_;
this.tag = tag_;
this.pkgPath = pkgPath_;
this.exported = exported_;
});
mapIter = $pkg.mapIter = $newType(0, $kindStruct, "reflect.mapIter", true, "reflect", false, function(t_, m_, keys_, i_) {
this.$val = this;
if (arguments.length === 0) {
this.t = $ifaceNil;
this.m = null;
this.keys = null;
this.i = 0;
return;
}
this.t = t_;
this.m = m_;
this.keys = keys_;
this.i = i_;
});
Type = $pkg.Type = $newType(8, $kindInterface, "reflect.Type", true, "reflect", true, null);
Kind = $pkg.Kind = $newType(4, $kindUint, "reflect.Kind", true, "reflect", true, null);
tflag = $pkg.tflag = $newType(1, $kindUint8, "reflect.tflag", true, "reflect", false, null);
rtype = $pkg.rtype = $newType(0, $kindStruct, "reflect.rtype", true, "reflect", false, function(size_, ptrdata_, hash_, tflag_, align_, fieldAlign_, kind_, alg_, gcdata_, str_, ptrToThis_) {
this.$val = this;
if (arguments.length === 0) {
this.size = 0;
this.ptrdata = 0;
this.hash = 0;
this.tflag = 0;
this.align = 0;
this.fieldAlign = 0;
this.kind = 0;
this.alg = ptrType$4.nil;
this.gcdata = ptrType$5.nil;
this.str = 0;
this.ptrToThis = 0;
return;
}
this.size = size_;
this.ptrdata = ptrdata_;
this.hash = hash_;
this.tflag = tflag_;
this.align = align_;
this.fieldAlign = fieldAlign_;
this.kind = kind_;
this.alg = alg_;
this.gcdata = gcdata_;
this.str = str_;
this.ptrToThis = ptrToThis_;
});
typeAlg = $pkg.typeAlg = $newType(0, $kindStruct, "reflect.typeAlg", true, "reflect", false, function(hash_, equal_) {
this.$val = this;
if (arguments.length === 0) {
this.hash = $throwNilPointerError;
this.equal = $throwNilPointerError;
return;
}
this.hash = hash_;
this.equal = equal_;
});
method = $pkg.method = $newType(0, $kindStruct, "reflect.method", true, "reflect", false, function(name_, mtyp_, ifn_, tfn_) {
this.$val = this;
if (arguments.length === 0) {
this.name = 0;
this.mtyp = 0;
this.ifn = 0;
this.tfn = 0;
return;
}
this.name = name_;
this.mtyp = mtyp_;
this.ifn = ifn_;
this.tfn = tfn_;
});
ChanDir = $pkg.ChanDir = $newType(4, $kindInt, "reflect.ChanDir", true, "reflect", true, null);
arrayType = $pkg.arrayType = $newType(0, $kindStruct, "reflect.arrayType", true, "reflect", false, function(rtype_, elem_, slice_, len_) {
this.$val = this;
if (arguments.length === 0) {
this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$4.nil, ptrType$5.nil, 0, 0);
this.elem = ptrType$1.nil;
this.slice = ptrType$1.nil;
this.len = 0;
return;
}
this.rtype = rtype_;
this.elem = elem_;
this.slice = slice_;
this.len = len_;
});
chanType = $pkg.chanType = $newType(0, $kindStruct, "reflect.chanType", true, "reflect", false, function(rtype_, elem_, dir_) {
this.$val = this;
if (arguments.length === 0) {
this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$4.nil, ptrType$5.nil, 0, 0);
this.elem = ptrType$1.nil;
this.dir = 0;
return;
}
this.rtype = rtype_;
this.elem = elem_;
this.dir = dir_;
});
imethod = $pkg.imethod = $newType(0, $kindStruct, "reflect.imethod", true, "reflect", false, function(name_, typ_) {
this.$val = this;
if (arguments.length === 0) {
this.name = 0;
this.typ = 0;
return;
}
this.name = name_;
this.typ = typ_;
});
interfaceType = $pkg.interfaceType = $newType(0, $kindStruct, "reflect.interfaceType", true, "reflect", false, function(rtype_, pkgPath_, methods_) {
this.$val = this;
if (arguments.length === 0) {
this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$4.nil, ptrType$5.nil, 0, 0);
this.pkgPath = new name.ptr(ptrType$5.nil);
this.methods = sliceType$7.nil;
return;
}
this.rtype = rtype_;
this.pkgPath = pkgPath_;
this.methods = methods_;
});
mapType = $pkg.mapType = $newType(0, $kindStruct, "reflect.mapType", true, "reflect", false, function(rtype_, key_, elem_, bucket_, hmap_, keysize_, indirectkey_, valuesize_, indirectvalue_, bucketsize_, reflexivekey_, needkeyupdate_) {
this.$val = this;
if (arguments.length === 0) {
this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$4.nil, ptrType$5.nil, 0, 0);
this.key = ptrType$1.nil;
this.elem = ptrType$1.nil;
this.bucket = ptrType$1.nil;
this.hmap = ptrType$1.nil;
this.keysize = 0;
this.indirectkey = 0;
this.valuesize = 0;
this.indirectvalue = 0;
this.bucketsize = 0;
this.reflexivekey = false;
this.needkeyupdate = false;
return;
}
this.rtype = rtype_;
this.key = key_;
this.elem = elem_;
this.bucket = bucket_;
this.hmap = hmap_;
this.keysize = keysize_;
this.indirectkey = indirectkey_;
this.valuesize = valuesize_;
this.indirectvalue = indirectvalue_;
this.bucketsize = bucketsize_;
this.reflexivekey = reflexivekey_;
this.needkeyupdate = needkeyupdate_;
});
ptrType = $pkg.ptrType = $newType(0, $kindStruct, "reflect.ptrType", true, "reflect", false, function(rtype_, elem_) {
this.$val = this;
if (arguments.length === 0) {
this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$4.nil, ptrType$5.nil, 0, 0);
this.elem = ptrType$1.nil;
return;
}
this.rtype = rtype_;
this.elem = elem_;
});
sliceType = $pkg.sliceType = $newType(0, $kindStruct, "reflect.sliceType", true, "reflect", false, function(rtype_, elem_) {
this.$val = this;
if (arguments.length === 0) {
this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$4.nil, ptrType$5.nil, 0, 0);
this.elem = ptrType$1.nil;
return;
}
this.rtype = rtype_;
this.elem = elem_;
});
structField = $pkg.structField = $newType(0, $kindStruct, "reflect.structField", true, "reflect", false, function(name_, typ_, offset_) {
this.$val = this;
if (arguments.length === 0) {
this.name = new name.ptr(ptrType$5.nil);
this.typ = ptrType$1.nil;
this.offset = 0;
return;
}
this.name = name_;
this.typ = typ_;
this.offset = offset_;
});
structType = $pkg.structType = $newType(0, $kindStruct, "reflect.structType", true, "reflect", false, function(rtype_, pkgPath_, fields_) {
this.$val = this;
if (arguments.length === 0) {
this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$4.nil, ptrType$5.nil, 0, 0);
this.pkgPath = new name.ptr(ptrType$5.nil);
this.fields = sliceType$8.nil;
return;
}
this.rtype = rtype_;
this.pkgPath = pkgPath_;
this.fields = fields_;
});
Method = $pkg.Method = $newType(0, $kindStruct, "reflect.Method", true, "reflect", true, function(Name_, PkgPath_, Type_, Func_, Index_) {
this.$val = this;
if (arguments.length === 0) {
this.Name = "";
this.PkgPath = "";
this.Type = $ifaceNil;
this.Func = new Value.ptr(ptrType$1.nil, 0, 0);
this.Index = 0;
return;
}
this.Name = Name_;
this.PkgPath = PkgPath_;
this.Type = Type_;
this.Func = Func_;
this.Index = Index_;
});
nameOff = $pkg.nameOff = $newType(4, $kindInt32, "reflect.nameOff", true, "reflect", false, null);
typeOff = $pkg.typeOff = $newType(4, $kindInt32, "reflect.typeOff", true, "reflect", false, null);
textOff = $pkg.textOff = $newType(4, $kindInt32, "reflect.textOff", true, "reflect", false, null);
StructField = $pkg.StructField = $newType(0, $kindStruct, "reflect.StructField", true, "reflect", true, function(Name_, PkgPath_, Type_, Tag_, Offset_, Index_, Anonymous_) {
this.$val = this;
if (arguments.length === 0) {
this.Name = "";
this.PkgPath = "";
this.Type = $ifaceNil;
this.Tag = "";
this.Offset = 0;
this.Index = sliceType$14.nil;
this.Anonymous = false;
return;
}
this.Name = Name_;
this.PkgPath = PkgPath_;
this.Type = Type_;
this.Tag = Tag_;
this.Offset = Offset_;
this.Index = Index_;
this.Anonymous = Anonymous_;
});
StructTag = $pkg.StructTag = $newType(8, $kindString, "reflect.StructTag", true, "reflect", true, null);
fieldScan = $pkg.fieldScan = $newType(0, $kindStruct, "reflect.fieldScan", true, "reflect", false, function(typ_, index_) {
this.$val = this;
if (arguments.length === 0) {
this.typ = ptrType$10.nil;
this.index = sliceType$14.nil;
return;
}
this.typ = typ_;
this.index = index_;
});
Value = $pkg.Value = $newType(0, $kindStruct, "reflect.Value", true, "reflect", true, function(typ_, ptr_, flag_) {
this.$val = this;
if (arguments.length === 0) {
this.typ = ptrType$1.nil;
this.ptr = 0;
this.flag = 0;
return;
}
this.typ = typ_;
this.ptr = ptr_;
this.flag = flag_;
});
flag = $pkg.flag = $newType(4, $kindUintptr, "reflect.flag", true, "reflect", false, null);
ValueError = $pkg.ValueError = $newType(0, $kindStruct, "reflect.ValueError", true, "reflect", true, function(Method_, Kind_) {
this.$val = this;
if (arguments.length === 0) {
this.Method = "";
this.Kind = 0;
return;
}
this.Method = Method_;
this.Kind = Kind_;
});
sliceType$1 = $sliceType(name);
ptrType$1 = $ptrType(rtype);
sliceType$2 = $sliceType(ptrType$1);
sliceType$3 = $sliceType(method);
mapType$1 = $mapType(ptrType$1, sliceType$3);
structType$1 = $structType("reflect", [{prop: "RWMutex", name: "", exported: true, typ: sync.RWMutex, tag: ""}, {prop: "m", name: "m", exported: false, typ: mapType$1, tag: ""}]);
sliceType$5 = $sliceType($emptyInterface);
ptrType$3 = $ptrType(js.Object);
funcType$1 = $funcType([sliceType$5], [ptrType$3], true);
sliceType$6 = $sliceType($String);
ptrType$4 = $ptrType(typeAlg);
ptrType$5 = $ptrType($Uint8);
sliceType$7 = $sliceType(imethod);
sliceType$8 = $sliceType(structField);
ptrType$6 = $ptrType(uncommonType);
ptrType$7 = $ptrType(nameData);
structType$8 = $structType("reflect", [{prop: "str", name: "str", exported: false, typ: $String, tag: ""}]);
sliceType$9 = $sliceType(ptrType$3);
sliceType$10 = $sliceType(Value);
sliceType$11 = $sliceType(Type);
sliceType$12 = $sliceType(sliceType$9);
arrayType$1 = $arrayType($UnsafePointer, 2);
sliceType$13 = $sliceType(arrayType$1);
ptrType$8 = $ptrType(interfaceType);
ptrType$9 = $ptrType(imethod);
sliceType$14 = $sliceType($Int);
sliceType$15 = $sliceType(fieldScan);
ptrType$10 = $ptrType(structType);
sliceType$16 = $sliceType($Uint8);
ptrType$16 = $ptrType($UnsafePointer);
sliceType$18 = $sliceType($Int32);
ptrType$17 = $ptrType(funcType);
funcType$3 = $funcType([$String], [$Bool], false);
funcType$4 = $funcType([$UnsafePointer, $Uintptr], [$Uintptr], false);
funcType$5 = $funcType([$UnsafePointer, $UnsafePointer], [$Bool], false);
arrayType$12 = $arrayType($Uintptr, 2);
ptrType$18 = $ptrType(ValueError);
init = function() {
var $ptr, 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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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:
used = (function(i) {
var $ptr, i;
});
$r = used((x = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$4.nil, ptrType$5.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; }
$r = used((x$1 = new uncommonType.ptr(0, 0, 0, 0, 0, sliceType$3.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; }
$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; }
$r = used((x$3 = new arrayType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$4.nil, ptrType$5.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; }
$r = used((x$4 = new chanType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$4.nil, ptrType$5.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; }
$r = used((x$5 = new funcType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$4.nil, ptrType$5.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; }
$r = used((x$6 = new interfaceType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$4.nil, ptrType$5.nil, 0, 0), new name.ptr(ptrType$5.nil), sliceType$7.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; }
$r = used((x$7 = new mapType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$4.nil, ptrType$5.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; }
$r = used((x$8 = new ptrType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$4.nil, ptrType$5.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; }
$r = used((x$9 = new sliceType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$4.nil, ptrType$5.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; }
$r = used((x$10 = new structType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$4.nil, ptrType$5.nil, 0, 0), new name.ptr(ptrType$5.nil), sliceType$8.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; }
$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; }
$r = used((x$12 = new structField.ptr(new name.ptr(ptrType$5.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; }
initialized = true;
uint8Type = $assertType(TypeOf(new $Uint8(0)), ptrType$1);
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: init }; } $f.$ptr = $ptr; $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;
};
jsType = function(typ) {
var $ptr, typ;
return typ.jsType;
};
reflectType = function(typ) {
var $ptr, _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, out, outCount, params, reflectFields, reflectMethods, results, rt, typ, ut;
if (typ.reflectType === undefined) {
rt = new rtype.ptr(((($parseInt(typ.size) >> 0) >>> 0)), 0, 0, 0, 0, 0, ((($parseInt(typ.kind) >> 0) << 24 >>> 24)), ptrType$4.nil, ptrType$5.nil, newNameOff($clone(newName(internalStr(typ.string), "", "", !!(typ.exported)), name)), 0);
rt.jsType = typ;
typ.reflectType = rt;
methodSet = $methodSet(typ);
if (!(($parseInt(methodSet.length) === 0)) || !!(typ.named)) {
rt.tflag = (rt.tflag | (1)) >>> 0;
if (!!(typ.named)) {
rt.tflag = (rt.tflag | (4)) >>> 0;
}
reflectMethods = $makeSlice(sliceType$3, $parseInt(methodSet.length));
_ref = reflectMethods;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
m = methodSet[i];
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));
_i++;
}
ut = new uncommonType.ptr(newNameOff($clone(newName(internalStr(typ.pkg), "", "", false), name)), (($parseInt(methodSet.length) << 16 >>> 16)), 0, 0, 0, reflectMethods);
_key = rt; (uncommonTypeMap || $throwRuntimeError("assignment to entry in nil map"))[ptrType$1.keyFor(_key)] = { k: _key, v: ut };
ut.jsType = typ;
}
_1 = rt.Kind();
if (_1 === (17)) {
setKindType(rt, new arrayType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$4.nil, ptrType$5.nil, 0, 0), reflectType(typ.elem), ptrType$1.nil, ((($parseInt(typ.len) >> 0) >>> 0))));
} else if (_1 === (18)) {
dir = 3;
if (!!(typ.sendOnly)) {
dir = 2;
}
if (!!(typ.recvOnly)) {
dir = 1;
}
setKindType(rt, new chanType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$4.nil, ptrType$5.nil, 0, 0), reflectType(typ.elem), ((dir >>> 0))));
} else if (_1 === (19)) {
params = typ.params;
in$1 = $makeSlice(sliceType$2, $parseInt(params.length));
_ref$1 = in$1;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
i$1 = _i$1;
((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]));
_i$1++;
}
results = typ.results;
out = $makeSlice(sliceType$2, $parseInt(results.length));
_ref$2 = out;
_i$2 = 0;
while (true) {
if (!(_i$2 < _ref$2.$length)) { break; }
i$2 = _i$2;
((i$2 < 0 || i$2 >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i$2] = reflectType(results[i$2]));
_i$2++;
}
outCount = (($parseInt(results.length) << 16 >>> 16));
if (!!(typ.variadic)) {
outCount = (outCount | (32768)) >>> 0;
}
setKindType(rt, new funcType.ptr($clone(rt, rtype), (($parseInt(params.length) << 16 >>> 16)), outCount, in$1, out));
} else if (_1 === (20)) {
methods = typ.methods;
imethods = $makeSlice(sliceType$7, $parseInt(methods.length));
_ref$3 = imethods;
_i$3 = 0;
while (true) {
if (!(_i$3 < _ref$3.$length)) { break; }
i$3 = _i$3;
m$1 = methods[i$3];
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))));
_i$3++;
}
setKindType(rt, new interfaceType.ptr($clone(rt, rtype), new name.ptr(ptrType$5.nil), imethods));
} else if (_1 === (21)) {
setKindType(rt, new mapType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$4.nil, ptrType$5.nil, 0, 0), reflectType(typ.key), reflectType(typ.elem), ptrType$1.nil, ptrType$1.nil, 0, 0, 0, 0, 0, false, false));
} else if (_1 === (22)) {
setKindType(rt, new ptrType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$4.nil, ptrType$5.nil, 0, 0), reflectType(typ.elem)));
} else if (_1 === (23)) {
setKindType(rt, new sliceType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$4.nil, ptrType$5.nil, 0, 0), reflectType(typ.elem)));
} else if (_1 === (25)) {
fields = typ.fields;
reflectFields = $makeSlice(sliceType$8, $parseInt(fields.length));
_ref$4 = reflectFields;
_i$4 = 0;
while (true) {
if (!(_i$4 < _ref$4.$length)) { break; }
i$4 = _i$4;
f = fields[i$4];
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), ((i$4 >>> 0))));
_i$4++;
}
setKindType(rt, new structType.ptr($clone(rt, rtype), $clone(newName(internalStr(typ.pkgPath), "", "", false), name), reflectFields));
}
}
return ((typ.reflectType));
};
setKindType = function(rt, kindType) {
var $ptr, kindType, rt;
rt.kindType = kindType;
kindType.rtype = rt;
};
uncommonType.ptr.prototype.methods = function() {
var $ptr, t;
t = this;
return t._methods;
};
uncommonType.prototype.methods = function() { return this.$val.methods(); };
rtype.ptr.prototype.uncommon = function() {
var $ptr, _entry, t;
t = this;
return (_entry = uncommonTypeMap[ptrType$1.keyFor(t)], _entry !== undefined ? _entry.v : ptrType$6.nil);
};
rtype.prototype.uncommon = function() { return this.$val.uncommon(); };
funcType.ptr.prototype.in$ = function() {
var $ptr, t;
t = this;
return t._in;
};
funcType.prototype.in$ = function() { return this.$val.in$(); };
funcType.ptr.prototype.out = function() {
var $ptr, t;
t = this;
return t._out;
};
funcType.prototype.out = function() { return this.$val.out(); };
name.ptr.prototype.name = function() {
var $ptr, _entry, n, s;
s = "";
n = this;
s = (_entry = nameMap[ptrType$5.keyFor(n.bytes)], _entry !== undefined ? _entry.v : ptrType$7.nil).name;
return s;
};
name.prototype.name = function() { return this.$val.name(); };
name.ptr.prototype.tag = function() {
var $ptr, _entry, n, s;
s = "";
n = this;
s = (_entry = nameMap[ptrType$5.keyFor(n.bytes)], _entry !== undefined ? _entry.v : ptrType$7.nil).tag;
return s;
};
name.prototype.tag = function() { return this.$val.tag(); };
name.ptr.prototype.pkgPath = function() {
var $ptr, _entry, n;
n = this;
return (_entry = nameMap[ptrType$5.keyFor(n.bytes)], _entry !== undefined ? _entry.v : ptrType$7.nil).pkgPath;
};
name.prototype.pkgPath = function() { return this.$val.pkgPath(); };
name.ptr.prototype.isExported = function() {
var $ptr, _entry, n;
n = this;
return (_entry = nameMap[ptrType$5.keyFor(n.bytes)], _entry !== undefined ? _entry.v : ptrType$7.nil).exported;
};
name.prototype.isExported = function() { return this.$val.isExported(); };
newName = function(n, tag, pkgPath, exported) {
var $ptr, _key, b, exported, n, pkgPath, tag;
b = $newDataPointer(0, ptrType$5);
_key = b; (nameMap || $throwRuntimeError("assignment to entry in nil map"))[ptrType$5.keyFor(_key)] = { k: _key, v: new nameData.ptr(n, tag, pkgPath, exported) };
return new name.ptr(b);
};
rtype.ptr.prototype.nameOff = function(off) {
var $ptr, off, t, x;
t = this;
return (x = ((off >> 0)), ((x < 0 || x >= nameOffList.$length) ? ($throwRuntimeError("index out of range"), undefined) : nameOffList.$array[nameOffList.$offset + x]));
};
rtype.prototype.nameOff = function(off) { return this.$val.nameOff(off); };
newNameOff = function(n) {
var $ptr, i, n;
i = nameOffList.$length;
nameOffList = $append(nameOffList, n);
return ((i >> 0));
};
rtype.ptr.prototype.typeOff = function(off) {
var $ptr, off, t, x;
t = this;
return (x = ((off >> 0)), ((x < 0 || x >= typeOffList.$length) ? ($throwRuntimeError("index out of range"), undefined) : typeOffList.$array[typeOffList.$offset + x]));
};
rtype.prototype.typeOff = function(off) { return this.$val.typeOff(off); };
newTypeOff = function(t) {
var $ptr, i, t;
i = typeOffList.$length;
typeOffList = $append(typeOffList, t);
return ((i >> 0));
};
internalStr = function(strObj) {
var $ptr, c, strObj;
c = new structType$8.ptr("");
c.str = strObj;
return c.str;
};
isWrapped = function(typ) {
var $ptr, typ;
return !!(jsType(typ).wrapped);
};
copyStruct = function(dst, src, typ) {
var $ptr, dst, fields, i, prop, src, typ;
fields = jsType(typ).fields;
i = 0;
while (true) {
if (!(i < $parseInt(fields.length))) { break; }
prop = $internalize(fields[i].prop, $String);
dst[$externalize(prop, $String)] = src[$externalize(prop, $String)];
i = i + (1) >> 0;
}
};
makeValue = function(t, v, fl) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _v, _v$1, fl, rt, t, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
rt = _r;
_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; }
if (_r$1 === 17) { _v$1 = true; $s = 5; continue s; }
_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; }
_v$1 = _r$2 === 25; case 5:
if (_v$1) { _v = true; $s = 4; continue s; }
_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; }
_v = _r$3 === 22; case 4:
/* */ if (_v) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (_v) { */ case 2:
_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; }
$s = -1; return new Value.ptr(rt, (v), (fl | ((_r$4 >>> 0))) >>> 0);
/* } */ case 3:
_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; }
$s = -1; return new Value.ptr(rt, ($newDataPointer(v, jsType(rt.ptrTo()))), (((fl | ((_r$5 >>> 0))) >>> 0) | 128) >>> 0);
/* */ } return; } if ($f === undefined) { $f = { $blk: makeValue }; } $f.$ptr = $ptr; $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;
};
MakeSlice = function(typ, len, cap) {
var $ptr, _r, _r$1, cap, len, typ, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
typ = [typ];
_r = typ[0].Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (!((_r === 23))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!((_r === 23))) { */ case 1:
$panic(new $String("reflect.MakeSlice of non-slice type"));
/* } */ case 2:
if (len < 0) {
$panic(new $String("reflect.MakeSlice: negative len"));
}
if (cap < 0) {
$panic(new $String("reflect.MakeSlice: negative cap"));
}
if (len > cap) {
$panic(new $String("reflect.MakeSlice: len > cap"));
}
_r$1 = makeValue(typ[0], $makeSlice(jsType(typ[0]), len, cap, (function(typ) { return function $b() {
var $ptr, _r$1, _r$2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$1 = $f._r$1; _r$2 = $f._r$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_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; }
_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; }
$s = -1; return _r$2.zero();
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.$s = $s; $f.$r = $r; return $f;
}; })(typ)), 0); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: MakeSlice }; } $f.$ptr = $ptr; $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;
};
$pkg.MakeSlice = MakeSlice;
TypeOf = function(i) {
var $ptr, i;
if (!initialized) {
return new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$4.nil, ptrType$5.nil, 0, 0);
}
if ($interfaceIsEqual(i, $ifaceNil)) {
return $ifaceNil;
}
return reflectType(i.constructor);
};
$pkg.TypeOf = TypeOf;
ValueOf = function(i) {
var $ptr, _r, i, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; i = $f.i; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
if ($interfaceIsEqual(i, $ifaceNil)) {
$s = -1; return new Value.ptr(ptrType$1.nil, 0, 0);
}
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: ValueOf }; } $f.$ptr = $ptr; $f._r = _r; $f.i = i; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.ValueOf = ValueOf;
FuncOf = function(in$1, out, variadic) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
if (!(variadic)) { _v = false; $s = 3; continue s; }
if (in$1.$length === 0) { _v$1 = true; $s = 4; continue s; }
_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; }
_v$1 = !((_r === 23)); case 4:
_v = _v$1; case 3:
/* */ if (_v) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (_v) { */ case 1:
$panic(new $String("reflect.FuncOf: last arg of variadic func must be slice"));
/* } */ case 2:
jsIn = $makeSlice(sliceType$9, in$1.$length);
_ref = in$1;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
((i < 0 || i >= jsIn.$length) ? ($throwRuntimeError("index out of range"), undefined) : jsIn.$array[jsIn.$offset + i] = jsType(v));
_i++;
}
jsOut = $makeSlice(sliceType$9, out.$length);
_ref$1 = out;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
i$1 = _i$1;
v$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
((i$1 < 0 || i$1 >= jsOut.$length) ? ($throwRuntimeError("index out of range"), undefined) : jsOut.$array[jsOut.$offset + i$1] = jsType(v$1));
_i$1++;
}
$s = -1; return reflectType($funcType($externalize(jsIn, sliceType$9), $externalize(jsOut, sliceType$9), $externalize(variadic, $Bool)));
/* */ } return; } if ($f === undefined) { $f = { $blk: FuncOf }; } $f.$ptr = $ptr; $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;
};
$pkg.FuncOf = FuncOf;
rtype.ptr.prototype.ptrTo = function() {
var $ptr, t;
t = this;
return reflectType($ptrType(jsType(t)));
};
rtype.prototype.ptrTo = function() { return this.$val.ptrTo(); };
SliceOf = function(t) {
var $ptr, t;
return reflectType($sliceType(jsType(t)));
};
$pkg.SliceOf = SliceOf;
Zero = function(typ) {
var $ptr, _r, typ, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; typ = $f.typ; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Zero }; } $f.$ptr = $ptr; $f._r = _r; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Zero = Zero;
unsafe_New = function(typ) {
var $ptr, _1, typ;
_1 = typ.Kind();
if (_1 === (25)) {
return (new (jsType(typ).ptr)());
} else if (_1 === (17)) {
return (jsType(typ).zero());
} else {
return ($newDataPointer(jsType(typ).zero(), jsType(typ.ptrTo())));
}
};
makeInt = function(f, bits, t) {
var $ptr, _1, _r, bits, f, ptr, t, typ, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
typ = _r;
ptr = unsafe_New(typ);
_1 = typ.Kind();
if (_1 === (3)) {
(ptr).$set(((bits.$low << 24 >> 24)));
} else if (_1 === (4)) {
(ptr).$set(((bits.$low << 16 >> 16)));
} else if ((_1 === (2)) || (_1 === (5))) {
(ptr).$set(((bits.$low >> 0)));
} else if (_1 === (6)) {
(ptr).$set((new $Int64(bits.$high, bits.$low)));
} else if (_1 === (8)) {
(ptr).$set(((bits.$low << 24 >>> 24)));
} else if (_1 === (9)) {
(ptr).$set(((bits.$low << 16 >>> 16)));
} else if ((_1 === (7)) || (_1 === (10)) || (_1 === (12))) {
(ptr).$set(((bits.$low >>> 0)));
} else if (_1 === (11)) {
(ptr).$set((bits));
}
$s = -1; return new Value.ptr(typ, ptr, (((f | 128) >>> 0) | ((typ.Kind() >>> 0))) >>> 0);
/* */ } return; } if ($f === undefined) { $f = { $blk: makeInt }; } $f.$ptr = $ptr; $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;
};
typedmemmove = function(t, dst, src) {
var $ptr, dst, src, t;
dst.$set(src.$get());
};
makemap = function(t) {
var $ptr, m, t;
m = 0;
m = (new ($global.Object)());
return m;
};
keyFor = function(t, key) {
var $ptr, k, key, kv, t;
kv = key;
if (!(kv.$get === undefined)) {
kv = kv.$get();
}
k = $internalize(jsType(t.Key()).keyFor(kv), $String);
return [kv, k];
};
mapaccess = function(t, m, key) {
var $ptr, _tuple, entry, k, key, m, t;
_tuple = keyFor(t, key);
k = _tuple[1];
entry = m[$externalize(k, $String)];
if (entry === undefined) {
return 0;
}
return ($newDataPointer(entry.v, jsType(PtrTo(t.Elem()))));
};
mapassign = function(t, m, key, val) {
var $ptr, _r, _tuple, entry, et, jsVal, k, key, kv, m, newVal, t, val, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_tuple = keyFor(t, key);
kv = _tuple[0];
k = _tuple[1];
jsVal = val.$get();
et = t.Elem();
_r = et.Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (_r === 25) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (_r === 25) { */ case 1:
newVal = jsType(et).zero();
copyStruct(newVal, jsVal, et);
jsVal = newVal;
/* } */ case 2:
entry = new ($global.Object)();
entry.k = kv;
entry.v = jsVal;
m[$externalize(k, $String)] = entry;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: mapassign }; } $f.$ptr = $ptr; $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;
};
mapdelete = function(t, m, key) {
var $ptr, _tuple, k, key, m, t;
_tuple = keyFor(t, key);
k = _tuple[1];
delete m[$externalize(k, $String)];
};
mapiterinit = function(t, m) {
var $ptr, m, t;
return ((new mapIter.ptr(t, m, $keys(m), 0)));
};
mapiterkey = function(it) {
var $ptr, _r, _r$1, _r$2, it, iter, k, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
iter = ((it));
k = iter.keys[iter.i];
_r = iter.t.Key(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_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; }
_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; }
$s = -1; return ($newDataPointer(iter.m[$externalize($internalize(k, $String), $String)].k, _r$2));
/* */ } return; } if ($f === undefined) { $f = { $blk: mapiterkey }; } $f.$ptr = $ptr; $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;
};
mapiternext = function(it) {
var $ptr, it, iter;
iter = ((it));
iter.i = iter.i + (1) >> 0;
};
maplen = function(m) {
var $ptr, m;
return $parseInt($keys(m).length);
};
cvtDirect = function(v, typ) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
srcVal = $clone(v, Value).object();
/* */ if (srcVal === jsType(v.typ).nil) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (srcVal === jsType(v.typ).nil) { */ case 1:
_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; }
$s = -1; return _r;
/* } */ case 2:
val = null;
_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; }
k = _r$1;
_1 = k;
/* */ if (_1 === (23)) { $s = 6; continue; }
/* */ if (_1 === (22)) { $s = 7; continue; }
/* */ if (_1 === (25)) { $s = 8; continue; }
/* */ if ((_1 === (17)) || (_1 === (1)) || (_1 === (18)) || (_1 === (19)) || (_1 === (20)) || (_1 === (21)) || (_1 === (24))) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (_1 === (23)) { */ case 6:
slice = new (jsType(typ))(srcVal.$array);
slice.$offset = srcVal.$offset;
slice.$length = srcVal.$length;
slice.$capacity = srcVal.$capacity;
val = $newDataPointer(slice, jsType(PtrTo(typ)));
$s = 11; continue;
/* } else if (_1 === (22)) { */ case 7:
_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; }
_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; }
/* */ if (_r$3 === 25) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (_r$3 === 25) { */ case 12:
_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; }
/* */ if ($interfaceIsEqual(_r$4, v.typ.Elem())) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if ($interfaceIsEqual(_r$4, v.typ.Elem())) { */ case 16:
val = srcVal;
/* break; */ $s = 4; continue;
/* } */ case 17:
val = new (jsType(typ))();
_arg = val;
_arg$1 = srcVal;
_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; }
_arg$2 = _r$5;
$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; }
/* break; */ $s = 4; continue;
/* } */ case 13:
val = new (jsType(typ))(srcVal.$get, srcVal.$set);
$s = 11; continue;
/* } else if (_1 === (25)) { */ case 8:
val = new (jsType(typ).ptr)();
copyStruct(val, srcVal, typ);
$s = 11; continue;
/* } else if ((_1 === (17)) || (_1 === (1)) || (_1 === (18)) || (_1 === (19)) || (_1 === (20)) || (_1 === (21)) || (_1 === (24))) { */ case 9:
val = v.ptr;
$s = 11; continue;
/* } else { */ case 10:
$panic(new ValueError.ptr("reflect.Convert", k));
/* } */ case 11:
case 4:
_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; }
_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; }
$s = -1; return new Value.ptr(_r$6, (val), (((v.flag & 224) >>> 0) | ((_r$7 >>> 0))) >>> 0);
/* */ } return; } if ($f === undefined) { $f = { $blk: cvtDirect }; } $f.$ptr = $ptr; $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;
};
Copy = function(dst, src) {
var $ptr, dk, dst, dstVal, sk, src, srcVal, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; dk = $f.dk; dst = $f.dst; dstVal = $f.dstVal; sk = $f.sk; src = $f.src; srcVal = $f.srcVal; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
dk = new flag(dst.flag).kind();
if (!((dk === 17)) && !((dk === 23))) {
$panic(new ValueError.ptr("reflect.Copy", dk));
}
if (dk === 17) {
new flag(dst.flag).mustBeAssignable();
}
new flag(dst.flag).mustBeExported();
sk = new flag(src.flag).kind();
if (!((sk === 17)) && !((sk === 23))) {
$panic(new ValueError.ptr("reflect.Copy", sk));
}
new flag(src.flag).mustBeExported();
$r = typesMustMatch("reflect.Copy", dst.typ.Elem(), src.typ.Elem()); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
dstVal = $clone(dst, Value).object();
if (dk === 17) {
dstVal = new (jsType(SliceOf(dst.typ.Elem())))(dstVal);
}
srcVal = $clone(src, Value).object();
if (sk === 17) {
srcVal = new (jsType(SliceOf(src.typ.Elem())))(srcVal);
}
$s = -1; return $parseInt($copySlice(dstVal, srcVal)) >> 0;
/* */ } return; } if ($f === undefined) { $f = { $blk: Copy }; } $f.$ptr = $ptr; $f.dk = dk; $f.dst = dst; $f.dstVal = dstVal; $f.sk = sk; $f.src = src; $f.srcVal = srcVal; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Copy = Copy;
methodReceiver = function(op, v, i) {
var $ptr, _$38, fn, i, m, m$1, op, prop, rcvr, t, tt, ut, v, x, x$1;
_$38 = ptrType$1.nil;
t = ptrType$1.nil;
fn = 0;
prop = "";
if (v.typ.Kind() === 20) {
tt = (v.typ.kindType);
if (i < 0 || i >= tt.methods.$length) {
$panic(new $String("reflect: internal error: invalid method index"));
}
m = (x = tt.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
if (!$clone(tt.rtype.nameOff(m.name), name).isExported()) {
$panic(new $String("reflect: " + op + " of unexported method"));
}
t = tt.rtype.typeOff(m.typ);
prop = $clone(tt.rtype.nameOff(m.name), name).name();
} else {
ut = v.typ.uncommon();
if (ut === ptrType$6.nil || ((i >>> 0)) >= ((ut.mcount >>> 0))) {
$panic(new $String("reflect: internal error: invalid method index"));
}
m$1 = $clone((x$1 = ut.methods(), ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])), method);
if (!$clone(v.typ.nameOff(m$1.name), name).isExported()) {
$panic(new $String("reflect: " + op + " of unexported method"));
}
t = v.typ.typeOff(m$1.mtyp);
prop = $internalize($methodSet(jsType(v.typ))[i].prop, $String);
}
rcvr = $clone(v, Value).object();
if (isWrapped(v.typ)) {
rcvr = new (jsType(v.typ))(rcvr);
}
fn = (rcvr[$externalize(prop, $String)]);
return [_$38, t, fn];
};
valueInterface = function(v, safe) {
var $ptr, _r, safe, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; safe = $f.safe; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
if (v.flag === 0) {
$panic(new ValueError.ptr("reflect.Value.Interface", 0));
}
if (safe && !((((v.flag & 96) >>> 0) === 0))) {
$panic(new $String("reflect.Value.Interface: cannot return value obtained from unexported field or method"));
}
/* */ if (!((((v.flag & 512) >>> 0) === 0))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!((((v.flag & 512) >>> 0) === 0))) { */ case 1:
_r = makeMethodValue("Interface", $clone(v, Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
v = _r;
/* } */ case 2:
if (isWrapped(v.typ)) {
$s = -1; return ((new (jsType(v.typ))($clone(v, Value).object())));
}
$s = -1; return (($clone(v, Value).object()));
/* */ } return; } if ($f === undefined) { $f = { $blk: valueInterface }; } $f.$ptr = $ptr; $f._r = _r; $f.safe = safe; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
ifaceE2I = function(t, src, dst) {
var $ptr, dst, src, t;
dst.$set(src);
};
methodName = function() {
var $ptr;
return "?FIXME?";
};
makeMethodValue = function(op, v) {
var $ptr, _r, _tuple, fn, fv, op, rcvr, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
fn = [fn];
rcvr = [rcvr];
if (((v.flag & 512) >>> 0) === 0) {
$panic(new $String("reflect: internal error: invalid use of makePartialFunc"));
}
_tuple = methodReceiver(op, $clone(v, Value), ((v.flag >> 0)) >> 10 >> 0);
fn[0] = _tuple[2];
rcvr[0] = $clone(v, Value).object();
if (isWrapped(v.typ)) {
rcvr[0] = new (jsType(v.typ))(rcvr[0]);
}
fv = js.MakeFunc((function(fn, rcvr) { return function(this$1, arguments$1) {
var $ptr, arguments$1, this$1;
return new $jsObjectPtr(fn[0].apply(rcvr[0], $externalize(arguments$1, sliceType$9)));
}; })(fn, rcvr));
_r = $clone(v, Value).Type().common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return new Value.ptr(_r, (fv), (((v.flag & 96) >>> 0) | 19) >>> 0);
/* */ } return; } if ($f === undefined) { $f = { $blk: makeMethodValue }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
rtype.ptr.prototype.pointers = function() {
var $ptr, _1, t;
t = this;
_1 = t.Kind();
if ((_1 === (22)) || (_1 === (21)) || (_1 === (18)) || (_1 === (19)) || (_1 === (25)) || (_1 === (17))) {
return true;
} else {
return false;
}
};
rtype.prototype.pointers = function() { return this.$val.pointers(); };
rtype.ptr.prototype.Comparable = function() {
var $ptr, _1, _r, _r$1, _r$2, i, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; i = $f.i; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
_1 = t.Kind();
/* */ if ((_1 === (19)) || (_1 === (23)) || (_1 === (21))) { $s = 2; continue; }
/* */ if (_1 === (17)) { $s = 3; continue; }
/* */ if (_1 === (25)) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if ((_1 === (19)) || (_1 === (23)) || (_1 === (21))) { */ case 2:
$s = -1; return false;
/* } else if (_1 === (17)) { */ case 3:
_r = t.Elem().Comparable(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } else if (_1 === (25)) { */ case 4:
i = 0;
/* while (true) { */ case 7:
/* if (!(i < t.NumField())) { break; } */ if(!(i < t.NumField())) { $s = 8; continue; }
_r$1 = t.Field(i); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$2 = _r$1.Type.Comparable(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
/* */ if (!_r$2) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (!_r$2) { */ case 9:
$s = -1; return false;
/* } */ case 10:
i = i + (1) >> 0;
/* } */ $s = 7; continue; case 8:
/* } */ case 5:
case 1:
$s = -1; return true;
/* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.Comparable }; } $f.$ptr = $ptr; $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.i = i; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
rtype.prototype.Comparable = function() { return this.$val.Comparable(); };
rtype.ptr.prototype.Method = function(i) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
prop = [prop];
m = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$1.nil, 0, 0), 0);
t = this;
if (t.Kind() === 20) {
tt = (t.kindType);
Method.copy(m, tt.Method(i));
$s = -1; return m;
}
_r = t.exportedMethods(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
methods = _r;
if (i < 0 || i >= methods.$length) {
$panic(new $String("reflect: Method index out of range"));
}
p = $clone(((i < 0 || i >= methods.$length) ? ($throwRuntimeError("index out of range"), undefined) : methods.$array[methods.$offset + i]), method);
pname = $clone(t.nameOff(p.name), name);
m.Name = $clone(pname, name).name();
fl = 19;
mtyp = t.typeOff(p.mtyp);
ft = (mtyp.kindType);
in$1 = $makeSlice(sliceType$11, 0, (1 + ft.in$().$length >> 0));
in$1 = $append(in$1, t);
_ref = ft.in$();
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
in$1 = $append(in$1, arg);
_i++;
}
out = $makeSlice(sliceType$11, 0, ft.out().$length);
_ref$1 = ft.out();
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
ret = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
out = $append(out, ret);
_i$1++;
}
_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; }
mt = _r$1;
m.Type = mt;
prop[0] = $internalize($methodSet(t.jsType)[i].prop, $String);
fn = js.MakeFunc((function(prop) { return function(this$1, arguments$1) {
var $ptr, arguments$1, rcvr, this$1;
rcvr = (0 >= arguments$1.$length ? ($throwRuntimeError("index out of range"), undefined) : arguments$1.$array[arguments$1.$offset + 0]);
return new $jsObjectPtr(rcvr[$externalize(prop[0], $String)].apply(rcvr, $externalize($subslice(arguments$1, 1), sliceType$9)));
}; })(prop));
m.Func = new Value.ptr($assertType(mt, ptrType$1), (fn), fl);
m.Index = i;
Method.copy(m, m);
$s = -1; return m;
/* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.Method }; } $f.$ptr = $ptr; $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;
};
rtype.prototype.Method = function(i) { return this.$val.Method(i); };
Value.ptr.prototype.object = function() {
var $ptr, _1, newVal, v, val;
v = this;
if ((v.typ.Kind() === 17) || (v.typ.Kind() === 25)) {
return v.ptr;
}
if (!((((v.flag & 128) >>> 0) === 0))) {
val = v.ptr.$get();
if (!(val === $ifaceNil) && !(val.constructor === jsType(v.typ))) {
switch (0) { default:
_1 = v.typ.Kind();
if ((_1 === (11)) || (_1 === (6))) {
val = new (jsType(v.typ))(val.$high, val.$low);
} else if ((_1 === (15)) || (_1 === (16))) {
val = new (jsType(v.typ))(val.$real, val.$imag);
} else if (_1 === (23)) {
if (val === val.constructor.nil) {
val = jsType(v.typ).nil;
break;
}
newVal = new (jsType(v.typ))(val.$array);
newVal.$offset = val.$offset;
newVal.$length = val.$length;
newVal.$capacity = val.$capacity;
val = newVal;
}
}
}
return val;
}
return v.ptr;
};
Value.prototype.object = function() { return this.$val.object(); };
Value.ptr.prototype.call = function(op, in$1) {
var $ptr, _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$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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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$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:
v = this;
t = ptrType$1.nil;
fn = 0;
rcvr = null;
if (!((((v.flag & 512) >>> 0) === 0))) {
_tuple = methodReceiver(op, $clone(v, Value), ((v.flag >> 0)) >> 10 >> 0);
t = _tuple[1];
fn = _tuple[2];
rcvr = $clone(v, Value).object();
if (isWrapped(v.typ)) {
rcvr = new (jsType(v.typ))(rcvr);
}
} else {
t = v.typ;
fn = ($clone(v, Value).object());
rcvr = undefined;
}
if (fn === 0) {
$panic(new $String("reflect.Value.Call: call of nil function"));
}
isSlice = op === "CallSlice";
n = t.NumIn();
if (isSlice) {
if (!t.IsVariadic()) {
$panic(new $String("reflect: CallSlice of non-variadic function"));
}
if (in$1.$length < n) {
$panic(new $String("reflect: CallSlice with too few input arguments"));
}
if (in$1.$length > n) {
$panic(new $String("reflect: CallSlice with too many input arguments"));
}
} else {
if (t.IsVariadic()) {
n = n - (1) >> 0;
}
if (in$1.$length < n) {
$panic(new $String("reflect: Call with too few input arguments"));
}
if (!t.IsVariadic() && in$1.$length > n) {
$panic(new $String("reflect: Call with too many input arguments"));
}
}
_ref = in$1;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if ($clone(x, Value).Kind() === 0) {
$panic(new $String("reflect: " + op + " using zero Value argument"));
}
_i++;
}
i = 0;
/* while (true) { */ case 1:
/* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 2; continue; }
_tmp = $clone(((i < 0 || i >= in$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + i]), Value).Type();
_tmp$1 = t.In(i);
xt = _tmp;
targ = _tmp$1;
_r = xt.AssignableTo(targ); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (!_r) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!_r) { */ case 3:
_r$1 = xt.String(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$2 = targ.String(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$panic(new $String("reflect: " + op + " using " + _r$1 + " as type " + _r$2));
/* } */ case 4:
i = i + (1) >> 0;
/* } */ $s = 1; continue; case 2:
/* */ if (!isSlice && t.IsVariadic()) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (!isSlice && t.IsVariadic()) { */ case 8:
m = in$1.$length - n >> 0;
_r$3 = MakeSlice(t.In(n), m, m); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
slice = _r$3;
_r$4 = t.In(n).Elem(); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
elem = _r$4;
i$1 = 0;
/* while (true) { */ case 12:
/* if (!(i$1 < m)) { break; } */ if(!(i$1 < m)) { $s = 13; continue; }
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]));
xt$1 = $clone(x$2, Value).Type();
_r$5 = xt$1.AssignableTo(elem); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
/* */ if (!_r$5) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if (!_r$5) { */ case 14:
_r$6 = xt$1.String(); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_r$7 = elem.String(); /* */ $s = 18; case 18: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
$panic(new $String("reflect: cannot use " + _r$6 + " as type " + _r$7 + " in " + op));
/* } */ case 15:
_r$8 = $clone(slice, Value).Index(i$1); /* */ $s = 19; case 19: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
$r = $clone(_r$8, Value).Set($clone(x$2, Value)); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
i$1 = i$1 + (1) >> 0;
/* } */ $s = 12; continue; case 13:
origIn = in$1;
in$1 = $makeSlice(sliceType$10, (n + 1 >> 0));
$copySlice($subslice(in$1, 0, n), origIn);
((n < 0 || n >= in$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + n] = slice);
/* } */ case 9:
nin = in$1.$length;
if (!((nin === t.NumIn()))) {
$panic(new $String("reflect.Value.Call: wrong argument count"));
}
nout = t.NumOut();
argsArray = new ($global.Array)(t.NumIn());
_ref$1 = in$1;
_i$1 = 0;
/* while (true) { */ case 21:
/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 22; continue; }
i$2 = _i$1;
arg = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
_arg = t.In(i$2);
_r$9 = t.In(i$2).common(); /* */ $s = 23; case 23: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
_arg$1 = _r$9;
_arg$2 = 0;
_r$10 = $clone(arg, Value).assignTo("reflect.Value.Call", _arg$1, _arg$2); /* */ $s = 24; case 24: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
_r$11 = $clone(_r$10, Value).object(); /* */ $s = 25; case 25: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
_arg$3 = _r$11;
_r$12 = unwrapJsObject(_arg, _arg$3); /* */ $s = 26; case 26: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
argsArray[i$2] = _r$12;
_i$1++;
/* } */ $s = 21; continue; case 22:
_r$13 = callHelper(new sliceType$5([new $jsObjectPtr(fn), new $jsObjectPtr(rcvr), new $jsObjectPtr(argsArray)])); /* */ $s = 27; case 27: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
results = _r$13;
_1 = nout;
/* */ if (_1 === (0)) { $s = 29; continue; }
/* */ if (_1 === (1)) { $s = 30; continue; }
/* */ $s = 31; continue;
/* if (_1 === (0)) { */ case 29:
$s = -1; return sliceType$10.nil;
/* } else if (_1 === (1)) { */ case 30:
_r$14 = makeValue(t.Out(0), wrapJsObject(t.Out(0), results), 0); /* */ $s = 33; case 33: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
$s = -1; return new sliceType$10([$clone(_r$14, Value)]);
/* } else { */ case 31:
ret = $makeSlice(sliceType$10, nout);
_ref$2 = ret;
_i$2 = 0;
/* while (true) { */ case 34:
/* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 35; continue; }
i$3 = _i$2;
_r$15 = makeValue(t.Out(i$3), wrapJsObject(t.Out(i$3), results[i$3]), 0); /* */ $s = 36; case 36: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
((i$3 < 0 || i$3 >= ret.$length) ? ($throwRuntimeError("index out of range"), undefined) : ret.$array[ret.$offset + i$3] = _r$15);
_i$2++;
/* } */ $s = 34; continue; case 35:
$s = -1; return ret;
/* } */ case 32:
case 28:
$s = -1; return sliceType$10.nil;
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.call }; } $f.$ptr = $ptr; $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$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;
};
Value.prototype.call = function(op, in$1) { return this.$val.call(op, in$1); };
Value.ptr.prototype.Cap = function() {
var $ptr, _1, k, v;
v = this;
k = new flag(v.flag).kind();
_1 = k;
if (_1 === (17)) {
return v.typ.Len();
} else if ((_1 === (18)) || (_1 === (23))) {
return $parseInt($clone(v, Value).object().$capacity) >> 0;
}
$panic(new ValueError.ptr("reflect.Value.Cap", k));
};
Value.prototype.Cap = function() { return this.$val.Cap(); };
wrapJsObject = function(typ, val) {
var $ptr, typ, val;
if ($interfaceIsEqual(typ, jsObjectPtr)) {
return new (jsType(jsObjectPtr))(val);
}
return val;
};
unwrapJsObject = function(typ, val) {
var $ptr, typ, val;
if ($interfaceIsEqual(typ, jsObjectPtr)) {
return val.object;
}
return val;
};
Value.ptr.prototype.Elem = function() {
var $ptr, _1, _r, fl, k, tt, typ, v, val, val$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
v = this;
k = new flag(v.flag).kind();
_1 = k;
/* */ if (_1 === (20)) { $s = 2; continue; }
/* */ if (_1 === (22)) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (_1 === (20)) { */ case 2:
val = $clone(v, Value).object();
if (val === $ifaceNil) {
$s = -1; return new Value.ptr(ptrType$1.nil, 0, 0);
}
typ = reflectType(val.constructor);
_r = makeValue(typ, val.$val, (v.flag & 96) >>> 0); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } else if (_1 === (22)) { */ case 3:
if ($clone(v, Value).IsNil()) {
$s = -1; return new Value.ptr(ptrType$1.nil, 0, 0);
}
val$1 = $clone(v, Value).object();
tt = (v.typ.kindType);
fl = (((((v.flag & 96) >>> 0) | 128) >>> 0) | 256) >>> 0;
fl = (fl | (((tt.elem.Kind() >>> 0)))) >>> 0;
$s = -1; return new Value.ptr(tt.elem, (wrapJsObject(tt.elem, val$1)), fl);
/* } else { */ case 4:
$panic(new ValueError.ptr("reflect.Value.Elem", k));
/* } */ case 5:
case 1:
$s = -1; return new Value.ptr(ptrType$1.nil, 0, 0);
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Elem }; } $f.$ptr = $ptr; $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;
};
Value.prototype.Elem = function() { return this.$val.Elem(); };
Value.ptr.prototype.Field = function(i) {
var $ptr, _r, _r$1, _r$2, field, fl, i, jsTag, o, prop, s, tag, tt, typ, v, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
jsTag = [jsTag];
prop = [prop];
s = [s];
typ = [typ];
v = this;
if (!((new flag(v.flag).kind() === 25))) {
$panic(new ValueError.ptr("reflect.Value.Field", new flag(v.flag).kind()));
}
tt = (v.typ.kindType);
if (((i >>> 0)) >= ((tt.fields.$length >>> 0))) {
$panic(new $String("reflect: Field index out of range"));
}
prop[0] = $internalize(jsType(v.typ).fields[i].prop, $String);
field = (x = tt.fields, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
typ[0] = field.typ;
fl = (((v.flag & 416) >>> 0) | ((typ[0].Kind() >>> 0))) >>> 0;
if (!$clone(field.name, name).isExported()) {
if ($clone(field.name, name).name() === "") {
fl = (fl | (64)) >>> 0;
} else {
fl = (fl | (32)) >>> 0;
}
}
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();
/* */ if (!(tag === "") && !((i === 0))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(tag === "") && !((i === 0))) { */ case 1:
jsTag[0] = getJsTag(tag);
/* */ if (!(jsTag[0] === "")) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!(jsTag[0] === "")) { */ case 3:
/* while (true) { */ case 5:
o = [o];
_r = $clone(v, Value).Field(0); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
v = _r;
/* */ if (v.typ === jsObjectPtr) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (v.typ === jsObjectPtr) { */ case 8:
o[0] = $clone(v, Value).object().object;
$s = -1; return new Value.ptr(typ[0], (new (jsType(PtrTo(typ[0])))((function(jsTag, o, prop, s, typ) { return function() {
var $ptr;
return $internalize(o[0][$externalize(jsTag[0], $String)], jsType(typ[0]));
}; })(jsTag, o, prop, s, typ), (function(jsTag, o, prop, s, typ) { return function(x$2) {
var $ptr, x$2;
o[0][$externalize(jsTag[0], $String)] = $externalize(x$2, jsType(typ[0]));
}; })(jsTag, o, prop, s, typ))), fl);
/* } */ case 9:
/* */ if (v.typ.Kind() === 22) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (v.typ.Kind() === 22) { */ case 10:
_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; }
v = _r$1;
/* } */ case 11:
/* } */ $s = 5; continue; case 6:
/* } */ case 4:
/* } */ case 2:
s[0] = v.ptr;
/* */ if (!((((fl & 128) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (!((((fl & 128) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { */ case 13:
$s = -1; return new Value.ptr(typ[0], (new (jsType(PtrTo(typ[0])))((function(jsTag, prop, s, typ) { return function() {
var $ptr;
return wrapJsObject(typ[0], s[0][$externalize(prop[0], $String)]);
}; })(jsTag, prop, s, typ), (function(jsTag, prop, s, typ) { return function(x$2) {
var $ptr, x$2;
s[0][$externalize(prop[0], $String)] = unwrapJsObject(typ[0], x$2);
}; })(jsTag, prop, s, typ))), fl);
/* } */ case 14:
_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; }
$s = -1; return _r$2;
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Field }; } $f.$ptr = $ptr; $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;
};
Value.prototype.Field = function(i) { return this.$val.Field(i); };
getJsTag = function(tag) {
var $ptr, _tuple, i, name$1, qvalue, tag, value;
while (true) {
if (!(!(tag === ""))) { break; }
i = 0;
while (true) {
if (!(i < tag.length && (tag.charCodeAt(i) === 32))) { break; }
i = i + (1) >> 0;
}
tag = $substring(tag, i);
if (tag === "") {
break;
}
i = 0;
while (true) {
if (!(i < tag.length && !((tag.charCodeAt(i) === 32)) && !((tag.charCodeAt(i) === 58)) && !((tag.charCodeAt(i) === 34)))) { break; }
i = i + (1) >> 0;
}
if ((i + 1 >> 0) >= tag.length || !((tag.charCodeAt(i) === 58)) || !((tag.charCodeAt((i + 1 >> 0)) === 34))) {
break;
}
name$1 = ($substring(tag, 0, i));
tag = $substring(tag, (i + 1 >> 0));
i = 1;
while (true) {
if (!(i < tag.length && !((tag.charCodeAt(i) === 34)))) { break; }
if (tag.charCodeAt(i) === 92) {
i = i + (1) >> 0;
}
i = i + (1) >> 0;
}
if (i >= tag.length) {
break;
}
qvalue = ($substring(tag, 0, (i + 1 >> 0)));
tag = $substring(tag, (i + 1 >> 0));
if (name$1 === "js") {
_tuple = strconv.Unquote(qvalue);
value = _tuple[0];
return value;
}
}
return "";
};
Value.ptr.prototype.Index = function(i) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
a = [a];
a$1 = [a$1];
c = [c];
i = [i];
typ = [typ];
typ$1 = [typ$1];
v = this;
k = new flag(v.flag).kind();
_1 = k;
/* */ if (_1 === (17)) { $s = 2; continue; }
/* */ if (_1 === (23)) { $s = 3; continue; }
/* */ if (_1 === (24)) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (_1 === (17)) { */ case 2:
tt = (v.typ.kindType);
if (i[0] < 0 || i[0] > ((tt.len >> 0))) {
$panic(new $String("reflect: array index out of range"));
}
typ$1[0] = tt.elem;
fl = (v.flag & 480) >>> 0;
fl = (fl | (((typ$1[0].Kind() >>> 0)))) >>> 0;
a[0] = v.ptr;
/* */ if (!((((fl & 128) >>> 0) === 0)) && !((typ$1[0].Kind() === 17)) && !((typ$1[0].Kind() === 25))) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (!((((fl & 128) >>> 0) === 0)) && !((typ$1[0].Kind() === 17)) && !((typ$1[0].Kind() === 25))) { */ case 7:
$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() {
var $ptr;
return wrapJsObject(typ$1[0], a[0][i[0]]);
}; })(a, a$1, c, i, typ, typ$1), (function(a, a$1, c, i, typ, typ$1) { return function(x) {
var $ptr, x;
a[0][i[0]] = unwrapJsObject(typ$1[0], x);
}; })(a, a$1, c, i, typ, typ$1))), fl);
/* } */ case 8:
_r = makeValue(typ$1[0], wrapJsObject(typ$1[0], a[0][i[0]]), fl); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } else if (_1 === (23)) { */ case 3:
s = $clone(v, Value).object();
if (i[0] < 0 || i[0] >= ($parseInt(s.$length) >> 0)) {
$panic(new $String("reflect: slice index out of range"));
}
tt$1 = (v.typ.kindType);
typ[0] = tt$1.elem;
fl$1 = (384 | ((v.flag & 96) >>> 0)) >>> 0;
fl$1 = (fl$1 | (((typ[0].Kind() >>> 0)))) >>> 0;
i[0] = i[0] + (($parseInt(s.$offset) >> 0)) >> 0;
a$1[0] = s.$array;
/* */ if (!((((fl$1 & 128) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (!((((fl$1 & 128) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { */ case 10:
$s = -1; return new Value.ptr(typ[0], (new (jsType(PtrTo(typ[0])))((function(a, a$1, c, i, typ, typ$1) { return function() {
var $ptr;
return wrapJsObject(typ[0], a$1[0][i[0]]);
}; })(a, a$1, c, i, typ, typ$1), (function(a, a$1, c, i, typ, typ$1) { return function(x) {
var $ptr, x;
a$1[0][i[0]] = unwrapJsObject(typ[0], x);
}; })(a, a$1, c, i, typ, typ$1))), fl$1);
/* } */ case 11:
_r$1 = makeValue(typ[0], wrapJsObject(typ[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; }
$s = -1; return _r$1;
/* } else if (_1 === (24)) { */ case 4:
str = (v.ptr).$get();
if (i[0] < 0 || i[0] >= str.length) {
$panic(new $String("reflect: string index out of range"));
}
fl$2 = (((v.flag & 96) >>> 0) | 8) >>> 0;
c[0] = str.charCodeAt(i[0]);
$s = -1; return new Value.ptr(uint8Type, ((c.$ptr || (c.$ptr = new ptrType$5(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, c)))), (fl$2 | 128) >>> 0);
/* } else { */ case 5:
$panic(new ValueError.ptr("reflect.Value.Index", k));
/* } */ case 6:
case 1:
$s = -1; return new Value.ptr(ptrType$1.nil, 0, 0);
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Index }; } $f.$ptr = $ptr; $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;
};
Value.prototype.Index = function(i) { return this.$val.Index(i); };
Value.ptr.prototype.InterfaceData = function() {
var $ptr, v;
v = this;
$panic(errors.New("InterfaceData is not supported by GopherJS"));
};
Value.prototype.InterfaceData = function() { return this.$val.InterfaceData(); };
Value.ptr.prototype.IsNil = function() {
var $ptr, _1, k, v;
v = this;
k = new flag(v.flag).kind();
_1 = k;
if ((_1 === (22)) || (_1 === (23))) {
return $clone(v, Value).object() === jsType(v.typ).nil;
} else if (_1 === (18)) {
return $clone(v, Value).object() === $chanNil;
} else if (_1 === (19)) {
return $clone(v, Value).object() === $throwNilPointerError;
} else if (_1 === (21)) {
return $clone(v, Value).object() === false;
} else if (_1 === (20)) {
return $clone(v, Value).object() === $ifaceNil;
} else {
$panic(new ValueError.ptr("reflect.Value.IsNil", k));
}
};
Value.prototype.IsNil = function() { return this.$val.IsNil(); };
Value.ptr.prototype.Len = function() {
var $ptr, _1, k, v;
v = this;
k = new flag(v.flag).kind();
_1 = k;
if ((_1 === (17)) || (_1 === (24))) {
return $parseInt($clone(v, Value).object().length);
} else if (_1 === (23)) {
return $parseInt($clone(v, Value).object().$length) >> 0;
} else if (_1 === (18)) {
return $parseInt($clone(v, Value).object().$buffer.length) >> 0;
} else if (_1 === (21)) {
return $parseInt($keys($clone(v, Value).object()).length);
} else {
$panic(new ValueError.ptr("reflect.Value.Len", k));
}
};
Value.prototype.Len = function() { return this.$val.Len(); };
Value.ptr.prototype.Pointer = function() {
var $ptr, _1, k, v;
v = this;
k = new flag(v.flag).kind();
_1 = k;
if ((_1 === (18)) || (_1 === (21)) || (_1 === (22)) || (_1 === (26))) {
if ($clone(v, Value).IsNil()) {
return 0;
}
return $clone(v, Value).object();
} else if (_1 === (19)) {
if ($clone(v, Value).IsNil()) {
return 0;
}
return 1;
} else if (_1 === (23)) {
if ($clone(v, Value).IsNil()) {
return 0;
}
return $clone(v, Value).object().$array;
} else {
$panic(new ValueError.ptr("reflect.Value.Pointer", k));
}
};
Value.prototype.Pointer = function() { return this.$val.Pointer(); };
Value.ptr.prototype.Set = function(x) {
var $ptr, _1, _r, _r$1, v, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
v = this;
new flag(v.flag).mustBeAssignable();
new flag(x.flag).mustBeExported();
_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; }
x = _r;
/* */ if (!((((v.flag & 128) >>> 0) === 0))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!((((v.flag & 128) >>> 0) === 0))) { */ case 2:
_1 = v.typ.Kind();
/* */ if (_1 === (17)) { $s = 5; continue; }
/* */ if (_1 === (20)) { $s = 6; continue; }
/* */ if (_1 === (25)) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (_1 === (17)) { */ case 5:
jsType(v.typ).copy(v.ptr, x.ptr);
$s = 9; continue;
/* } else if (_1 === (20)) { */ case 6:
_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; }
v.ptr.$set(_r$1);
$s = 9; continue;
/* } else if (_1 === (25)) { */ case 7:
copyStruct(v.ptr, x.ptr, v.typ);
$s = 9; continue;
/* } else { */ case 8:
v.ptr.$set($clone(x, Value).object());
/* } */ case 9:
case 4:
$s = -1; return;
/* } */ case 3:
v.ptr = x.ptr;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Set }; } $f.$ptr = $ptr; $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;
};
Value.prototype.Set = function(x) { return this.$val.Set(x); };
Value.ptr.prototype.SetBytes = function(x) {
var $ptr, _r, _r$1, _v, slice, typedSlice, v, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
v = this;
new flag(v.flag).mustBeAssignable();
new flag(v.flag).mustBe(23);
_r = v.typ.Elem().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (!((_r === 8))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!((_r === 8))) { */ case 1:
$panic(new $String("reflect.Value.SetBytes of non-byte slice"));
/* } */ case 2:
slice = x;
if (!(v.typ.Name() === "")) { _v = true; $s = 6; continue s; }
_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; }
_v = !(_r$1 === ""); case 6:
/* */ if (_v) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (_v) { */ case 4:
typedSlice = new (jsType(v.typ))(slice.$array);
typedSlice.$offset = slice.$offset;
typedSlice.$length = slice.$length;
typedSlice.$capacity = slice.$capacity;
slice = typedSlice;
/* } */ case 5:
v.ptr.$set(slice);
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.SetBytes }; } $f.$ptr = $ptr; $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;
};
Value.prototype.SetBytes = function(x) { return this.$val.SetBytes(x); };
Value.ptr.prototype.SetCap = function(n) {
var $ptr, n, newSlice, s, v;
v = this;
new flag(v.flag).mustBeAssignable();
new flag(v.flag).mustBe(23);
s = v.ptr.$get();
if (n < ($parseInt(s.$length) >> 0) || n > ($parseInt(s.$capacity) >> 0)) {
$panic(new $String("reflect: slice capacity out of range in SetCap"));
}
newSlice = new (jsType(v.typ))(s.$array);
newSlice.$offset = s.$offset;
newSlice.$length = s.$length;
newSlice.$capacity = n;
v.ptr.$set(newSlice);
};
Value.prototype.SetCap = function(n) { return this.$val.SetCap(n); };
Value.ptr.prototype.SetLen = function(n) {
var $ptr, n, newSlice, s, v;
v = this;
new flag(v.flag).mustBeAssignable();
new flag(v.flag).mustBe(23);
s = v.ptr.$get();
if (n < 0 || n > ($parseInt(s.$capacity) >> 0)) {
$panic(new $String("reflect: slice length out of range in SetLen"));
}
newSlice = new (jsType(v.typ))(s.$array);
newSlice.$offset = s.$offset;
newSlice.$length = n;
newSlice.$capacity = s.$capacity;
v.ptr.$set(newSlice);
};
Value.prototype.SetLen = function(n) { return this.$val.SetLen(n); };
Value.ptr.prototype.Slice = function(i, j) {
var $ptr, _1, _r, _r$1, cap, i, j, kind, s, str, tt, typ, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
v = this;
cap = 0;
typ = $ifaceNil;
s = null;
kind = new flag(v.flag).kind();
_1 = kind;
/* */ if (_1 === (17)) { $s = 2; continue; }
/* */ if (_1 === (23)) { $s = 3; continue; }
/* */ if (_1 === (24)) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (_1 === (17)) { */ case 2:
if (((v.flag & 256) >>> 0) === 0) {
$panic(new $String("reflect.Value.Slice: slice of unaddressable array"));
}
tt = (v.typ.kindType);
cap = ((tt.len >> 0));
typ = SliceOf(tt.elem);
s = new (jsType(typ))($clone(v, Value).object());
$s = 6; continue;
/* } else if (_1 === (23)) { */ case 3:
typ = v.typ;
s = $clone(v, Value).object();
cap = $parseInt(s.$capacity) >> 0;
$s = 6; continue;
/* } else if (_1 === (24)) { */ case 4:
str = (v.ptr).$get();
if (i < 0 || j < i || j > str.length) {
$panic(new $String("reflect.Value.Slice: string slice index out of bounds"));
}
_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; }
$s = -1; return _r;
/* } else { */ case 5:
$panic(new ValueError.ptr("reflect.Value.Slice", kind));
/* } */ case 6:
case 1:
if (i < 0 || j < i || j > cap) {
$panic(new $String("reflect.Value.Slice: slice index out of bounds"));
}
_r$1 = makeValue(typ, $subslice(s, i, j), (v.flag & 96) >>> 0); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Slice }; } $f.$ptr = $ptr; $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;
};
Value.prototype.Slice = function(i, j) { return this.$val.Slice(i, j); };
Value.ptr.prototype.Slice3 = function(i, j, k) {
var $ptr, _1, _r, cap, i, j, k, kind, s, tt, typ, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
v = this;
cap = 0;
typ = $ifaceNil;
s = null;
kind = new flag(v.flag).kind();
_1 = kind;
if (_1 === (17)) {
if (((v.flag & 256) >>> 0) === 0) {
$panic(new $String("reflect.Value.Slice: slice of unaddressable array"));
}
tt = (v.typ.kindType);
cap = ((tt.len >> 0));
typ = SliceOf(tt.elem);
s = new (jsType(typ))($clone(v, Value).object());
} else if (_1 === (23)) {
typ = v.typ;
s = $clone(v, Value).object();
cap = $parseInt(s.$capacity) >> 0;
} else {
$panic(new ValueError.ptr("reflect.Value.Slice3", kind));
}
if (i < 0 || j < i || k < j || k > cap) {
$panic(new $String("reflect.Value.Slice3: slice index out of bounds"));
}
_r = makeValue(typ, $subslice(s, i, j, k), (v.flag & 96) >>> 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Slice3 }; } $f.$ptr = $ptr; $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;
};
Value.prototype.Slice3 = function(i, j, k) { return this.$val.Slice3(i, j, k); };
Value.ptr.prototype.Close = function() {
var $ptr, v;
v = this;
new flag(v.flag).mustBe(18);
new flag(v.flag).mustBeExported();
$close($clone(v, Value).object());
};
Value.prototype.Close = function() { return this.$val.Close(); };
chanrecv = function(t, ch, nb, val) {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, ch, comms, nb, received, recvRes, selectRes, selected, t, val, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; t = $f.t; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
selected = false;
received = false;
comms = new sliceType$12([new sliceType$9([ch])]);
if (nb) {
comms = $append(comms, new sliceType$9([]));
}
_r = selectHelper(new sliceType$5([comms])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
selectRes = _r;
if (nb && (($parseInt(selectRes[0]) >> 0) === 1)) {
_tmp = false;
_tmp$1 = false;
selected = _tmp;
received = _tmp$1;
$s = -1; return [selected, received];
}
recvRes = selectRes[1];
val.$set(recvRes[0]);
_tmp$2 = true;
_tmp$3 = !!(recvRes[1]);
selected = _tmp$2;
received = _tmp$3;
$s = -1; return [selected, received];
/* */ } return; } if ($f === undefined) { $f = { $blk: chanrecv }; } $f.$ptr = $ptr; $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.t = t; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
};
chansend = function(t, ch, val, nb) {
var $ptr, _r, ch, comms, nb, selectRes, t, val, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; ch = $f.ch; comms = $f.comms; nb = $f.nb; selectRes = $f.selectRes; t = $f.t; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
comms = new sliceType$12([new sliceType$9([ch, val.$get()])]);
if (nb) {
comms = $append(comms, new sliceType$9([]));
}
_r = selectHelper(new sliceType$5([comms])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
selectRes = _r;
if (nb && (($parseInt(selectRes[0]) >> 0) === 1)) {
$s = -1; return false;
}
$s = -1; return true;
/* */ } return; } if ($f === undefined) { $f = { $blk: chansend }; } $f.$ptr = $ptr; $f._r = _r; $f.ch = ch; $f.comms = comms; $f.nb = nb; $f.selectRes = selectRes; $f.t = t; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
};
DeepEqual = function(a1, a2) {
var $ptr, _arg, _arg$1, _arg$2, _r, _r$1, _r$2, a1, a2, i1, i2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
i1 = a1;
i2 = a2;
if (i1 === i2) {
$s = -1; return true;
}
if (i1 === null || i2 === null || !(i1.constructor === i2.constructor)) {
$s = -1; return false;
}
_r = ValueOf(a1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_arg = $clone(_r, Value);
_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; }
_arg$1 = $clone(_r$1, Value);
_arg$2 = sliceType$13.nil;
_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; }
$s = -1; return _r$2;
/* */ } return; } if ($f === undefined) { $f = { $blk: DeepEqual }; } $f.$ptr = $ptr; $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;
};
$pkg.DeepEqual = DeepEqual;
deepValueEqualJs = function(v1, v2, visited) {
var $ptr, _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$2, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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$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; _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:
if (!$clone(v1, Value).IsValid() || !$clone(v2, Value).IsValid()) {
$s = -1; return !$clone(v1, Value).IsValid() && !$clone(v2, Value).IsValid();
}
if (!($interfaceIsEqual($clone(v1, Value).Type(), $clone(v2, Value).Type()))) {
$s = -1; return false;
}
if ($interfaceIsEqual($clone(v1, Value).Type(), jsObjectPtr)) {
$s = -1; return unwrapJsObject(jsObjectPtr, $clone(v1, Value).object()) === unwrapJsObject(jsObjectPtr, $clone(v2, Value).object());
}
_1 = $clone(v1, Value).Kind();
if ((_1 === (17)) || (_1 === (21)) || (_1 === (23)) || (_1 === (25))) {
_ref = visited;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
entry = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), arrayType$1);
if (v1.ptr === entry[0] && v2.ptr === entry[1]) {
$s = -1; return true;
}
_i++;
}
visited = $append(visited, $toNativeArray($kindUnsafePointer, [v1.ptr, v2.ptr]));
}
_2 = $clone(v1, Value).Kind();
/* */ if ((_2 === (17)) || (_2 === (23))) { $s = 2; continue; }
/* */ if (_2 === (20)) { $s = 3; continue; }
/* */ if (_2 === (22)) { $s = 4; continue; }
/* */ if (_2 === (25)) { $s = 5; continue; }
/* */ if (_2 === (21)) { $s = 6; continue; }
/* */ if (_2 === (19)) { $s = 7; continue; }
/* */ if (_2 === (26)) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if ((_2 === (17)) || (_2 === (23))) { */ case 2:
if ($clone(v1, Value).Kind() === 23) {
if (!($clone(v1, Value).IsNil() === $clone(v2, Value).IsNil())) {
$s = -1; return false;
}
if ($clone(v1, Value).object() === $clone(v2, Value).object()) {
$s = -1; return true;
}
}
n = $clone(v1, Value).Len();
if (!((n === $clone(v2, Value).Len()))) {
$s = -1; return false;
}
i = 0;
/* while (true) { */ case 10:
/* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 11; continue; }
_r = $clone(v1, Value).Index(i); /* */ $s = 14; case 14: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_arg = $clone(_r, Value);
_r$1 = $clone(v2, Value).Index(i); /* */ $s = 15; case 15: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_arg$1 = $clone(_r$1, Value);
_arg$2 = visited;
_r$2 = deepValueEqualJs(_arg, _arg$1, _arg$2); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
/* */ if (!_r$2) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (!_r$2) { */ case 12:
$s = -1; return false;
/* } */ case 13:
i = i + (1) >> 0;
/* } */ $s = 10; continue; case 11:
$s = -1; return true;
/* } else if (_2 === (20)) { */ case 3:
if ($clone(v1, Value).IsNil() || $clone(v2, Value).IsNil()) {
$s = -1; return $clone(v1, Value).IsNil() && $clone(v2, Value).IsNil();
}
_r$3 = $clone(v1, Value).Elem(); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_arg$3 = $clone(_r$3, Value);
_r$4 = $clone(v2, Value).Elem(); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_arg$4 = $clone(_r$4, Value);
_arg$5 = visited;
_r$5 = deepValueEqualJs(_arg$3, _arg$4, _arg$5); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
$s = -1; return _r$5;
/* } else if (_2 === (22)) { */ case 4:
_r$6 = $clone(v1, Value).Elem(); /* */ $s = 20; case 20: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_arg$6 = $clone(_r$6, Value);
_r$7 = $clone(v2, Value).Elem(); /* */ $s = 21; case 21: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_arg$7 = $clone(_r$7, Value);
_arg$8 = visited;
_r$8 = deepValueEqualJs(_arg$6, _arg$7, _arg$8); /* */ $s = 22; case 22: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
$s = -1; return _r$8;
/* } else if (_2 === (25)) { */ case 5:
n$1 = $clone(v1, Value).NumField();
i$1 = 0;
/* while (true) { */ case 23:
/* if (!(i$1 < n$1)) { break; } */ if(!(i$1 < n$1)) { $s = 24; continue; }
_r$9 = $clone(v1, Value).Field(i$1); /* */ $s = 27; case 27: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
_arg$9 = $clone(_r$9, Value);
_r$10 = $clone(v2, Value).Field(i$1); /* */ $s = 28; case 28: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
_arg$10 = $clone(_r$10, Value);
_arg$11 = visited;
_r$11 = deepValueEqualJs(_arg$9, _arg$10, _arg$11); /* */ $s = 29; case 29: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
/* */ if (!_r$11) { $s = 25; continue; }
/* */ $s = 26; continue;
/* if (!_r$11) { */ case 25:
$s = -1; return false;
/* } */ case 26:
i$1 = i$1 + (1) >> 0;
/* } */ $s = 23; continue; case 24:
$s = -1; return true;
/* } else if (_2 === (21)) { */ case 6:
if (!($clone(v1, Value).IsNil() === $clone(v2, Value).IsNil())) {
$s = -1; return false;
}
if ($clone(v1, Value).object() === $clone(v2, Value).object()) {
$s = -1; return true;
}
_r$12 = $clone(v1, Value).MapKeys(); /* */ $s = 30; case 30: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
keys = _r$12;
if (!((keys.$length === $clone(v2, Value).Len()))) {
$s = -1; return false;
}
_ref$1 = keys;
_i$1 = 0;
/* while (true) { */ case 31:
/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 32; continue; }
k = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
_r$13 = $clone(v1, Value).MapIndex($clone(k, Value)); /* */ $s = 33; case 33: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
val1 = _r$13;
_r$14 = $clone(v2, Value).MapIndex($clone(k, Value)); /* */ $s = 34; case 34: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
val2 = _r$14;
if (!$clone(val1, Value).IsValid() || !$clone(val2, Value).IsValid()) { _v = true; $s = 37; continue s; }
_r$15 = deepValueEqualJs($clone(val1, Value), $clone(val2, Value), visited); /* */ $s = 38; case 38: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
_v = !_r$15; case 37:
/* */ if (_v) { $s = 35; continue; }
/* */ $s = 36; continue;
/* if (_v) { */ case 35:
$s = -1; return false;
/* } */ case 36:
_i$1++;
/* } */ $s = 31; continue; case 32:
$s = -1; return true;
/* } else if (_2 === (19)) { */ case 7:
$s = -1; return $clone(v1, Value).IsNil() && $clone(v2, Value).IsNil();
/* } else if (_2 === (26)) { */ case 8:
$s = -1; return $clone(v1, Value).object() === $clone(v2, Value).object();
/* } */ case 9:
case 1:
_r$16 = valueInterface($clone(v1, Value), false); /* */ $s = 39; case 39: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
_r$17 = valueInterface($clone(v2, Value), false); /* */ $s = 40; case 40: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
$s = -1; return !!($interfaceIsEqual(_r$16, _r$17));
/* */ } return; } if ($f === undefined) { $f = { $blk: deepValueEqualJs }; } $f.$ptr = $ptr; $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$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._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;
};
Swapper = function(slice) {
var $ptr, _1, _r, _r$1, _r$2, _r$3, slice, tmp, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; slice = $f.slice; tmp = $f.tmp; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
tmp = [tmp];
v = [v];
_r = ValueOf(slice); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
v[0] = _r;
if (!(($clone(v[0], Value).Kind() === 23))) {
$panic(new ValueError.ptr("Swapper", $clone(v[0], Value).Kind()));
}
_1 = $clone(v[0], Value).Len();
if (_1 === (0)) {
$s = -1; return (function(tmp, v) { return function(i, j) {
var $ptr, i, j;
$panic(new $String("reflect: slice index out of range"));
}; })(tmp, v);
} else if (_1 === (1)) {
$s = -1; return (function(tmp, v) { return function(i, j) {
var $ptr, i, j;
if (!((i === 0)) || !((j === 0))) {
$panic(new $String("reflect: slice index out of range"));
}
}; })(tmp, v);
}
case 2:
_r$1 = $clone(v[0], Value).Type().Elem(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$2 = New(_r$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$3 = $clone(_r$2, Value).Elem(); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
tmp[0] = _r$3;
$s = -1; return (function(tmp, v) { return function $b(i, j) {
var $ptr, _r$4, _r$5, i, j, v1, v2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$4 = $f._r$4; _r$5 = $f._r$5; i = $f.i; j = $f.j; v1 = $f.v1; v2 = $f.v2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r$4 = $clone(v[0], Value).Index(i); /* */ $s = 1; case 1: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
v1 = _r$4;
_r$5 = $clone(v[0], Value).Index(j); /* */ $s = 2; case 2: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
v2 = _r$5;
$r = $clone(tmp[0], Value).Set($clone(v1, Value)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = $clone(v1, Value).Set($clone(v2, Value)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = $clone(v2, Value).Set($clone(tmp[0], Value)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r$4 = _r$4; $f._r$5 = _r$5; $f.i = i; $f.j = j; $f.v1 = v1; $f.v2 = v2; $f.$s = $s; $f.$r = $r; return $f;
}; })(tmp, v);
/* */ } return; } if ($f === undefined) { $f = { $blk: Swapper }; } $f.$ptr = $ptr; $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.slice = slice; $f.tmp = tmp; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Swapper = Swapper;
Kind.prototype.String = function() {
var $ptr, k;
k = this.$val;
if (((k >> 0)) < kindNames.$length) {
return ((k < 0 || k >= kindNames.$length) ? ($throwRuntimeError("index out of range"), undefined) : kindNames.$array[kindNames.$offset + k]);
}
return "kind" + strconv.Itoa(((k >> 0)));
};
$ptrType(Kind).prototype.String = function() { return new Kind(this.$get()).String(); };
rtype.ptr.prototype.String = function() {
var $ptr, s, t;
t = this;
s = $clone(t.nameOff(t.str), name).name();
if (!((((t.tflag & 2) >>> 0) === 0))) {
return $substring(s, 1);
}
return s;
};
rtype.prototype.String = function() { return this.$val.String(); };
rtype.ptr.prototype.Size = function() {
var $ptr, t;
t = this;
return t.size;
};
rtype.prototype.Size = function() { return this.$val.Size(); };
rtype.ptr.prototype.Bits = function() {
var $ptr, k, t;
t = this;
if (t === ptrType$1.nil) {
$panic(new $String("reflect: Bits of nil Type"));
}
k = t.Kind();
if (k < 2 || k > 16) {
$panic(new $String("reflect: Bits of non-arithmetic Type " + t.String()));
}
return $imul(((t.size >> 0)), 8);
};
rtype.prototype.Bits = function() { return this.$val.Bits(); };
rtype.ptr.prototype.Align = function() {
var $ptr, t;
t = this;
return ((t.align >> 0));
};
rtype.prototype.Align = function() { return this.$val.Align(); };
rtype.ptr.prototype.FieldAlign = function() {
var $ptr, t;
t = this;
return ((t.fieldAlign >> 0));
};
rtype.prototype.FieldAlign = function() { return this.$val.FieldAlign(); };
rtype.ptr.prototype.Kind = function() {
var $ptr, t;
t = this;
return ((((t.kind & 31) >>> 0) >>> 0));
};
rtype.prototype.Kind = function() { return this.$val.Kind(); };
rtype.ptr.prototype.common = function() {
var $ptr, t;
t = this;
return t;
};
rtype.prototype.common = function() { return this.$val.common(); };
rtype.ptr.prototype.exportedMethods = function() {
var $ptr, _entry, _i, _i$1, _key, _ref, _ref$1, _tuple, allExported, allm, found, m, m$1, methods, name$1, name$2, t, ut, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _i = $f._i; _i$1 = $f._i$1; _key = $f._key; _ref = $f._ref; _ref$1 = $f._ref$1; _tuple = $f._tuple; allExported = $f.allExported; allm = $f.allm; found = $f.found; m = $f.m; m$1 = $f.m$1; methods = $f.methods; 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:
t = this;
$r = methodCache.RWMutex.RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_tuple = (_entry = methodCache.m[ptrType$1.keyFor(t)], _entry !== undefined ? [_entry.v, true] : [sliceType$3.nil, false]);
methods = _tuple[0];
found = _tuple[1];
$r = methodCache.RWMutex.RUnlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (found) {
$s = -1; return methods;
}
ut = t.uncommon();
if (ut === ptrType$6.nil) {
$s = -1; return sliceType$3.nil;
}
allm = ut.methods();
allExported = true;
_ref = allm;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
m = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), method);
name$1 = $clone(t.nameOff(m.name), name);
if (!$clone(name$1, name).isExported()) {
allExported = false;
break;
}
_i++;
}
if (allExported) {
methods = allm;
} else {
methods = $makeSlice(sliceType$3, 0, allm.$length);
_ref$1 = allm;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
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);
name$2 = $clone(t.nameOff(m$1.name), name);
if ($clone(name$2, name).isExported()) {
methods = $append(methods, m$1);
}
_i$1++;
}
methods = $subslice(methods, 0, methods.$length, methods.$length);
}
$r = methodCache.RWMutex.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (methodCache.m === false) {
methodCache.m = {};
}
_key = t; (methodCache.m || $throwRuntimeError("assignment to entry in nil map"))[ptrType$1.keyFor(_key)] = { k: _key, v: methods };
$r = methodCache.RWMutex.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return methods;
/* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.exportedMethods }; } $f.$ptr = $ptr; $f._entry = _entry; $f._i = _i; $f._i$1 = _i$1; $f._key = _key; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tuple = _tuple; $f.allExported = allExported; $f.allm = allm; $f.found = found; $f.m = m; $f.m$1 = m$1; $f.methods = methods; $f.name$1 = name$1; $f.name$2 = name$2; $f.t = t; $f.ut = ut; $f.$s = $s; $f.$r = $r; return $f;
};
rtype.prototype.exportedMethods = function() { return this.$val.exportedMethods(); };
rtype.ptr.prototype.NumMethod = function() {
var $ptr, _r, t, tt, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; tt = $f.tt; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
if (t.Kind() === 20) {
tt = (t.kindType);
$s = -1; return tt.NumMethod();
}
if (((t.tflag & 1) >>> 0) === 0) {
$s = -1; return 0;
}
_r = t.exportedMethods(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r.$length;
/* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.NumMethod }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.tt = tt; $f.$s = $s; $f.$r = $r; return $f;
};
rtype.prototype.NumMethod = function() { return this.$val.NumMethod(); };
rtype.ptr.prototype.MethodByName = function(name$1) {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, i, m, name$1, ok, p, pname, t, tt, ut, utmethods, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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:
m = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$1.nil, 0, 0), 0);
ok = false;
t = this;
if (t.Kind() === 20) {
tt = (t.kindType);
_tuple = tt.MethodByName(name$1);
Method.copy(m, _tuple[0]);
ok = _tuple[1];
$s = -1; return [m, ok];
}
ut = t.uncommon();
if (ut === ptrType$6.nil) {
_tmp = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$1.nil, 0, 0), 0);
_tmp$1 = false;
Method.copy(m, _tmp);
ok = _tmp$1;
$s = -1; return [m, ok];
}
utmethods = ut.methods();
i = 0;
/* while (true) { */ case 1:
/* if (!(i < ((ut.mcount >> 0)))) { break; } */ if(!(i < ((ut.mcount >> 0)))) { $s = 2; continue; }
p = $clone(((i < 0 || i >= utmethods.$length) ? ($throwRuntimeError("index out of range"), undefined) : utmethods.$array[utmethods.$offset + i]), method);
pname = $clone(t.nameOff(p.name), name);
/* */ if ($clone(pname, name).isExported() && $clone(pname, name).name() === name$1) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if ($clone(pname, name).isExported() && $clone(pname, name).name() === name$1) { */ case 3:
_r = t.Method(i); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tmp$2 = $clone(_r, Method);
_tmp$3 = true;
Method.copy(m, _tmp$2);
ok = _tmp$3;
$s = -1; return [m, ok];
/* } */ case 4:
i = i + (1) >> 0;
/* } */ $s = 1; continue; case 2:
_tmp$4 = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$1.nil, 0, 0), 0);
_tmp$5 = false;
Method.copy(m, _tmp$4);
ok = _tmp$5;
$s = -1; return [m, ok];
/* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.MethodByName }; } $f.$ptr = $ptr; $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.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;
};
rtype.prototype.MethodByName = function(name$1) { return this.$val.MethodByName(name$1); };
rtype.ptr.prototype.PkgPath = function() {
var $ptr, t, ut;
t = this;
if (((t.tflag & 4) >>> 0) === 0) {
return "";
}
ut = t.uncommon();
if (ut === ptrType$6.nil) {
return "";
}
return $clone(t.nameOff(ut.pkgPath), name).name();
};
rtype.prototype.PkgPath = function() { return this.$val.PkgPath(); };
rtype.ptr.prototype.Name = function() {
var $ptr, i, s, t;
t = this;
if (((t.tflag & 4) >>> 0) === 0) {
return "";
}
s = t.String();
i = s.length - 1 >> 0;
while (true) {
if (!(i >= 0)) { break; }
if (s.charCodeAt(i) === 46) {
break;
}
i = i - (1) >> 0;
}
return $substring(s, (i + 1 >> 0));
};
rtype.prototype.Name = function() { return this.$val.Name(); };
rtype.ptr.prototype.ChanDir = function() {
var $ptr, t, tt;
t = this;
if (!((t.Kind() === 18))) {
$panic(new $String("reflect: ChanDir of non-chan type"));
}
tt = (t.kindType);
return ((tt.dir >> 0));
};
rtype.prototype.ChanDir = function() { return this.$val.ChanDir(); };
rtype.ptr.prototype.IsVariadic = function() {
var $ptr, t, tt;
t = this;
if (!((t.Kind() === 19))) {
$panic(new $String("reflect: IsVariadic of non-func type"));
}
tt = (t.kindType);
return !((((tt.outCount & 32768) >>> 0) === 0));
};
rtype.prototype.IsVariadic = function() { return this.$val.IsVariadic(); };
rtype.ptr.prototype.Elem = function() {
var $ptr, _1, t, tt, tt$1, tt$2, tt$3, tt$4;
t = this;
_1 = t.Kind();
if (_1 === (17)) {
tt = (t.kindType);
return toType(tt.elem);
} else if (_1 === (18)) {
tt$1 = (t.kindType);
return toType(tt$1.elem);
} else if (_1 === (21)) {
tt$2 = (t.kindType);
return toType(tt$2.elem);
} else if (_1 === (22)) {
tt$3 = (t.kindType);
return toType(tt$3.elem);
} else if (_1 === (23)) {
tt$4 = (t.kindType);
return toType(tt$4.elem);
}
$panic(new $String("reflect: Elem of invalid type"));
};
rtype.prototype.Elem = function() { return this.$val.Elem(); };
rtype.ptr.prototype.Field = function(i) {
var $ptr, _r, i, t, tt, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; i = $f.i; t = $f.t; tt = $f.tt; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
if (!((t.Kind() === 25))) {
$panic(new $String("reflect: Field of non-struct type"));
}
tt = (t.kindType);
_r = tt.Field(i); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.Field }; } $f.$ptr = $ptr; $f._r = _r; $f.i = i; $f.t = t; $f.tt = tt; $f.$s = $s; $f.$r = $r; return $f;
};
rtype.prototype.Field = function(i) { return this.$val.Field(i); };
rtype.ptr.prototype.FieldByIndex = function(index) {
var $ptr, _r, index, t, tt, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
t = this;
if (!((t.Kind() === 25))) {
$panic(new $String("reflect: FieldByIndex of non-struct type"));
}
tt = (t.kindType);
_r = tt.FieldByIndex(index); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.FieldByIndex }; } $f.$ptr = $ptr; $f._r = _r; $f.index = index; $f.t = t; $f.tt = tt; $f.$s = $s; $f.$r = $r; return $f;
};
rtype.prototype.FieldByIndex = function(index) { return this.$val.FieldByIndex(index); };
rtype.ptr.prototype.FieldByName = function(name$1) {
var $ptr, _r, name$1, t, tt, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
t = this;
if (!((t.Kind() === 25))) {
$panic(new $String("reflect: FieldByName of non-struct type"));
}
tt = (t.kindType);
_r = tt.FieldByName(name$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.FieldByName }; } $f.$ptr = $ptr; $f._r = _r; $f.name$1 = name$1; $f.t = t; $f.tt = tt; $f.$s = $s; $f.$r = $r; return $f;
};
rtype.prototype.FieldByName = function(name$1) { return this.$val.FieldByName(name$1); };
rtype.ptr.prototype.FieldByNameFunc = function(match) {
var $ptr, _r, match, t, tt, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
t = this;
if (!((t.Kind() === 25))) {
$panic(new $String("reflect: FieldByNameFunc of non-struct type"));
}
tt = (t.kindType);
_r = tt.FieldByNameFunc(match); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.FieldByNameFunc }; } $f.$ptr = $ptr; $f._r = _r; $f.match = match; $f.t = t; $f.tt = tt; $f.$s = $s; $f.$r = $r; return $f;
};
rtype.prototype.FieldByNameFunc = function(match) { return this.$val.FieldByNameFunc(match); };
rtype.ptr.prototype.In = function(i) {
var $ptr, i, t, tt, x;
t = this;
if (!((t.Kind() === 19))) {
$panic(new $String("reflect: In of non-func type"));
}
tt = (t.kindType);
return toType((x = tt.in$(), ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])));
};
rtype.prototype.In = function(i) { return this.$val.In(i); };
rtype.ptr.prototype.Key = function() {
var $ptr, t, tt;
t = this;
if (!((t.Kind() === 21))) {
$panic(new $String("reflect: Key of non-map type"));
}
tt = (t.kindType);
return toType(tt.key);
};
rtype.prototype.Key = function() { return this.$val.Key(); };
rtype.ptr.prototype.Len = function() {
var $ptr, t, tt;
t = this;
if (!((t.Kind() === 17))) {
$panic(new $String("reflect: Len of non-array type"));
}
tt = (t.kindType);
return ((tt.len >> 0));
};
rtype.prototype.Len = function() { return this.$val.Len(); };
rtype.ptr.prototype.NumField = function() {
var $ptr, t, tt;
t = this;
if (!((t.Kind() === 25))) {
$panic(new $String("reflect: NumField of non-struct type"));
}
tt = (t.kindType);
return tt.fields.$length;
};
rtype.prototype.NumField = function() { return this.$val.NumField(); };
rtype.ptr.prototype.NumIn = function() {
var $ptr, t, tt;
t = this;
if (!((t.Kind() === 19))) {
$panic(new $String("reflect: NumIn of non-func type"));
}
tt = (t.kindType);
return ((tt.inCount >> 0));
};
rtype.prototype.NumIn = function() { return this.$val.NumIn(); };
rtype.ptr.prototype.NumOut = function() {
var $ptr, t, tt;
t = this;
if (!((t.Kind() === 19))) {
$panic(new $String("reflect: NumOut of non-func type"));
}
tt = (t.kindType);
return tt.out().$length;
};
rtype.prototype.NumOut = function() { return this.$val.NumOut(); };
rtype.ptr.prototype.Out = function(i) {
var $ptr, i, t, tt, x;
t = this;
if (!((t.Kind() === 19))) {
$panic(new $String("reflect: Out of non-func type"));
}
tt = (t.kindType);
return toType((x = tt.out(), ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])));
};
rtype.prototype.Out = function(i) { return this.$val.Out(i); };
ChanDir.prototype.String = function() {
var $ptr, _1, d;
d = this.$val;
_1 = d;
if (_1 === (2)) {
return "chan<-";
} else if (_1 === (1)) {
return "<-chan";
} else if (_1 === (3)) {
return "chan";
}
return "ChanDir" + strconv.Itoa(((d >> 0)));
};
$ptrType(ChanDir).prototype.String = function() { return new ChanDir(this.$get()).String(); };
interfaceType.ptr.prototype.Method = function(i) {
var $ptr, i, m, p, pname, t, x;
m = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$1.nil, 0, 0), 0);
t = this;
if (i < 0 || i >= t.methods.$length) {
return m;
}
p = (x = t.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
pname = $clone(t.rtype.nameOff(p.name), name);
m.Name = $clone(pname, name).name();
if (!$clone(pname, name).isExported()) {
m.PkgPath = $clone(pname, name).pkgPath();
if (m.PkgPath === "") {
m.PkgPath = $clone(t.pkgPath, name).name();
}
}
m.Type = toType(t.rtype.typeOff(p.typ));
m.Index = i;
return m;
};
interfaceType.prototype.Method = function(i) { return this.$val.Method(i); };
interfaceType.ptr.prototype.NumMethod = function() {
var $ptr, t;
t = this;
return t.methods.$length;
};
interfaceType.prototype.NumMethod = function() { return this.$val.NumMethod(); };
interfaceType.ptr.prototype.MethodByName = function(name$1) {
var $ptr, _i, _ref, _tmp, _tmp$1, i, m, name$1, ok, p, t, x;
m = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$1.nil, 0, 0), 0);
ok = false;
t = this;
if (t === ptrType$8.nil) {
return [m, ok];
}
p = ptrType$9.nil;
_ref = t.methods;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
p = (x = t.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
if ($clone(t.rtype.nameOff(p.name), name).name() === name$1) {
_tmp = $clone(t.Method(i), Method);
_tmp$1 = true;
Method.copy(m, _tmp);
ok = _tmp$1;
return [m, ok];
}
_i++;
}
return [m, ok];
};
interfaceType.prototype.MethodByName = function(name$1) { return this.$val.MethodByName(name$1); };
StructTag.prototype.Get = function(key) {
var $ptr, _tuple, key, tag, v;
tag = this.$val;
_tuple = new StructTag(tag).Lookup(key);
v = _tuple[0];
return v;
};
$ptrType(StructTag).prototype.Get = function(key) { return new StructTag(this.$get()).Get(key); };
StructTag.prototype.Lookup = function(key) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, err, i, key, name$1, ok, qvalue, tag, value, value$1;
value = "";
ok = false;
tag = this.$val;
while (true) {
if (!(!(tag === ""))) { break; }
i = 0;
while (true) {
if (!(i < tag.length && (tag.charCodeAt(i) === 32))) { break; }
i = i + (1) >> 0;
}
tag = $substring(tag, i);
if (tag === "") {
break;
}
i = 0;
while (true) {
if (!(i < tag.length && tag.charCodeAt(i) > 32 && !((tag.charCodeAt(i) === 58)) && !((tag.charCodeAt(i) === 34)) && !((tag.charCodeAt(i) === 127)))) { break; }
i = i + (1) >> 0;
}
if ((i === 0) || (i + 1 >> 0) >= tag.length || !((tag.charCodeAt(i) === 58)) || !((tag.charCodeAt((i + 1 >> 0)) === 34))) {
break;
}
name$1 = ($substring(tag, 0, i));
tag = $substring(tag, (i + 1 >> 0));
i = 1;
while (true) {
if (!(i < tag.length && !((tag.charCodeAt(i) === 34)))) { break; }
if (tag.charCodeAt(i) === 92) {
i = i + (1) >> 0;
}
i = i + (1) >> 0;
}
if (i >= tag.length) {
break;
}
qvalue = ($substring(tag, 0, (i + 1 >> 0)));
tag = $substring(tag, (i + 1 >> 0));
if (key === name$1) {
_tuple = strconv.Unquote(qvalue);
value$1 = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
break;
}
_tmp = value$1;
_tmp$1 = true;
value = _tmp;
ok = _tmp$1;
return [value, ok];
}
}
_tmp$2 = "";
_tmp$3 = false;
value = _tmp$2;
ok = _tmp$3;
return [value, ok];
};
$ptrType(StructTag).prototype.Lookup = function(key) { return new StructTag(this.$get()).Lookup(key); };
structType.ptr.prototype.Field = function(i) {
var $ptr, _r, _r$1, _r$2, f, i, name$1, p, t, t$1, tag, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; f = $f.f; i = $f.i; name$1 = $f.name$1; p = $f.p; t = $f.t; t$1 = $f.t$1; tag = $f.tag; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
f = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$14.nil, false);
t = this;
if (i < 0 || i >= t.fields.$length) {
$panic(new $String("reflect: Field index out of bounds"));
}
p = (x = t.fields, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
f.Type = toType(p.typ);
name$1 = $clone(p.name, name).name();
/* */ if (!(name$1 === "")) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(name$1 === "")) { */ case 1:
f.Name = name$1;
$s = 3; continue;
/* } else { */ case 2:
t$1 = f.Type;
_r = t$1.Kind(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (_r === 22) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (_r === 22) { */ case 4:
_r$1 = t$1.Elem(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
t$1 = _r$1;
/* } */ case 5:
_r$2 = t$1.Name(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
f.Name = _r$2;
f.Anonymous = true;
/* } */ case 3:
if (!$clone(p.name, name).isExported()) {
f.PkgPath = $clone(p.name, name).pkgPath();
if (f.PkgPath === "") {
f.PkgPath = $clone(t.pkgPath, name).name();
}
}
tag = $clone(p.name, name).tag();
if (!(tag === "")) {
f.Tag = (tag);
}
f.Offset = p.offset;
f.Index = new sliceType$14([i]);
$s = -1; return f;
/* */ } return; } if ($f === undefined) { $f = { $blk: structType.ptr.prototype.Field }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.f = f; $f.i = i; $f.name$1 = name$1; $f.p = p; $f.t = t; $f.t$1 = t$1; $f.tag = tag; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
structType.prototype.Field = function(i) { return this.$val.Field(i); };
structType.ptr.prototype.FieldByIndex = function(index) {
var $ptr, _i, _r, _r$1, _r$2, _r$3, _r$4, _ref, _v, f, ft, i, index, t, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
f = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$14.nil, false);
t = this;
f.Type = toType(t.rtype);
_ref = index;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
i = _i;
x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
/* */ if (i > 0) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (i > 0) { */ case 3:
ft = f.Type;
_r = ft.Kind(); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
if (!(_r === 22)) { _v = false; $s = 7; continue s; }
_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; }
_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; }
_v = _r$2 === 25; case 7:
/* */ if (_v) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (_v) { */ case 5:
_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; }
ft = _r$3;
/* } */ case 6:
f.Type = ft;
/* } */ case 4:
_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; }
StructField.copy(f, _r$4);
_i++;
/* } */ $s = 1; continue; case 2:
$s = -1; return f;
/* */ } return; } if ($f === undefined) { $f = { $blk: structType.ptr.prototype.FieldByIndex }; } $f.$ptr = $ptr; $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;
};
structType.prototype.FieldByIndex = function(index) { return this.$val.FieldByIndex(index); };
structType.ptr.prototype.FieldByNameFunc = function(match) {
var $ptr, _entry, _entry$1, _entry$2, _entry$3, _i, _i$1, _key, _key$1, _key$2, _key$3, _r, _r$1, _r$2, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, count, current, f, fname, i, index, match, name$1, next, nextCount, ntyp, ok, result, scan, styp, t, t$1, visited, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _r$2 = $f._r$2; _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; name$1 = $f.name$1; 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:
result = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$14.nil, false);
ok = false;
t = this;
current = new sliceType$15([]);
next = new sliceType$15([new fieldScan.ptr(t, sliceType$14.nil)]);
nextCount = false;
visited = $makeMap(ptrType$10.keyFor, []);
/* while (true) { */ case 1:
/* if (!(next.$length > 0)) { break; } */ if(!(next.$length > 0)) { $s = 2; continue; }
_tmp = next;
_tmp$1 = $subslice(current, 0, 0);
current = _tmp;
next = _tmp$1;
count = nextCount;
nextCount = false;
_ref = current;
_i = 0;
/* while (true) { */ case 3:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; }
scan = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), fieldScan);
t$1 = scan.typ;
/* */ if ((_entry = visited[ptrType$10.keyFor(t$1)], _entry !== undefined ? _entry.v : false)) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if ((_entry = visited[ptrType$10.keyFor(t$1)], _entry !== undefined ? _entry.v : false)) { */ case 5:
_i++;
/* continue; */ $s = 3; continue;
/* } */ case 6:
_key = t$1; (visited || $throwRuntimeError("assignment to entry in nil map"))[ptrType$10.keyFor(_key)] = { k: _key, v: true };
_ref$1 = t$1.fields;
_i$1 = 0;
/* while (true) { */ case 7:
/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 8; continue; }
i = _i$1;
f = (x = t$1.fields, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
fname = "";
ntyp = ptrType$1.nil;
name$1 = $clone(f.name, name).name();
/* */ if (!(name$1 === "")) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (!(name$1 === "")) { */ case 9:
fname = name$1;
$s = 11; continue;
/* } else { */ case 10:
ntyp = f.typ;
/* */ if (ntyp.Kind() === 22) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (ntyp.Kind() === 22) { */ case 12:
_r = ntyp.Elem().common(); /* */ $s = 14; case 14: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
ntyp = _r;
/* } */ case 13:
fname = ntyp.Name();
/* } */ case 11:
_r$1 = match(fname); /* */ $s = 17; case 17: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
/* */ if (_r$1) { $s = 15; continue; }
/* */ $s = 16; continue;
/* if (_r$1) { */ case 15:
if ((_entry$1 = count[ptrType$10.keyFor(t$1)], _entry$1 !== undefined ? _entry$1.v : 0) > 1 || ok) {
_tmp$2 = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$14.nil, false);
_tmp$3 = false;
StructField.copy(result, _tmp$2);
ok = _tmp$3;
$s = -1; return [result, ok];
}
_r$2 = t$1.Field(i); /* */ $s = 18; case 18: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
StructField.copy(result, _r$2);
result.Index = sliceType$14.nil;
result.Index = $appendSlice(result.Index, scan.index);
result.Index = $append(result.Index, i);
ok = true;
_i$1++;
/* continue; */ $s = 7; continue;
/* } */ case 16:
if (ok || ntyp === ptrType$1.nil || !((ntyp.Kind() === 25))) {
_i$1++;
/* continue; */ $s = 7; continue;
}
styp = (ntyp.kindType);
if ((_entry$2 = nextCount[ptrType$10.keyFor(styp)], _entry$2 !== undefined ? _entry$2.v : 0) > 0) {
_key$1 = styp; (nextCount || $throwRuntimeError("assignment to entry in nil map"))[ptrType$10.keyFor(_key$1)] = { k: _key$1, v: 2 };
_i$1++;
/* continue; */ $s = 7; continue;
}
if (nextCount === false) {
nextCount = $makeMap(ptrType$10.keyFor, []);
}
_key$2 = styp; (nextCount || $throwRuntimeError("assignment to entry in nil map"))[ptrType$10.keyFor(_key$2)] = { k: _key$2, v: 1 };
if ((_entry$3 = count[ptrType$10.keyFor(t$1)], _entry$3 !== undefined ? _entry$3.v : 0) > 1) {
_key$3 = styp; (nextCount || $throwRuntimeError("assignment to entry in nil map"))[ptrType$10.keyFor(_key$3)] = { k: _key$3, v: 2 };
}
index = sliceType$14.nil;
index = $appendSlice(index, scan.index);
index = $append(index, i);
next = $append(next, new fieldScan.ptr(styp, index));
_i$1++;
/* } */ $s = 7; continue; case 8:
_i++;
/* } */ $s = 3; continue; case 4:
if (ok) {
/* break; */ $s = 2; continue;
}
/* } */ $s = 1; continue; case 2:
$s = -1; return [result, ok];
/* */ } return; } if ($f === undefined) { $f = { $blk: structType.ptr.prototype.FieldByNameFunc }; } $f.$ptr = $ptr; $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._r$2 = _r$2; $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.name$1 = name$1; $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;
};
structType.prototype.FieldByNameFunc = function(match) { return this.$val.FieldByNameFunc(match); };
structType.ptr.prototype.FieldByName = function(name$1) {
var $ptr, _i, _r, _r$1, _ref, _tmp, _tmp$1, _tuple, f, hasAnon, i, name$1, present, t, tf, tfname, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _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; tfname = $f.tfname; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
name$1 = [name$1];
f = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$14.nil, false);
present = false;
t = this;
hasAnon = false;
/* */ if (!(name$1[0] === "")) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(name$1[0] === "")) { */ case 1:
_ref = t.fields;
_i = 0;
/* while (true) { */ case 3:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; }
i = _i;
tf = (x = t.fields, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
tfname = $clone(tf.name, name).name();
/* */ if (tfname === "") { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (tfname === "") { */ case 5:
hasAnon = true;
_i++;
/* continue; */ $s = 3; continue;
/* } */ case 6:
/* */ if (tfname === name$1[0]) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (tfname === name$1[0]) { */ case 7:
_r = t.Field(i); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tmp = $clone(_r, StructField);
_tmp$1 = true;
StructField.copy(f, _tmp);
present = _tmp$1;
$s = -1; return [f, present];
/* } */ case 8:
_i++;
/* } */ $s = 3; continue; case 4:
/* } */ case 2:
if (!hasAnon) {
$s = -1; return [f, present];
}
_r$1 = t.FieldByNameFunc((function(name$1) { return function(s) {
var $ptr, s;
return s === name$1[0];
}; })(name$1)); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
StructField.copy(f, _tuple[0]);
present = _tuple[1];
$s = -1; return [f, present];
/* */ } return; } if ($f === undefined) { $f = { $blk: structType.ptr.prototype.FieldByName }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $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.tfname = tfname; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
structType.prototype.FieldByName = function(name$1) { return this.$val.FieldByName(name$1); };
PtrTo = function(t) {
var $ptr, t;
return $assertType(t, ptrType$1).ptrTo();
};
$pkg.PtrTo = PtrTo;
rtype.ptr.prototype.Implements = function(u) {
var $ptr, _r, t, u, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; u = $f.u; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
if ($interfaceIsEqual(u, $ifaceNil)) {
$panic(new $String("reflect: nil type passed to Type.Implements"));
}
_r = u.Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (!((_r === 20))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!((_r === 20))) { */ case 1:
$panic(new $String("reflect: non-interface type passed to Type.Implements"));
/* } */ case 2:
$s = -1; return implements$1($assertType(u, ptrType$1), t);
/* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.Implements }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.u = u; $f.$s = $s; $f.$r = $r; return $f;
};
rtype.prototype.Implements = function(u) { return this.$val.Implements(u); };
rtype.ptr.prototype.AssignableTo = function(u) {
var $ptr, _r, t, u, uu, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
t = this;
if ($interfaceIsEqual(u, $ifaceNil)) {
$panic(new $String("reflect: nil type passed to Type.AssignableTo"));
}
uu = $assertType(u, ptrType$1);
_r = directlyAssignable(uu, t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r || implements$1(uu, t);
/* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.AssignableTo }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.u = u; $f.uu = uu; $f.$s = $s; $f.$r = $r; return $f;
};
rtype.prototype.AssignableTo = function(u) { return this.$val.AssignableTo(u); };
rtype.ptr.prototype.ConvertibleTo = function(u) {
var $ptr, _r, t, u, uu, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
t = this;
if ($interfaceIsEqual(u, $ifaceNil)) {
$panic(new $String("reflect: nil type passed to Type.ConvertibleTo"));
}
uu = $assertType(u, ptrType$1);
_r = convertOp(uu, t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return !(_r === $throwNilPointerError);
/* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.ConvertibleTo }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.u = u; $f.uu = uu; $f.$s = $s; $f.$r = $r; return $f;
};
rtype.prototype.ConvertibleTo = function(u) { return this.$val.ConvertibleTo(u); };
implements$1 = function(T, V) {
var $ptr, T, V, i, i$1, j, j$1, t, tm, tm$1, v, v$1, vm, vm$1, vmethods, x, x$1, x$2;
if (!((T.Kind() === 20))) {
return false;
}
t = (T.kindType);
if (t.methods.$length === 0) {
return true;
}
if (V.Kind() === 20) {
v = (V.kindType);
i = 0;
j = 0;
while (true) {
if (!(j < v.methods.$length)) { break; }
tm = (x = t.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
vm = (x$1 = v.methods, ((j < 0 || j >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + j]));
if ($clone(V.nameOff(vm.name), name).name() === $clone(t.rtype.nameOff(tm.name), name).name() && V.typeOff(vm.typ) === t.rtype.typeOff(tm.typ)) {
i = i + (1) >> 0;
if (i >= t.methods.$length) {
return true;
}
}
j = j + (1) >> 0;
}
return false;
}
v$1 = V.uncommon();
if (v$1 === ptrType$6.nil) {
return false;
}
i$1 = 0;
vmethods = v$1.methods();
j$1 = 0;
while (true) {
if (!(j$1 < ((v$1.mcount >> 0)))) { break; }
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]));
vm$1 = $clone(((j$1 < 0 || j$1 >= vmethods.$length) ? ($throwRuntimeError("index out of range"), undefined) : vmethods.$array[vmethods.$offset + j$1]), method);
if ($clone(V.nameOff(vm$1.name), name).name() === $clone(t.rtype.nameOff(tm$1.name), name).name() && V.typeOff(vm$1.mtyp) === t.rtype.typeOff(tm$1.typ)) {
i$1 = i$1 + (1) >> 0;
if (i$1 >= t.methods.$length) {
return true;
}
}
j$1 = j$1 + (1) >> 0;
}
return false;
};
directlyAssignable = function(T, V) {
var $ptr, T, V, _r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; T = $f.T; V = $f.V; _r = $f._r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
if (T === V) {
$s = -1; return true;
}
if (!(T.Name() === "") && !(V.Name() === "") || !((T.Kind() === V.Kind()))) {
$s = -1; return false;
}
_r = haveIdenticalUnderlyingType(T, V, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: directlyAssignable }; } $f.$ptr = $ptr; $f.T = T; $f.V = V; $f._r = _r; $f.$s = $s; $f.$r = $r; return $f;
};
haveIdenticalType = function(T, V, cmpTags) {
var $ptr, T, V, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _v, cmpTags, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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:
if (cmpTags) {
$s = -1; return $interfaceIsEqual(T, V);
}
_r = T.Name(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_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; }
if (!(_r === _r$1)) { _v = true; $s = 3; continue s; }
_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; }
_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; }
_v = !((_r$2 === _r$3)); case 3:
/* */ if (_v) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (_v) { */ case 1:
$s = -1; return false;
/* } */ case 2:
_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; }
_arg = _r$4;
_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; }
_arg$1 = _r$5;
_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; }
$s = -1; return _r$6;
/* */ } return; } if ($f === undefined) { $f = { $blk: haveIdenticalType }; } $f.$ptr = $ptr; $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;
};
haveIdenticalUnderlyingType = function(T, V, cmpTags) {
var $ptr, 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, tp, v, v$1, v$2, vf, vp, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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; tp = $f.tp; v = $f.v; v$1 = $f.v$1; v$2 = $f.v$2; vf = $f.vf; vp = $f.vp; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
if (T === V) {
$s = -1; return true;
}
kind = T.Kind();
if (!((kind === V.Kind()))) {
$s = -1; return false;
}
if (1 <= kind && kind <= 16 || (kind === 24) || (kind === 26)) {
$s = -1; return true;
}
_1 = kind;
/* */ if (_1 === (17)) { $s = 2; continue; }
/* */ if (_1 === (18)) { $s = 3; continue; }
/* */ if (_1 === (19)) { $s = 4; continue; }
/* */ if (_1 === (20)) { $s = 5; continue; }
/* */ if (_1 === (21)) { $s = 6; continue; }
/* */ if ((_1 === (22)) || (_1 === (23))) { $s = 7; continue; }
/* */ if (_1 === (25)) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (_1 === (17)) { */ case 2:
if (!(T.Len() === V.Len())) { _v = false; $s = 10; continue s; }
_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; }
_v = _r; case 10:
$s = -1; return _v;
/* } else if (_1 === (18)) { */ case 3:
if (!(V.ChanDir() === 3)) { _v$1 = false; $s = 14; continue s; }
_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; }
_v$1 = _r$1; case 14:
/* */ if (_v$1) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (_v$1) { */ case 12:
$s = -1; return true;
/* } */ case 13:
if (!(V.ChanDir() === T.ChanDir())) { _v$2 = false; $s = 16; continue s; }
_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; }
_v$2 = _r$2; case 16:
$s = -1; return _v$2;
/* } else if (_1 === (19)) { */ case 4:
t = (T.kindType);
v = (V.kindType);
if (!((t.outCount === v.outCount)) || !((t.inCount === v.inCount))) {
$s = -1; return false;
}
i = 0;
/* while (true) { */ case 18:
/* if (!(i < t.rtype.NumIn())) { break; } */ if(!(i < t.rtype.NumIn())) { $s = 19; continue; }
_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; }
/* */ if (!_r$3) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if (!_r$3) { */ case 20:
$s = -1; return false;
/* } */ case 21:
i = i + (1) >> 0;
/* } */ $s = 18; continue; case 19:
i$1 = 0;
/* while (true) { */ case 23:
/* if (!(i$1 < t.rtype.NumOut())) { break; } */ if(!(i$1 < t.rtype.NumOut())) { $s = 24; continue; }
_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; }
/* */ if (!_r$4) { $s = 25; continue; }
/* */ $s = 26; continue;
/* if (!_r$4) { */ case 25:
$s = -1; return false;
/* } */ case 26:
i$1 = i$1 + (1) >> 0;
/* } */ $s = 23; continue; case 24:
$s = -1; return true;
/* } else if (_1 === (20)) { */ case 5:
t$1 = (T.kindType);
v$1 = (V.kindType);
if ((t$1.methods.$length === 0) && (v$1.methods.$length === 0)) {
$s = -1; return true;
}
$s = -1; return false;
/* } else if (_1 === (21)) { */ case 6:
_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; }
if (!(_r$5)) { _v$3 = false; $s = 28; continue s; }
_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; }
_v$3 = _r$6; case 28:
$s = -1; return _v$3;
/* } else if ((_1 === (22)) || (_1 === (23))) { */ case 7:
_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; }
$s = -1; return _r$7;
/* } else if (_1 === (25)) { */ case 8:
t$2 = (T.kindType);
v$2 = (V.kindType);
if (!((t$2.fields.$length === v$2.fields.$length))) {
$s = -1; return false;
}
_ref = t$2.fields;
_i = 0;
/* while (true) { */ case 32:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 33; continue; }
i$2 = _i;
tf = (x = t$2.fields, ((i$2 < 0 || i$2 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i$2]));
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]));
if (!($clone(tf.name, name).name() === $clone(vf.name, name).name())) {
$s = -1; return false;
}
_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; }
/* */ if (!_r$8) { $s = 34; continue; }
/* */ $s = 35; continue;
/* if (!_r$8) { */ case 34:
$s = -1; return false;
/* } */ case 35:
if (cmpTags && !($clone(tf.name, name).tag() === $clone(vf.name, name).tag())) {
$s = -1; return false;
}
if (!((tf.offset === vf.offset))) {
$s = -1; return false;
}
if (!$clone(tf.name, name).isExported()) {
tp = $clone(tf.name, name).pkgPath();
if (tp === "") {
tp = $clone(t$2.pkgPath, name).name();
}
vp = $clone(vf.name, name).pkgPath();
if (vp === "") {
vp = $clone(v$2.pkgPath, name).name();
}
if (!(tp === vp)) {
$s = -1; return false;
}
}
_i++;
/* } */ $s = 32; continue; case 33:
$s = -1; return true;
/* } */ case 9:
case 1:
$s = -1; return false;
/* */ } return; } if ($f === undefined) { $f = { $blk: haveIdenticalUnderlyingType }; } $f.$ptr = $ptr; $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.tp = tp; $f.v = v; $f.v$1 = v$1; $f.v$2 = v$2; $f.vf = vf; $f.vp = vp; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
};
toType = function(t) {
var $ptr, t;
if (t === ptrType$1.nil) {
return $ifaceNil;
}
return t;
};
ifaceIndir = function(t) {
var $ptr, t;
return ((t.kind & 32) >>> 0) === 0;
};
flag.prototype.kind = function() {
var $ptr, f;
f = this.$val;
return ((((f & 31) >>> 0) >>> 0));
};
$ptrType(flag).prototype.kind = function() { return new flag(this.$get()).kind(); };
Value.ptr.prototype.pointer = function() {
var $ptr, v;
v = this;
if (!((v.typ.size === 4)) || !v.typ.pointers()) {
$panic(new $String("can't call pointer on a non-pointer Value"));
}
if (!((((v.flag & 128) >>> 0) === 0))) {
return (v.ptr).$get();
}
return v.ptr;
};
Value.prototype.pointer = function() { return this.$val.pointer(); };
ValueError.ptr.prototype.Error = function() {
var $ptr, e;
e = this;
if (e.Kind === 0) {
return "reflect: call of " + e.Method + " on zero Value";
}
return "reflect: call of " + e.Method + " on " + new Kind(e.Kind).String() + " Value";
};
ValueError.prototype.Error = function() { return this.$val.Error(); };
flag.prototype.mustBe = function(expected) {
var $ptr, expected, f;
f = this.$val;
if (!((new flag(f).kind() === expected))) {
$panic(new ValueError.ptr(methodName(), new flag(f).kind()));
}
};
$ptrType(flag).prototype.mustBe = function(expected) { return new flag(this.$get()).mustBe(expected); };
flag.prototype.mustBeExported = function() {
var $ptr, f;
f = this.$val;
if (f === 0) {
$panic(new ValueError.ptr(methodName(), 0));
}
if (!((((f & 96) >>> 0) === 0))) {
$panic(new $String("reflect: " + methodName() + " using value obtained using unexported field"));
}
};
$ptrType(flag).prototype.mustBeExported = function() { return new flag(this.$get()).mustBeExported(); };
flag.prototype.mustBeAssignable = function() {
var $ptr, f;
f = this.$val;
if (f === 0) {
$panic(new ValueError.ptr(methodName(), 0));
}
if (!((((f & 96) >>> 0) === 0))) {
$panic(new $String("reflect: " + methodName() + " using value obtained using unexported field"));
}
if (((f & 256) >>> 0) === 0) {
$panic(new $String("reflect: " + methodName() + " using unaddressable value"));
}
};
$ptrType(flag).prototype.mustBeAssignable = function() { return new flag(this.$get()).mustBeAssignable(); };
Value.ptr.prototype.Addr = function() {
var $ptr, v;
v = this;
if (((v.flag & 256) >>> 0) === 0) {
$panic(new $String("reflect.Value.Addr of unaddressable value"));
}
return new Value.ptr(v.typ.ptrTo(), v.ptr, ((((v.flag & 96) >>> 0)) | 22) >>> 0);
};
Value.prototype.Addr = function() { return this.$val.Addr(); };
Value.ptr.prototype.Bool = function() {
var $ptr, v;
v = this;
new flag(v.flag).mustBe(1);
return (v.ptr).$get();
};
Value.prototype.Bool = function() { return this.$val.Bool(); };
Value.ptr.prototype.Bytes = function() {
var $ptr, _r, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
v = this;
new flag(v.flag).mustBe(23);
_r = v.typ.Elem().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (!((_r === 8))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!((_r === 8))) { */ case 1:
$panic(new $String("reflect.Value.Bytes of non-byte slice"));
/* } */ case 2:
$s = -1; return (v.ptr).$get();
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Bytes }; } $f.$ptr = $ptr; $f._r = _r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
Value.prototype.Bytes = function() { return this.$val.Bytes(); };
Value.ptr.prototype.runes = function() {
var $ptr, _r, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
v = this;
new flag(v.flag).mustBe(23);
_r = v.typ.Elem().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (!((_r === 5))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!((_r === 5))) { */ case 1:
$panic(new $String("reflect.Value.Bytes of non-rune slice"));
/* } */ case 2:
$s = -1; return (v.ptr).$get();
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.runes }; } $f.$ptr = $ptr; $f._r = _r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
Value.prototype.runes = function() { return this.$val.runes(); };
Value.ptr.prototype.CanAddr = function() {
var $ptr, v;
v = this;
return !((((v.flag & 256) >>> 0) === 0));
};
Value.prototype.CanAddr = function() { return this.$val.CanAddr(); };
Value.ptr.prototype.CanSet = function() {
var $ptr, v;
v = this;
return ((v.flag & 352) >>> 0) === 256;
};
Value.prototype.CanSet = function() { return this.$val.CanSet(); };
Value.ptr.prototype.Call = function(in$1) {
var $ptr, _r, in$1, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; in$1 = $f.in$1; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
v = this;
new flag(v.flag).mustBe(19);
new flag(v.flag).mustBeExported();
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Call }; } $f.$ptr = $ptr; $f._r = _r; $f.in$1 = in$1; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
Value.prototype.Call = function(in$1) { return this.$val.Call(in$1); };
Value.ptr.prototype.CallSlice = function(in$1) {
var $ptr, _r, in$1, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; in$1 = $f.in$1; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
v = this;
new flag(v.flag).mustBe(19);
new flag(v.flag).mustBeExported();
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.CallSlice }; } $f.$ptr = $ptr; $f._r = _r; $f.in$1 = in$1; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
Value.prototype.CallSlice = function(in$1) { return this.$val.CallSlice(in$1); };
Value.ptr.prototype.Complex = function() {
var $ptr, _1, k, v, x;
v = this;
k = new flag(v.flag).kind();
_1 = k;
if (_1 === (15)) {
return ((x = (v.ptr).$get(), new $Complex128(x.$real, x.$imag)));
} else if (_1 === (16)) {
return (v.ptr).$get();
}
$panic(new ValueError.ptr("reflect.Value.Complex", new flag(v.flag).kind()));
};
Value.prototype.Complex = function() { return this.$val.Complex(); };
Value.ptr.prototype.FieldByIndex = function(index) {
var $ptr, _i, _r, _r$1, _r$2, _r$3, _ref, _v, i, index, v, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
v = this;
/* */ if (index.$length === 1) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (index.$length === 1) { */ case 1:
_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; }
$s = -1; return _r;
/* } */ case 2:
new flag(v.flag).mustBe(25);
_ref = index;
_i = 0;
/* while (true) { */ case 4:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; }
i = _i;
x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
/* */ if (i > 0) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (i > 0) { */ case 6:
if (!($clone(v, Value).Kind() === 22)) { _v = false; $s = 10; continue s; }
_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; }
_v = _r$1 === 25; case 10:
/* */ if (_v) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (_v) { */ case 8:
if ($clone(v, Value).IsNil()) {
$panic(new $String("reflect: indirection through nil pointer to embedded struct"));
}
_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; }
v = _r$2;
/* } */ case 9:
/* } */ case 7:
_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; }
v = _r$3;
_i++;
/* } */ $s = 4; continue; case 5:
$s = -1; return v;
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.FieldByIndex }; } $f.$ptr = $ptr; $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;
};
Value.prototype.FieldByIndex = function(index) { return this.$val.FieldByIndex(index); };
Value.ptr.prototype.FieldByName = function(name$1) {
var $ptr, _r, _r$1, _tuple, f, name$1, ok, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
v = this;
new flag(v.flag).mustBe(25);
_r = v.typ.FieldByName(name$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
f = $clone(_tuple[0], StructField);
ok = _tuple[1];
/* */ if (ok) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (ok) { */ case 2:
_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; }
$s = -1; return _r$1;
/* } */ case 3:
$s = -1; return new Value.ptr(ptrType$1.nil, 0, 0);
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.FieldByName }; } $f.$ptr = $ptr; $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;
};
Value.prototype.FieldByName = function(name$1) { return this.$val.FieldByName(name$1); };
Value.ptr.prototype.FieldByNameFunc = function(match) {
var $ptr, _r, _r$1, _tuple, f, match, ok, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
v = this;
_r = v.typ.FieldByNameFunc(match); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
f = $clone(_tuple[0], StructField);
ok = _tuple[1];
/* */ if (ok) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (ok) { */ case 2:
_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; }
$s = -1; return _r$1;
/* } */ case 3:
$s = -1; return new Value.ptr(ptrType$1.nil, 0, 0);
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.FieldByNameFunc }; } $f.$ptr = $ptr; $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;
};
Value.prototype.FieldByNameFunc = function(match) { return this.$val.FieldByNameFunc(match); };
Value.ptr.prototype.Float = function() {
var $ptr, _1, k, v;
v = this;
k = new flag(v.flag).kind();
_1 = k;
if (_1 === (13)) {
return ((v.ptr).$get());
} else if (_1 === (14)) {
return (v.ptr).$get();
}
$panic(new ValueError.ptr("reflect.Value.Float", new flag(v.flag).kind()));
};
Value.prototype.Float = function() { return this.$val.Float(); };
Value.ptr.prototype.Int = function() {
var $ptr, _1, k, p, v;
v = this;
k = new flag(v.flag).kind();
p = v.ptr;
_1 = k;
if (_1 === (2)) {
return (new $Int64(0, (p).$get()));
} else if (_1 === (3)) {
return (new $Int64(0, (p).$get()));
} else if (_1 === (4)) {
return (new $Int64(0, (p).$get()));
} else if (_1 === (5)) {
return (new $Int64(0, (p).$get()));
} else if (_1 === (6)) {
return (p).$get();
}
$panic(new ValueError.ptr("reflect.Value.Int", new flag(v.flag).kind()));
};
Value.prototype.Int = function() { return this.$val.Int(); };
Value.ptr.prototype.CanInterface = function() {
var $ptr, v;
v = this;
if (v.flag === 0) {
$panic(new ValueError.ptr("reflect.Value.CanInterface", 0));
}
return ((v.flag & 96) >>> 0) === 0;
};
Value.prototype.CanInterface = function() { return this.$val.CanInterface(); };
Value.ptr.prototype.Interface = function() {
var $ptr, _r, i, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; i = $f.i; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
i = $ifaceNil;
v = this;
_r = valueInterface($clone(v, Value), true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
i = _r;
$s = -1; return i;
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Interface }; } $f.$ptr = $ptr; $f._r = _r; $f.i = i; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
Value.prototype.Interface = function() { return this.$val.Interface(); };
Value.ptr.prototype.IsValid = function() {
var $ptr, v;
v = this;
return !((v.flag === 0));
};
Value.prototype.IsValid = function() { return this.$val.IsValid(); };
Value.ptr.prototype.Kind = function() {
var $ptr, v;
v = this;
return new flag(v.flag).kind();
};
Value.prototype.Kind = function() { return this.$val.Kind(); };
Value.ptr.prototype.MapIndex = function(key) {
var $ptr, _r, c, e, fl, k, key, tt, typ, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
v = this;
new flag(v.flag).mustBe(21);
tt = (v.typ.kindType);
_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; }
key = _r;
k = 0;
if (!((((key.flag & 128) >>> 0) === 0))) {
k = key.ptr;
} else {
k = ((key.$ptr_ptr || (key.$ptr_ptr = new ptrType$16(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, key))));
}
e = mapaccess(v.typ, $clone(v, Value).pointer(), k);
if (e === 0) {
$s = -1; return new Value.ptr(ptrType$1.nil, 0, 0);
}
typ = tt.elem;
fl = ((((v.flag | key.flag) >>> 0)) & 96) >>> 0;
fl = (fl | (((typ.Kind() >>> 0)))) >>> 0;
if (ifaceIndir(typ)) {
c = unsafe_New(typ);
typedmemmove(typ, c, e);
$s = -1; return new Value.ptr(typ, c, (fl | 128) >>> 0);
} else {
$s = -1; return new Value.ptr(typ, (e).$get(), fl);
}
$s = -1; return new Value.ptr(ptrType$1.nil, 0, 0);
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.MapIndex }; } $f.$ptr = $ptr; $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;
};
Value.prototype.MapIndex = function(key) { return this.$val.MapIndex(key); };
Value.ptr.prototype.MapKeys = function() {
var $ptr, _r, a, c, fl, i, it, key, keyType, m, mlen, tt, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
v = this;
new flag(v.flag).mustBe(21);
tt = (v.typ.kindType);
keyType = tt.key;
fl = (((v.flag & 96) >>> 0) | ((keyType.Kind() >>> 0))) >>> 0;
m = $clone(v, Value).pointer();
mlen = 0;
if (!(m === 0)) {
mlen = maplen(m);
}
it = mapiterinit(v.typ, m);
a = $makeSlice(sliceType$10, mlen);
i = 0;
i = 0;
/* while (true) { */ case 1:
/* if (!(i < a.$length)) { break; } */ if(!(i < a.$length)) { $s = 2; continue; }
_r = mapiterkey(it); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
key = _r;
if (key === 0) {
/* break; */ $s = 2; continue;
}
if (ifaceIndir(keyType)) {
c = unsafe_New(keyType);
typedmemmove(keyType, c, key);
((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = new Value.ptr(keyType, c, (fl | 128) >>> 0));
} else {
((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = new Value.ptr(keyType, (key).$get(), fl));
}
mapiternext(it);
i = i + (1) >> 0;
/* } */ $s = 1; continue; case 2:
$s = -1; return $subslice(a, 0, i);
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.MapKeys }; } $f.$ptr = $ptr; $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;
};
Value.prototype.MapKeys = function() { return this.$val.MapKeys(); };
Value.ptr.prototype.Method = function(i) {
var $ptr, _r, _v, fl, i, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
v = this;
if (v.typ === ptrType$1.nil) {
$panic(new ValueError.ptr("reflect.Value.Method", 0));
}
if (!((((v.flag & 512) >>> 0) === 0))) { _v = true; $s = 3; continue s; }
_r = v.typ.NumMethod(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_v = ((i >>> 0)) >= ((_r >>> 0)); case 3:
/* */ if (_v) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (_v) { */ case 1:
$panic(new $String("reflect: Method index out of range"));
/* } */ case 2:
if ((v.typ.Kind() === 20) && $clone(v, Value).IsNil()) {
$panic(new $String("reflect: Method on nil interface value"));
}
fl = (v.flag & 160) >>> 0;
fl = (fl | (19)) >>> 0;
fl = (fl | ((((((i >>> 0)) << 10 >>> 0) | 512) >>> 0))) >>> 0;
$s = -1; return new Value.ptr(v.typ, v.ptr, fl);
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Method }; } $f.$ptr = $ptr; $f._r = _r; $f._v = _v; $f.fl = fl; $f.i = i; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
Value.prototype.Method = function(i) { return this.$val.Method(i); };
Value.ptr.prototype.NumMethod = function() {
var $ptr, _r, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
v = this;
if (v.typ === ptrType$1.nil) {
$panic(new ValueError.ptr("reflect.Value.NumMethod", 0));
}
if (!((((v.flag & 512) >>> 0) === 0))) {
$s = -1; return 0;
}
_r = v.typ.NumMethod(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.NumMethod }; } $f.$ptr = $ptr; $f._r = _r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
Value.prototype.NumMethod = function() { return this.$val.NumMethod(); };
Value.ptr.prototype.MethodByName = function(name$1) {
var $ptr, _r, _r$1, _tuple, m, name$1, ok, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
v = this;
if (v.typ === ptrType$1.nil) {
$panic(new ValueError.ptr("reflect.Value.MethodByName", 0));
}
if (!((((v.flag & 512) >>> 0) === 0))) {
$s = -1; return new Value.ptr(ptrType$1.nil, 0, 0);
}
_r = v.typ.MethodByName(name$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
m = $clone(_tuple[0], Method);
ok = _tuple[1];
if (!ok) {
$s = -1; return new Value.ptr(ptrType$1.nil, 0, 0);
}
_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; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.MethodByName }; } $f.$ptr = $ptr; $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;
};
Value.prototype.MethodByName = function(name$1) { return this.$val.MethodByName(name$1); };
Value.ptr.prototype.NumField = function() {
var $ptr, tt, v;
v = this;
new flag(v.flag).mustBe(25);
tt = (v.typ.kindType);
return tt.fields.$length;
};
Value.prototype.NumField = function() { return this.$val.NumField(); };
Value.ptr.prototype.OverflowComplex = function(x) {
var $ptr, _1, k, v, x;
v = this;
k = new flag(v.flag).kind();
_1 = k;
if (_1 === (15)) {
return overflowFloat32(x.$real) || overflowFloat32(x.$imag);
} else if (_1 === (16)) {
return false;
}
$panic(new ValueError.ptr("reflect.Value.OverflowComplex", new flag(v.flag).kind()));
};
Value.prototype.OverflowComplex = function(x) { return this.$val.OverflowComplex(x); };
Value.ptr.prototype.OverflowFloat = function(x) {
var $ptr, _1, k, v, x;
v = this;
k = new flag(v.flag).kind();
_1 = k;
if (_1 === (13)) {
return overflowFloat32(x);
} else if (_1 === (14)) {
return false;
}
$panic(new ValueError.ptr("reflect.Value.OverflowFloat", new flag(v.flag).kind()));
};
Value.prototype.OverflowFloat = function(x) { return this.$val.OverflowFloat(x); };
overflowFloat32 = function(x) {
var $ptr, x;
if (x < 0) {
x = -x;
}
return 3.4028234663852886e+38 < x && x <= 1.7976931348623157e+308;
};
Value.ptr.prototype.OverflowInt = function(x) {
var $ptr, _1, bitSize, k, trunc, v, x;
v = this;
k = new flag(v.flag).kind();
_1 = k;
if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) {
bitSize = $imul(v.typ.size, 8) >>> 0;
trunc = $shiftRightInt64(($shiftLeft64(x, ((64 - bitSize >>> 0)))), ((64 - bitSize >>> 0)));
return !((x.$high === trunc.$high && x.$low === trunc.$low));
}
$panic(new ValueError.ptr("reflect.Value.OverflowInt", new flag(v.flag).kind()));
};
Value.prototype.OverflowInt = function(x) { return this.$val.OverflowInt(x); };
Value.ptr.prototype.OverflowUint = function(x) {
var $ptr, _1, bitSize, k, trunc, v, x;
v = this;
k = new flag(v.flag).kind();
_1 = k;
if ((_1 === (7)) || (_1 === (12)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11))) {
bitSize = $imul(v.typ.size, 8) >>> 0;
trunc = $shiftRightUint64(($shiftLeft64(x, ((64 - bitSize >>> 0)))), ((64 - bitSize >>> 0)));
return !((x.$high === trunc.$high && x.$low === trunc.$low));
}
$panic(new ValueError.ptr("reflect.Value.OverflowUint", new flag(v.flag).kind()));
};
Value.prototype.OverflowUint = function(x) { return this.$val.OverflowUint(x); };
Value.ptr.prototype.Recv = function() {
var $ptr, _r, _tuple, ok, v, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
x = new Value.ptr(ptrType$1.nil, 0, 0);
ok = false;
v = this;
new flag(v.flag).mustBe(18);
new flag(v.flag).mustBeExported();
_r = $clone(v, Value).recv(false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
x = _tuple[0];
ok = _tuple[1];
$s = -1; return [x, ok];
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Recv }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.ok = ok; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
Value.prototype.Recv = function() { return this.$val.Recv(); };
Value.ptr.prototype.recv = function(nb) {
var $ptr, _r, _tuple, nb, ok, p, selected, t, tt, v, val, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
val = new Value.ptr(ptrType$1.nil, 0, 0);
ok = false;
v = this;
tt = (v.typ.kindType);
if ((((tt.dir >> 0)) & 1) === 0) {
$panic(new $String("reflect: recv on send-only channel"));
}
t = tt.elem;
val = new Value.ptr(t, 0, ((t.Kind() >>> 0)));
p = 0;
if (ifaceIndir(t)) {
p = unsafe_New(t);
val.ptr = p;
val.flag = (val.flag | (128)) >>> 0;
} else {
p = ((val.$ptr_ptr || (val.$ptr_ptr = new ptrType$16(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, val))));
}
_r = chanrecv(v.typ, $clone(v, Value).pointer(), nb, p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
selected = _tuple[0];
ok = _tuple[1];
if (!selected) {
val = new Value.ptr(ptrType$1.nil, 0, 0);
}
$s = -1; return [val, ok];
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.recv }; } $f.$ptr = $ptr; $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;
};
Value.prototype.recv = function(nb) { return this.$val.recv(nb); };
Value.ptr.prototype.Send = function(x) {
var $ptr, _r, v, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
v = this;
new flag(v.flag).mustBe(18);
new flag(v.flag).mustBeExported();
_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; }
_r;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Send }; } $f.$ptr = $ptr; $f._r = _r; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
Value.prototype.Send = function(x) { return this.$val.Send(x); };
Value.ptr.prototype.send = function(x, nb) {
var $ptr, _r, _r$1, nb, p, selected, tt, v, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
selected = false;
v = this;
tt = (v.typ.kindType);
if ((((tt.dir >> 0)) & 2) === 0) {
$panic(new $String("reflect: send on recv-only channel"));
}
new flag(x.flag).mustBeExported();
_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; }
x = _r;
p = 0;
if (!((((x.flag & 128) >>> 0) === 0))) {
p = x.ptr;
} else {
p = ((x.$ptr_ptr || (x.$ptr_ptr = new ptrType$16(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, x))));
}
_r$1 = chansend(v.typ, $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; }
selected = _r$1;
$s = -1; return selected;
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.send }; } $f.$ptr = $ptr; $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;
};
Value.prototype.send = function(x, nb) { return this.$val.send(x, nb); };
Value.ptr.prototype.SetBool = function(x) {
var $ptr, v, x;
v = this;
new flag(v.flag).mustBeAssignable();
new flag(v.flag).mustBe(1);
(v.ptr).$set(x);
};
Value.prototype.SetBool = function(x) { return this.$val.SetBool(x); };
Value.ptr.prototype.setRunes = function(x) {
var $ptr, _r, v, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
v = this;
new flag(v.flag).mustBeAssignable();
new flag(v.flag).mustBe(23);
_r = v.typ.Elem().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (!((_r === 5))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!((_r === 5))) { */ case 1:
$panic(new $String("reflect.Value.setRunes of non-rune slice"));
/* } */ case 2:
(v.ptr).$set(x);
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.setRunes }; } $f.$ptr = $ptr; $f._r = _r; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
Value.prototype.setRunes = function(x) { return this.$val.setRunes(x); };
Value.ptr.prototype.SetComplex = function(x) {
var $ptr, _1, k, v, x;
v = this;
new flag(v.flag).mustBeAssignable();
k = new flag(v.flag).kind();
_1 = k;
if (_1 === (15)) {
(v.ptr).$set((new $Complex64(x.$real, x.$imag)));
} else if (_1 === (16)) {
(v.ptr).$set(x);
} else {
$panic(new ValueError.ptr("reflect.Value.SetComplex", new flag(v.flag).kind()));
}
};
Value.prototype.SetComplex = function(x) { return this.$val.SetComplex(x); };
Value.ptr.prototype.SetFloat = function(x) {
var $ptr, _1, k, v, x;
v = this;
new flag(v.flag).mustBeAssignable();
k = new flag(v.flag).kind();
_1 = k;
if (_1 === (13)) {
(v.ptr).$set(($fround(x)));
} else if (_1 === (14)) {
(v.ptr).$set(x);
} else {
$panic(new ValueError.ptr("reflect.Value.SetFloat", new flag(v.flag).kind()));
}
};
Value.prototype.SetFloat = function(x) { return this.$val.SetFloat(x); };
Value.ptr.prototype.SetInt = function(x) {
var $ptr, _1, k, v, x;
v = this;
new flag(v.flag).mustBeAssignable();
k = new flag(v.flag).kind();
_1 = k;
if (_1 === (2)) {
(v.ptr).$set((((x.$low + ((x.$high >> 31) * 4294967296)) >> 0)));
} else if (_1 === (3)) {
(v.ptr).$set((((x.$low + ((x.$high >> 31) * 4294967296)) << 24 >> 24)));
} else if (_1 === (4)) {
(v.ptr).$set((((x.$low + ((x.$high >> 31) * 4294967296)) << 16 >> 16)));
} else if (_1 === (5)) {
(v.ptr).$set((((x.$low + ((x.$high >> 31) * 4294967296)) >> 0)));
} else if (_1 === (6)) {
(v.ptr).$set(x);
} else {
$panic(new ValueError.ptr("reflect.Value.SetInt", new flag(v.flag).kind()));
}
};
Value.prototype.SetInt = function(x) { return this.$val.SetInt(x); };
Value.ptr.prototype.SetMapIndex = function(key, val) {
var $ptr, _r, _r$1, e, k, key, tt, v, val, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
v = this;
new flag(v.flag).mustBe(21);
new flag(v.flag).mustBeExported();
new flag(key.flag).mustBeExported();
tt = (v.typ.kindType);
_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; }
key = _r;
k = 0;
if (!((((key.flag & 128) >>> 0) === 0))) {
k = key.ptr;
} else {
k = ((key.$ptr_ptr || (key.$ptr_ptr = new ptrType$16(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, key))));
}
if (val.typ === ptrType$1.nil) {
mapdelete(v.typ, $clone(v, Value).pointer(), k);
$s = -1; return;
}
new flag(val.flag).mustBeExported();
_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; }
val = _r$1;
e = 0;
if (!((((val.flag & 128) >>> 0) === 0))) {
e = val.ptr;
} else {
e = ((val.$ptr_ptr || (val.$ptr_ptr = new ptrType$16(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, val))));
}
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.SetMapIndex }; } $f.$ptr = $ptr; $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;
};
Value.prototype.SetMapIndex = function(key, val) { return this.$val.SetMapIndex(key, val); };
Value.ptr.prototype.SetUint = function(x) {
var $ptr, _1, k, v, x;
v = this;
new flag(v.flag).mustBeAssignable();
k = new flag(v.flag).kind();
_1 = k;
if (_1 === (7)) {
(v.ptr).$set(((x.$low >>> 0)));
} else if (_1 === (8)) {
(v.ptr).$set(((x.$low << 24 >>> 24)));
} else if (_1 === (9)) {
(v.ptr).$set(((x.$low << 16 >>> 16)));
} else if (_1 === (10)) {
(v.ptr).$set(((x.$low >>> 0)));
} else if (_1 === (11)) {
(v.ptr).$set(x);
} else if (_1 === (12)) {
(v.ptr).$set(((x.$low >>> 0)));
} else {
$panic(new ValueError.ptr("reflect.Value.SetUint", new flag(v.flag).kind()));
}
};
Value.prototype.SetUint = function(x) { return this.$val.SetUint(x); };
Value.ptr.prototype.SetPointer = function(x) {
var $ptr, v, x;
v = this;
new flag(v.flag).mustBeAssignable();
new flag(v.flag).mustBe(26);
(v.ptr).$set(x);
};
Value.prototype.SetPointer = function(x) { return this.$val.SetPointer(x); };
Value.ptr.prototype.SetString = function(x) {
var $ptr, v, x;
v = this;
new flag(v.flag).mustBeAssignable();
new flag(v.flag).mustBe(24);
(v.ptr).$set(x);
};
Value.prototype.SetString = function(x) { return this.$val.SetString(x); };
Value.ptr.prototype.String = function() {
var $ptr, _1, _r, k, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _r = $f._r; k = $f.k; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
v = this;
k = new flag(v.flag).kind();
_1 = k;
if (_1 === (0)) {
$s = -1; return "<invalid Value>";
} else if (_1 === (24)) {
$s = -1; return (v.ptr).$get();
}
_r = $clone(v, Value).Type().String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return "<" + _r + " Value>";
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.String }; } $f.$ptr = $ptr; $f._1 = _1; $f._r = _r; $f.k = k; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
Value.prototype.String = function() { return this.$val.String(); };
Value.ptr.prototype.TryRecv = function() {
var $ptr, _r, _tuple, ok, v, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
x = new Value.ptr(ptrType$1.nil, 0, 0);
ok = false;
v = this;
new flag(v.flag).mustBe(18);
new flag(v.flag).mustBeExported();
_r = $clone(v, Value).recv(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
x = _tuple[0];
ok = _tuple[1];
$s = -1; return [x, ok];
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.TryRecv }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.ok = ok; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
Value.prototype.TryRecv = function() { return this.$val.TryRecv(); };
Value.ptr.prototype.TrySend = function(x) {
var $ptr, _r, v, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
v = this;
new flag(v.flag).mustBe(18);
new flag(v.flag).mustBeExported();
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.TrySend }; } $f.$ptr = $ptr; $f._r = _r; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
Value.prototype.TrySend = function(x) { return this.$val.TrySend(x); };
Value.ptr.prototype.Type = function() {
var $ptr, f, i, m, m$1, tt, ut, v, x, x$1;
v = this;
f = v.flag;
if (f === 0) {
$panic(new ValueError.ptr("reflect.Value.Type", 0));
}
if (((f & 512) >>> 0) === 0) {
return v.typ;
}
i = ((v.flag >> 0)) >> 10 >> 0;
if (v.typ.Kind() === 20) {
tt = (v.typ.kindType);
if (((i >>> 0)) >= ((tt.methods.$length >>> 0))) {
$panic(new $String("reflect: internal error: invalid method index"));
}
m = (x = tt.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
return v.typ.typeOff(m.typ);
}
ut = v.typ.uncommon();
if (ut === ptrType$6.nil || ((i >>> 0)) >= ((ut.mcount >>> 0))) {
$panic(new $String("reflect: internal error: invalid method index"));
}
m$1 = $clone((x$1 = ut.methods(), ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])), method);
return v.typ.typeOff(m$1.mtyp);
};
Value.prototype.Type = function() { return this.$val.Type(); };
Value.ptr.prototype.Uint = function() {
var $ptr, _1, k, p, v, x;
v = this;
k = new flag(v.flag).kind();
p = v.ptr;
_1 = k;
if (_1 === (7)) {
return (new $Uint64(0, (p).$get()));
} else if (_1 === (8)) {
return (new $Uint64(0, (p).$get()));
} else if (_1 === (9)) {
return (new $Uint64(0, (p).$get()));
} else if (_1 === (10)) {
return (new $Uint64(0, (p).$get()));
} else if (_1 === (11)) {
return (p).$get();
} else if (_1 === (12)) {
return ((x = (p).$get(), new $Uint64(0, x.constructor === Number ? x : 1)));
}
$panic(new ValueError.ptr("reflect.Value.Uint", new flag(v.flag).kind()));
};
Value.prototype.Uint = function() { return this.$val.Uint(); };
Value.ptr.prototype.UnsafeAddr = function() {
var $ptr, v;
v = this;
if (v.typ === ptrType$1.nil) {
$panic(new ValueError.ptr("reflect.Value.UnsafeAddr", 0));
}
if (((v.flag & 256) >>> 0) === 0) {
$panic(new $String("reflect.Value.UnsafeAddr of unaddressable value"));
}
return (v.ptr);
};
Value.prototype.UnsafeAddr = function() { return this.$val.UnsafeAddr(); };
typesMustMatch = function(what, t1, t2) {
var $ptr, _r, _r$1, t1, t2, what, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
/* */ if (!($interfaceIsEqual(t1, t2))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!($interfaceIsEqual(t1, t2))) { */ case 1:
_r = t1.String(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_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; }
$panic(new $String(what + ": " + _r + " != " + _r$1));
/* } */ case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: typesMustMatch }; } $f.$ptr = $ptr; $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;
};
MakeMap = function(typ) {
var $ptr, _r, _r$1, m, typ, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; m = $f.m; typ = $f.typ; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = typ.Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (!((_r === 21))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!((_r === 21))) { */ case 1:
$panic(new $String("reflect.MakeMap of non-map type"));
/* } */ case 2:
m = makemap($assertType(typ, ptrType$1));
_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; }
$s = -1; return new Value.ptr(_r$1, m, 21);
/* */ } return; } if ($f === undefined) { $f = { $blk: MakeMap }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.m = m; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.MakeMap = MakeMap;
New = function(typ) {
var $ptr, _r, _r$1, fl, ptr, typ, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
if ($interfaceIsEqual(typ, $ifaceNil)) {
$panic(new $String("reflect: New(nil)"));
}
ptr = unsafe_New($assertType(typ, ptrType$1));
fl = 22;
_r = typ.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_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; }
$s = -1; return new Value.ptr(_r$1, ptr, fl);
/* */ } return; } if ($f === undefined) { $f = { $blk: New }; } $f.$ptr = $ptr; $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;
};
$pkg.New = New;
Value.ptr.prototype.assignTo = function(context, dst, target) {
var $ptr, _r, _r$1, _r$2, _r$3, context, dst, fl, target, v, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
v = this;
/* */ if (!((((v.flag & 512) >>> 0) === 0))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!((((v.flag & 512) >>> 0) === 0))) { */ case 1:
_r = makeMethodValue(context, $clone(v, Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
v = _r;
/* } */ case 2:
_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; }
/* */ if (_r$1) { $s = 5; continue; }
/* */ if (implements$1(dst, v.typ)) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (_r$1) { */ case 5:
v.typ = dst;
fl = (v.flag & 480) >>> 0;
fl = (fl | (((dst.Kind() >>> 0)))) >>> 0;
$s = -1; return new Value.ptr(dst, v.ptr, fl);
/* } else if (implements$1(dst, v.typ)) { */ case 6:
if (target === 0) {
target = unsafe_New(dst);
}
_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; }
x = _r$2;
_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; }
/* */ if (_r$3 === 0) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (_r$3 === 0) { */ case 10:
(target).$set(x);
$s = 12; continue;
/* } else { */ case 11:
ifaceE2I(dst, x, target);
/* } */ case 12:
$s = -1; return new Value.ptr(dst, target, 148);
/* } */ case 7:
case 4:
$panic(new $String(context + ": value of type " + v.typ.String() + " is not assignable to type " + dst.String()));
$s = -1; return new Value.ptr(ptrType$1.nil, 0, 0);
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.assignTo }; } $f.$ptr = $ptr; $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;
};
Value.prototype.assignTo = function(context, dst, target) { return this.$val.assignTo(context, dst, target); };
Value.ptr.prototype.Convert = function(t) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, op, t, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
v = this;
/* */ if (!((((v.flag & 512) >>> 0) === 0))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!((((v.flag & 512) >>> 0) === 0))) { */ case 1:
_r = makeMethodValue("Convert", $clone(v, Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
v = _r;
/* } */ case 2:
_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; }
_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; }
op = _r$2;
/* */ if (op === $throwNilPointerError) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (op === $throwNilPointerError) { */ case 6:
_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; }
$panic(new $String("reflect.Value.Convert: value of type " + v.typ.String() + " cannot be converted to type " + _r$3));
/* } */ case 7:
_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; }
$s = -1; return _r$4;
/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Convert }; } $f.$ptr = $ptr; $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;
};
Value.prototype.Convert = function(t) { return this.$val.Convert(t); };
convertOp = function(dst, src) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_1 = src.Kind();
/* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 2; continue; }
/* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { $s = 3; continue; }
/* */ if ((_1 === (13)) || (_1 === (14))) { $s = 4; continue; }
/* */ if ((_1 === (15)) || (_1 === (16))) { $s = 5; continue; }
/* */ if (_1 === (24)) { $s = 6; continue; }
/* */ if (_1 === (23)) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 2:
_2 = dst.Kind();
if ((_2 === (2)) || (_2 === (3)) || (_2 === (4)) || (_2 === (5)) || (_2 === (6)) || (_2 === (7)) || (_2 === (8)) || (_2 === (9)) || (_2 === (10)) || (_2 === (11)) || (_2 === (12))) {
$s = -1; return cvtInt;
} else if ((_2 === (13)) || (_2 === (14))) {
$s = -1; return cvtIntFloat;
} else if (_2 === (24)) {
$s = -1; return cvtIntString;
}
$s = 8; continue;
/* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { */ case 3:
_3 = dst.Kind();
if ((_3 === (2)) || (_3 === (3)) || (_3 === (4)) || (_3 === (5)) || (_3 === (6)) || (_3 === (7)) || (_3 === (8)) || (_3 === (9)) || (_3 === (10)) || (_3 === (11)) || (_3 === (12))) {
$s = -1; return cvtUint;
} else if ((_3 === (13)) || (_3 === (14))) {
$s = -1; return cvtUintFloat;
} else if (_3 === (24)) {
$s = -1; return cvtUintString;
}
$s = 8; continue;
/* } else if ((_1 === (13)) || (_1 === (14))) { */ case 4:
_4 = dst.Kind();
if ((_4 === (2)) || (_4 === (3)) || (_4 === (4)) || (_4 === (5)) || (_4 === (6))) {
$s = -1; return cvtFloatInt;
} else if ((_4 === (7)) || (_4 === (8)) || (_4 === (9)) || (_4 === (10)) || (_4 === (11)) || (_4 === (12))) {
$s = -1; return cvtFloatUint;
} else if ((_4 === (13)) || (_4 === (14))) {
$s = -1; return cvtFloat;
}
$s = 8; continue;
/* } else if ((_1 === (15)) || (_1 === (16))) { */ case 5:
_5 = dst.Kind();
if ((_5 === (15)) || (_5 === (16))) {
$s = -1; return cvtComplex;
}
$s = 8; continue;
/* } else if (_1 === (24)) { */ case 6:
if (!(dst.Kind() === 23)) { _v = false; $s = 11; continue s; }
_r = dst.Elem().PkgPath(); /* */ $s = 12; case 12: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_v = _r === ""; case 11:
/* */ if (_v) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (_v) { */ case 9:
_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; }
_6 = _r$1;
if (_6 === (8)) {
$s = -1; return cvtStringBytes;
} else if (_6 === (5)) {
$s = -1; return cvtStringRunes;
}
case 13:
/* } */ case 10:
$s = 8; continue;
/* } else if (_1 === (23)) { */ case 7:
if (!(dst.Kind() === 24)) { _v$1 = false; $s = 17; continue s; }
_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; }
_v$1 = _r$2 === ""; case 17:
/* */ if (_v$1) { $s = 15; continue; }
/* */ $s = 16; continue;
/* if (_v$1) { */ case 15:
_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; }
_7 = _r$3;
if (_7 === (8)) {
$s = -1; return cvtBytesString;
} else if (_7 === (5)) {
$s = -1; return cvtRunesString;
}
case 19:
/* } */ case 16:
/* } */ case 8:
case 1:
_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; }
/* */ if (_r$4) { $s = 21; continue; }
/* */ $s = 22; continue;
/* if (_r$4) { */ case 21:
$s = -1; return cvtDirect;
/* } */ case 22:
if (!((dst.Kind() === 22) && dst.Name() === "" && (src.Kind() === 22) && src.Name() === "")) { _v$2 = false; $s = 26; continue s; }
_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; }
_arg = _r$5;
_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; }
_arg$1 = _r$6;
_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; }
_v$2 = _r$7; case 26:
/* */ if (_v$2) { $s = 24; continue; }
/* */ $s = 25; continue;
/* if (_v$2) { */ case 24:
$s = -1; return cvtDirect;
/* } */ case 25:
if (implements$1(dst, src)) {
if (src.Kind() === 20) {
$s = -1; return cvtI2I;
}
$s = -1; return cvtT2I;
}
$s = -1; return $throwNilPointerError;
/* */ } return; } if ($f === undefined) { $f = { $blk: convertOp }; } $f.$ptr = $ptr; $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;
};
makeFloat = function(f, v, t) {
var $ptr, _1, _r, f, ptr, t, typ, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
typ = _r;
ptr = unsafe_New(typ);
_1 = typ.size;
if (_1 === (4)) {
(ptr).$set(($fround(v)));
} else if (_1 === (8)) {
(ptr).$set(v);
}
$s = -1; return new Value.ptr(typ, ptr, (((f | 128) >>> 0) | ((typ.Kind() >>> 0))) >>> 0);
/* */ } return; } if ($f === undefined) { $f = { $blk: makeFloat }; } $f.$ptr = $ptr; $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;
};
makeComplex = function(f, v, t) {
var $ptr, _1, _r, f, ptr, t, typ, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
typ = _r;
ptr = unsafe_New(typ);
_1 = typ.size;
if (_1 === (8)) {
(ptr).$set((new $Complex64(v.$real, v.$imag)));
} else if (_1 === (16)) {
(ptr).$set(v);
}
$s = -1; return new Value.ptr(typ, ptr, (((f | 128) >>> 0) | ((typ.Kind() >>> 0))) >>> 0);
/* */ } return; } if ($f === undefined) { $f = { $blk: makeComplex }; } $f.$ptr = $ptr; $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;
};
makeString = function(f, v, t) {
var $ptr, _r, _r$1, f, ret, t, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = New(t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_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; }
ret = _r$1;
$clone(ret, Value).SetString(v);
ret.flag = (((ret.flag & ~256) >>> 0) | f) >>> 0;
$s = -1; return ret;
/* */ } return; } if ($f === undefined) { $f = { $blk: makeString }; } $f.$ptr = $ptr; $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;
};
makeBytes = function(f, v, t) {
var $ptr, _r, _r$1, f, ret, t, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = New(t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_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; }
ret = _r$1;
$r = $clone(ret, Value).SetBytes(v); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
ret.flag = (((ret.flag & ~256) >>> 0) | f) >>> 0;
$s = -1; return ret;
/* */ } return; } if ($f === undefined) { $f = { $blk: makeBytes }; } $f.$ptr = $ptr; $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;
};
makeRunes = function(f, v, t) {
var $ptr, _r, _r$1, f, ret, t, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = New(t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_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; }
ret = _r$1;
$r = $clone(ret, Value).setRunes(v); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
ret.flag = (((ret.flag & ~256) >>> 0) | f) >>> 0;
$s = -1; return ret;
/* */ } return; } if ($f === undefined) { $f = { $blk: makeRunes }; } $f.$ptr = $ptr; $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;
};
cvtInt = function(v, t) {
var $ptr, _r, t, v, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = makeInt((v.flag & 96) >>> 0, ((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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: cvtInt }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
cvtUint = function(v, t) {
var $ptr, _r, t, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = makeInt((v.flag & 96) >>> 0, $clone(v, Value).Uint(), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: cvtUint }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
cvtFloatInt = function(v, t) {
var $ptr, _r, t, v, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = makeInt((v.flag & 96) >>> 0, ((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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: cvtFloatInt }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
cvtFloatUint = function(v, t) {
var $ptr, _r, t, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = makeInt((v.flag & 96) >>> 0, (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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: cvtFloatUint }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
cvtIntFloat = function(v, t) {
var $ptr, _r, t, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = makeFloat((v.flag & 96) >>> 0, ($flatten64($clone(v, Value).Int())), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: cvtIntFloat }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
cvtUintFloat = function(v, t) {
var $ptr, _r, t, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = makeFloat((v.flag & 96) >>> 0, ($flatten64($clone(v, Value).Uint())), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: cvtUintFloat }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
cvtFloat = function(v, t) {
var $ptr, _r, t, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = makeFloat((v.flag & 96) >>> 0, $clone(v, Value).Float(), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: cvtFloat }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
cvtComplex = function(v, t) {
var $ptr, _r, t, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = makeComplex((v.flag & 96) >>> 0, $clone(v, Value).Complex(), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: cvtComplex }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
cvtIntString = function(v, t) {
var $ptr, _r, t, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = makeString((v.flag & 96) >>> 0, ($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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: cvtIntString }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
cvtUintString = function(v, t) {
var $ptr, _r, t, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = makeString((v.flag & 96) >>> 0, ($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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: cvtUintString }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
cvtBytesString = function(v, t) {
var $ptr, _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_arg = (v.flag & 96) >>> 0;
_r = $clone(v, Value).Bytes(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_arg$1 = ($bytesToString(_r));
_arg$2 = t;
_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; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: cvtBytesString }; } $f.$ptr = $ptr; $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;
};
cvtStringBytes = function(v, t) {
var $ptr, _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_arg = (v.flag & 96) >>> 0;
_r = $clone(v, Value).String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_arg$1 = (new sliceType$16($stringToBytes(_r)));
_arg$2 = t;
_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; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: cvtStringBytes }; } $f.$ptr = $ptr; $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;
};
cvtRunesString = function(v, t) {
var $ptr, _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_arg = (v.flag & 96) >>> 0;
_r = $clone(v, Value).runes(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_arg$1 = ($runesToString(_r));
_arg$2 = t;
_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; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: cvtRunesString }; } $f.$ptr = $ptr; $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;
};
cvtStringRunes = function(v, t) {
var $ptr, _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_arg = (v.flag & 96) >>> 0;
_r = $clone(v, Value).String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_arg$1 = (new sliceType$18($stringToRunes(_r)));
_arg$2 = t;
_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; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: cvtStringRunes }; } $f.$ptr = $ptr; $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;
};
cvtT2I = function(v, typ) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, target, typ, v, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = typ.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_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; }
target = _r$1;
_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; }
x = _r$2;
_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; }
/* */ if (_r$3 === 0) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (_r$3 === 0) { */ case 4:
(target).$set(x);
$s = 6; continue;
/* } else { */ case 5:
ifaceE2I($assertType(typ, ptrType$1), x, target);
/* } */ case 6:
_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; }
$s = -1; return new Value.ptr(_r$4, target, (((((v.flag & 96) >>> 0) | 128) >>> 0) | 20) >>> 0);
/* */ } return; } if ($f === undefined) { $f = { $blk: cvtT2I }; } $f.$ptr = $ptr; $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;
};
cvtI2I = function(v, typ) {
var $ptr, _r, _r$1, _r$2, ret, typ, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
/* */ if ($clone(v, Value).IsNil()) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if ($clone(v, Value).IsNil()) { */ case 1:
_r = Zero(typ); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
ret = _r;
ret.flag = (ret.flag | (((v.flag & 96) >>> 0))) >>> 0;
$s = -1; return ret;
/* } */ case 2:
_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; }
_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; }
$s = -1; return _r$2;
/* */ } return; } if ($f === undefined) { $f = { $blk: cvtI2I }; } $f.$ptr = $ptr; $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;
};
ptrType$6.methods = [{prop: "methods", name: "methods", pkg: "reflect", typ: $funcType([], [sliceType$3], false)}];
ptrType$17.methods = [{prop: "in$", name: "in", pkg: "reflect", typ: $funcType([], [sliceType$2], false)}, {prop: "out", name: "out", pkg: "reflect", typ: $funcType([], [sliceType$2], false)}];
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], [ptrType$5], false)}, {prop: "nameLen", name: "nameLen", pkg: "reflect", typ: $funcType([], [$Int], false)}, {prop: "tagLen", name: "tagLen", pkg: "reflect", typ: $funcType([], [$Int], false)}];
Kind.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
ptrType$1.methods = [{prop: "uncommon", name: "uncommon", pkg: "reflect", typ: $funcType([], [ptrType$6], 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$3], 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$14], [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)}];
ChanDir.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
ptrType$8.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)}];
ptrType$10.methods = [{prop: "Field", name: "Field", pkg: "", typ: $funcType([$Int], [StructField], false)}, {prop: "FieldByIndex", name: "FieldByIndex", pkg: "", typ: $funcType([sliceType$14], [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)}];
StructTag.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "Lookup", name: "Lookup", pkg: "", typ: $funcType([$String], [$String, $Bool], false)}];
Value.methods = [{prop: "object", name: "object", pkg: "reflect", typ: $funcType([], [ptrType$3], false)}, {prop: "call", name: "call", pkg: "reflect", typ: $funcType([$String, sliceType$10], [sliceType$10], 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$16], [], 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$16], false)}, {prop: "runes", name: "runes", pkg: "reflect", typ: $funcType([], [sliceType$18], 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$10], [sliceType$10], false)}, {prop: "CallSlice", name: "CallSlice", pkg: "", typ: $funcType([sliceType$10], [sliceType$10], false)}, {prop: "Complex", name: "Complex", pkg: "", typ: $funcType([], [$Complex128], false)}, {prop: "FieldByIndex", name: "FieldByIndex", pkg: "", typ: $funcType([sliceType$14], [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$10], 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$18], [], 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: "assignTo", name: "assignTo", pkg: "reflect", typ: $funcType([$String, ptrType$1, $UnsafePointer], [Value], false)}, {prop: "Convert", name: "Convert", pkg: "", typ: $funcType([Type], [Value], false)}];
flag.methods = [{prop: "kind", name: "kind", pkg: "reflect", typ: $funcType([], [Kind], 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)}];
ptrType$18.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
uncommonType.init("reflect", [{prop: "pkgPath", name: "pkgPath", exported: false, typ: nameOff, tag: ""}, {prop: "mcount", name: "mcount", exported: false, typ: $Uint16, tag: ""}, {prop: "_$2", name: "_", exported: false, typ: $Uint16, tag: ""}, {prop: "moff", name: "moff", exported: false, typ: $Uint32, tag: ""}, {prop: "_$4", name: "_", exported: false, typ: $Uint32, tag: ""}, {prop: "_methods", name: "_methods", exported: false, typ: sliceType$3, tag: ""}]);
funcType.init("reflect", [{prop: "rtype", name: "", exported: false, typ: rtype, tag: "reflect:\"func\""}, {prop: "inCount", name: "inCount", exported: false, typ: $Uint16, tag: ""}, {prop: "outCount", name: "outCount", exported: false, typ: $Uint16, tag: ""}, {prop: "_in", name: "_in", exported: false, typ: sliceType$2, tag: ""}, {prop: "_out", name: "_out", exported: false, typ: sliceType$2, tag: ""}]);
name.init("reflect", [{prop: "bytes", name: "bytes", exported: false, typ: ptrType$5, tag: ""}]);
nameData.init("reflect", [{prop: "name", name: "name", exported: false, typ: $String, tag: ""}, {prop: "tag", name: "tag", exported: false, typ: $String, tag: ""}, {prop: "pkgPath", name: "pkgPath", exported: false, typ: $String, tag: ""}, {prop: "exported", name: "exported", exported: false, typ: $Bool, tag: ""}]);
mapIter.init("reflect", [{prop: "t", name: "t", exported: false, typ: Type, tag: ""}, {prop: "m", name: "m", exported: false, typ: ptrType$3, tag: ""}, {prop: "keys", name: "keys", exported: false, typ: ptrType$3, tag: ""}, {prop: "i", name: "i", exported: false, typ: $Int, tag: ""}]);
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$14], [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$6], false)}]);
rtype.init("reflect", [{prop: "size", name: "size", exported: false, typ: $Uintptr, tag: ""}, {prop: "ptrdata", name: "ptrdata", exported: false, typ: $Uintptr, tag: ""}, {prop: "hash", name: "hash", exported: false, typ: $Uint32, tag: ""}, {prop: "tflag", name: "tflag", exported: false, typ: tflag, tag: ""}, {prop: "align", name: "align", exported: false, typ: $Uint8, tag: ""}, {prop: "fieldAlign", name: "fieldAlign", exported: false, typ: $Uint8, tag: ""}, {prop: "kind", name: "kind", exported: false, typ: $Uint8, tag: ""}, {prop: "alg", name: "alg", exported: false, typ: ptrType$4, tag: ""}, {prop: "gcdata", name: "gcdata", exported: false, typ: ptrType$5, tag: ""}, {prop: "str", name: "str", exported: false, typ: nameOff, tag: ""}, {prop: "ptrToThis", name: "ptrToThis", exported: false, typ: typeOff, tag: ""}]);
typeAlg.init("reflect", [{prop: "hash", name: "hash", exported: false, typ: funcType$4, tag: ""}, {prop: "equal", name: "equal", exported: false, typ: funcType$5, tag: ""}]);
method.init("reflect", [{prop: "name", name: "name", exported: false, typ: nameOff, tag: ""}, {prop: "mtyp", name: "mtyp", exported: false, typ: typeOff, tag: ""}, {prop: "ifn", name: "ifn", exported: false, typ: textOff, tag: ""}, {prop: "tfn", name: "tfn", exported: false, typ: textOff, tag: ""}]);
arrayType.init("reflect", [{prop: "rtype", name: "", exported: false, typ: rtype, tag: "reflect:\"array\""}, {prop: "elem", name: "elem", exported: false, typ: ptrType$1, tag: ""}, {prop: "slice", name: "slice", exported: false, typ: ptrType$1, tag: ""}, {prop: "len", name: "len", exported: false, typ: $Uintptr, tag: ""}]);
chanType.init("reflect", [{prop: "rtype", name: "", exported: false, typ: rtype, tag: "reflect:\"chan\""}, {prop: "elem", name: "elem", exported: false, typ: ptrType$1, tag: ""}, {prop: "dir", name: "dir", exported: false, typ: $Uintptr, tag: ""}]);
imethod.init("reflect", [{prop: "name", name: "name", exported: false, typ: nameOff, tag: ""}, {prop: "typ", name: "typ", exported: false, typ: typeOff, tag: ""}]);
interfaceType.init("reflect", [{prop: "rtype", name: "", exported: false, typ: rtype, tag: "reflect:\"interface\""}, {prop: "pkgPath", name: "pkgPath", exported: false, typ: name, tag: ""}, {prop: "methods", name: "methods", exported: false, typ: sliceType$7, tag: ""}]);
mapType.init("reflect", [{prop: "rtype", name: "", exported: false, typ: rtype, tag: "reflect:\"map\""}, {prop: "key", name: "key", exported: false, typ: ptrType$1, tag: ""}, {prop: "elem", name: "elem", exported: false, typ: ptrType$1, tag: ""}, {prop: "bucket", name: "bucket", exported: false, typ: ptrType$1, tag: ""}, {prop: "hmap", name: "hmap", exported: false, typ: ptrType$1, tag: ""}, {prop: "keysize", name: "keysize", exported: false, typ: $Uint8, tag: ""}, {prop: "indirectkey", name: "indirectkey", exported: false, typ: $Uint8, tag: ""}, {prop: "valuesize", name: "valuesize", exported: false, typ: $Uint8, tag: ""}, {prop: "indirectvalue", name: "indirectvalue", exported: false, typ: $Uint8, tag: ""}, {prop: "bucketsize", name: "bucketsize", exported: false, typ: $Uint16, tag: ""}, {prop: "reflexivekey", name: "reflexivekey", exported: false, typ: $Bool, tag: ""}, {prop: "needkeyupdate", name: "needkeyupdate", exported: false, typ: $Bool, tag: ""}]);
ptrType.init("reflect", [{prop: "rtype", name: "", exported: false, typ: rtype, tag: "reflect:\"ptr\""}, {prop: "elem", name: "elem", exported: false, typ: ptrType$1, tag: ""}]);
sliceType.init("reflect", [{prop: "rtype", name: "", exported: false, typ: rtype, tag: "reflect:\"slice\""}, {prop: "elem", name: "elem", exported: false, typ: ptrType$1, tag: ""}]);
structField.init("reflect", [{prop: "name", name: "name", exported: false, typ: name, tag: ""}, {prop: "typ", name: "typ", exported: false, typ: ptrType$1, tag: ""}, {prop: "offset", name: "offset", exported: false, typ: $Uintptr, tag: ""}]);
structType.init("reflect", [{prop: "rtype", name: "", exported: false, typ: rtype, tag: "reflect:\"struct\""}, {prop: "pkgPath", name: "pkgPath", exported: false, typ: name, tag: ""}, {prop: "fields", name: "fields", exported: false, typ: sliceType$8, tag: ""}]);
Method.init("", [{prop: "Name", name: "Name", exported: true, typ: $String, tag: ""}, {prop: "PkgPath", name: "PkgPath", exported: true, typ: $String, tag: ""}, {prop: "Type", name: "Type", exported: true, typ: Type, tag: ""}, {prop: "Func", name: "Func", exported: true, typ: Value, tag: ""}, {prop: "Index", name: "Index", exported: true, typ: $Int, tag: ""}]);
StructField.init("", [{prop: "Name", name: "Name", exported: true, typ: $String, tag: ""}, {prop: "PkgPath", name: "PkgPath", exported: true, typ: $String, tag: ""}, {prop: "Type", name: "Type", exported: true, typ: Type, tag: ""}, {prop: "Tag", name: "Tag", exported: true, typ: StructTag, tag: ""}, {prop: "Offset", name: "Offset", exported: true, typ: $Uintptr, tag: ""}, {prop: "Index", name: "Index", exported: true, typ: sliceType$14, tag: ""}, {prop: "Anonymous", name: "Anonymous", exported: true, typ: $Bool, tag: ""}]);
fieldScan.init("reflect", [{prop: "typ", name: "typ", exported: false, typ: ptrType$10, tag: ""}, {prop: "index", name: "index", exported: false, typ: sliceType$14, tag: ""}]);
Value.init("reflect", [{prop: "typ", name: "typ", exported: false, typ: ptrType$1, tag: ""}, {prop: "ptr", name: "ptr", exported: false, typ: $UnsafePointer, tag: ""}, {prop: "flag", name: "", exported: false, typ: flag, tag: ""}]);
ValueError.init("", [{prop: "Method", name: "Method", exported: true, typ: $String, tag: ""}, {prop: "Kind", name: "Kind", exported: true, typ: Kind, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = math.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = runtime.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strconv.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sync.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
nameOffList = sliceType$1.nil;
typeOffList = sliceType$2.nil;
methodCache = new structType$1.ptr(new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0), false);
initialized = false;
uncommonTypeMap = {};
nameMap = {};
callHelper = $assertType($internalize($call, $emptyInterface), funcType$1);
selectHelper = $assertType($internalize($select, $emptyInterface), funcType$1);
jsObjectPtr = reflectType($jsObjectPtr);
kindNames = new sliceType$6(["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"]);
uint8Type = $assertType(TypeOf(new $Uint8(0)), ptrType$1);
$r = init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["fmt"] = (function() {
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, ptrType$2, ptrType$5, ptrType$25, funcType, ppFree, byteType, space, ssFree, complexError, boolError, newPrinter, Fprintf, Sprintf, Errorf, Fprint, Sprint, Fprintln, Println, Sprintln, getField, tooLarge, parsenum, intFromArg, parseArgNumber, isSpace, notSpace, indexRune;
errors = $packages["errors"];
io = $packages["io"];
math = $packages["math"];
os = $packages["os"];
reflect = $packages["reflect"];
strconv = $packages["strconv"];
sync = $packages["sync"];
utf8 = $packages["unicode/utf8"];
fmtFlags = $pkg.fmtFlags = $newType(0, $kindStruct, "fmt.fmtFlags", true, "fmt", false, function(widPresent_, precPresent_, minus_, plus_, sharp_, space_, zero_, plusV_, sharpV_) {
this.$val = this;
if (arguments.length === 0) {
this.widPresent = false;
this.precPresent = false;
this.minus = false;
this.plus = false;
this.sharp = false;
this.space = false;
this.zero = false;
this.plusV = false;
this.sharpV = false;
return;
}
this.widPresent = widPresent_;
this.precPresent = precPresent_;
this.minus = minus_;
this.plus = plus_;
this.sharp = sharp_;
this.space = space_;
this.zero = zero_;
this.plusV = plusV_;
this.sharpV = sharpV_;
});
fmt = $pkg.fmt = $newType(0, $kindStruct, "fmt.fmt", true, "fmt", false, function(buf_, fmtFlags_, wid_, prec_, intbuf_) {
this.$val = this;
if (arguments.length === 0) {
this.buf = ptrType$1.nil;
this.fmtFlags = new fmtFlags.ptr(false, false, false, false, false, false, false, false, false);
this.wid = 0;
this.prec = 0;
this.intbuf = arrayType.zero();
return;
}
this.buf = buf_;
this.fmtFlags = fmtFlags_;
this.wid = wid_;
this.prec = prec_;
this.intbuf = intbuf_;
});
State = $pkg.State = $newType(8, $kindInterface, "fmt.State", true, "fmt", true, null);
Formatter = $pkg.Formatter = $newType(8, $kindInterface, "fmt.Formatter", true, "fmt", true, null);
Stringer = $pkg.Stringer = $newType(8, $kindInterface, "fmt.Stringer", true, "fmt", true, null);
GoStringer = $pkg.GoStringer = $newType(8, $kindInterface, "fmt.GoStringer", true, "fmt", true, null);
buffer = $pkg.buffer = $newType(12, $kindSlice, "fmt.buffer", true, "fmt", false, null);
pp = $pkg.pp = $newType(0, $kindStruct, "fmt.pp", true, "fmt", false, function(buf_, arg_, value_, fmt_, reordered_, goodArgNum_, panicking_, erroring_) {
this.$val = this;
if (arguments.length === 0) {
this.buf = buffer.nil;
this.arg = $ifaceNil;
this.value = new reflect.Value.ptr(ptrType.nil, 0, 0);
this.fmt = new fmt.ptr(ptrType$1.nil, new fmtFlags.ptr(false, false, false, false, false, false, false, false, false), 0, 0, arrayType.zero());
this.reordered = false;
this.goodArgNum = false;
this.panicking = false;
this.erroring = false;
return;
}
this.buf = buf_;
this.arg = arg_;
this.value = value_;
this.fmt = fmt_;
this.reordered = reordered_;
this.goodArgNum = goodArgNum_;
this.panicking = panicking_;
this.erroring = erroring_;
});
ScanState = $pkg.ScanState = $newType(8, $kindInterface, "fmt.ScanState", true, "fmt", true, null);
scanError = $pkg.scanError = $newType(0, $kindStruct, "fmt.scanError", true, "fmt", false, function(err_) {
this.$val = this;
if (arguments.length === 0) {
this.err = $ifaceNil;
return;
}
this.err = err_;
});
ss = $pkg.ss = $newType(0, $kindStruct, "fmt.ss", true, "fmt", false, function(rs_, buf_, count_, atEOF_, ssave_) {
this.$val = this;
if (arguments.length === 0) {
this.rs = $ifaceNil;
this.buf = buffer.nil;
this.count = 0;
this.atEOF = false;
this.ssave = new ssave.ptr(false, false, false, 0, 0, 0);
return;
}
this.rs = rs_;
this.buf = buf_;
this.count = count_;
this.atEOF = atEOF_;
this.ssave = ssave_;
});
ssave = $pkg.ssave = $newType(0, $kindStruct, "fmt.ssave", true, "fmt", false, function(validSave_, nlIsEnd_, nlIsSpace_, argLimit_, limit_, maxWid_) {
this.$val = this;
if (arguments.length === 0) {
this.validSave = false;
this.nlIsEnd = false;
this.nlIsSpace = false;
this.argLimit = 0;
this.limit = 0;
this.maxWid = 0;
return;
}
this.validSave = validSave_;
this.nlIsEnd = nlIsEnd_;
this.nlIsSpace = nlIsSpace_;
this.argLimit = argLimit_;
this.limit = limit_;
this.maxWid = maxWid_;
});
sliceType = $sliceType($emptyInterface);
ptrType = $ptrType(reflect.rtype);
ptrType$1 = $ptrType(buffer);
arrayType = $arrayType($Uint8, 68);
arrayType$1 = $arrayType($Uint16, 2);
sliceType$1 = $sliceType(arrayType$1);
sliceType$2 = $sliceType($Uint8);
ptrType$2 = $ptrType(pp);
ptrType$5 = $ptrType(ss);
ptrType$25 = $ptrType(fmt);
funcType = $funcType([$Int32], [$Bool], false);
fmt.ptr.prototype.clearflags = function() {
var $ptr, f;
f = this;
fmtFlags.copy(f.fmtFlags, new fmtFlags.ptr(false, false, false, false, false, false, false, false, false));
};
fmt.prototype.clearflags = function() { return this.$val.clearflags(); };
fmt.ptr.prototype.init = function(buf) {
var $ptr, buf, f;
f = this;
f.buf = buf;
f.clearflags();
};
fmt.prototype.init = function(buf) { return this.$val.init(buf); };
fmt.ptr.prototype.writePadding = function(n) {
var $ptr, _i, _ref, buf, f, i, n, newLen, oldLen, padByte, padding;
f = this;
if (n <= 0) {
return;
}
buf = f.buf.$get();
oldLen = buf.$length;
newLen = oldLen + n >> 0;
if (newLen > buf.$capacity) {
buf = $makeSlice(buffer, (($imul(buf.$capacity, 2)) + n >> 0));
$copySlice(buf, f.buf.$get());
}
padByte = 32;
if (f.fmtFlags.zero) {
padByte = 48;
}
padding = $subslice(buf, oldLen, newLen);
_ref = padding;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
((i < 0 || i >= padding.$length) ? ($throwRuntimeError("index out of range"), undefined) : padding.$array[padding.$offset + i] = padByte);
_i++;
}
f.buf.$set($subslice(buf, 0, newLen));
};
fmt.prototype.writePadding = function(n) { return this.$val.writePadding(n); };
fmt.ptr.prototype.pad = function(b) {
var $ptr, b, f, width;
f = this;
if (!f.fmtFlags.widPresent || (f.wid === 0)) {
f.buf.Write(b);
return;
}
width = f.wid - utf8.RuneCount(b) >> 0;
if (!f.fmtFlags.minus) {
f.writePadding(width);
f.buf.Write(b);
} else {
f.buf.Write(b);
f.writePadding(width);
}
};
fmt.prototype.pad = function(b) { return this.$val.pad(b); };
fmt.ptr.prototype.padString = function(s) {
var $ptr, f, s, width;
f = this;
if (!f.fmtFlags.widPresent || (f.wid === 0)) {
f.buf.WriteString(s);
return;
}
width = f.wid - utf8.RuneCountInString(s) >> 0;
if (!f.fmtFlags.minus) {
f.writePadding(width);
f.buf.WriteString(s);
} else {
f.buf.WriteString(s);
f.writePadding(width);
}
};
fmt.prototype.padString = function(s) { return this.$val.padString(s); };
fmt.ptr.prototype.fmt_boolean = function(v) {
var $ptr, f, v;
f = this;
if (v) {
f.padString("true");
} else {
f.padString("false");
}
};
fmt.prototype.fmt_boolean = function(v) { return this.$val.fmt_boolean(v); };
fmt.ptr.prototype.fmt_unicode = function(u) {
var $ptr, buf, f, i, oldZero, prec, u, width;
f = this;
buf = $subslice(new sliceType$2(f.intbuf), 0);
prec = 4;
if (f.fmtFlags.precPresent && f.prec > 4) {
prec = f.prec;
width = (((2 + prec >> 0) + 2 >> 0) + 4 >> 0) + 1 >> 0;
if (width > buf.$length) {
buf = $makeSlice(sliceType$2, width);
}
}
i = buf.$length;
if (f.fmtFlags.sharp && (u.$high < 0 || (u.$high === 0 && u.$low <= 1114111)) && strconv.IsPrint(((u.$low >> 0)))) {
i = i - (1) >> 0;
((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 39);
i = i - (utf8.RuneLen(((u.$low >> 0)))) >> 0;
utf8.EncodeRune($subslice(buf, i), ((u.$low >> 0)));
i = i - (1) >> 0;
((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 39);
i = i - (1) >> 0;
((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 32);
}
while (true) {
if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 16)))) { break; }
i = i - (1) >> 0;
((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))));
prec = prec - (1) >> 0;
u = $shiftRightUint64(u, (4));
}
i = i - (1) >> 0;
((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = "0123456789ABCDEFX".charCodeAt($flatten64(u)));
prec = prec - (1) >> 0;
while (true) {
if (!(prec > 0)) { break; }
i = i - (1) >> 0;
((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 48);
prec = prec - (1) >> 0;
}
i = i - (1) >> 0;
((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 43);
i = i - (1) >> 0;
((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 85);
oldZero = f.fmtFlags.zero;
f.fmtFlags.zero = false;
f.pad($subslice(buf, i));
f.fmtFlags.zero = oldZero;
};
fmt.prototype.fmt_unicode = function(u) { return this.$val.fmt_unicode(u); };
fmt.ptr.prototype.fmt_integer = function(u, base, isSigned, digits) {
var $ptr, _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;
f = this;
negative = isSigned && (x = (new $Int64(u.$high, u.$low)), (x.$high < 0 || (x.$high === 0 && x.$low < 0)));
if (negative) {
u = new $Uint64(-u.$high, -u.$low);
}
buf = $subslice(new sliceType$2(f.intbuf), 0);
if (f.fmtFlags.widPresent || f.fmtFlags.precPresent) {
width = (3 + f.wid >> 0) + f.prec >> 0;
if (width > buf.$length) {
buf = $makeSlice(sliceType$2, width);
}
}
prec = 0;
if (f.fmtFlags.precPresent) {
prec = f.prec;
if ((prec === 0) && (u.$high === 0 && u.$low === 0)) {
oldZero = f.fmtFlags.zero;
f.fmtFlags.zero = false;
f.writePadding(f.wid);
f.fmtFlags.zero = oldZero;
return;
}
} else if (f.fmtFlags.zero && f.fmtFlags.widPresent) {
prec = f.wid;
if (negative || f.fmtFlags.plus || f.fmtFlags.space) {
prec = prec - (1) >> 0;
}
}
i = buf.$length;
_1 = base;
if (_1 === (10)) {
while (true) {
if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 10)))) { break; }
i = i - (1) >> 0;
next = $div64(u, new $Uint64(0, 10), false);
((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)));
u = next;
}
} else if (_1 === (16)) {
while (true) {
if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 16)))) { break; }
i = i - (1) >> 0;
((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))));
u = $shiftRightUint64(u, (4));
}
} else if (_1 === (8)) {
while (true) {
if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 8)))) { break; }
i = i - (1) >> 0;
((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)));
u = $shiftRightUint64(u, (3));
}
} else if (_1 === (2)) {
while (true) {
if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 2)))) { break; }
i = i - (1) >> 0;
((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)));
u = $shiftRightUint64(u, (1));
}
} else {
$panic(new $String("fmt: unknown base; can't happen"));
}
i = i - (1) >> 0;
((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = digits.charCodeAt($flatten64(u)));
while (true) {
if (!(i > 0 && prec > (buf.$length - i >> 0))) { break; }
i = i - (1) >> 0;
((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 48);
}
if (f.fmtFlags.sharp) {
_2 = base;
if (_2 === (8)) {
if (!((((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i]) === 48))) {
i = i - (1) >> 0;
((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 48);
}
} else if (_2 === (16)) {
i = i - (1) >> 0;
((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = digits.charCodeAt(16));
i = i - (1) >> 0;
((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 48);
}
}
if (negative) {
i = i - (1) >> 0;
((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 45);
} else if (f.fmtFlags.plus) {
i = i - (1) >> 0;
((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 43);
} else if (f.fmtFlags.space) {
i = i - (1) >> 0;
((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 32);
}
oldZero$1 = f.fmtFlags.zero;
f.fmtFlags.zero = false;
f.pad($subslice(buf, i));
f.fmtFlags.zero = oldZero$1;
};
fmt.prototype.fmt_integer = function(u, base, isSigned, digits) { return this.$val.fmt_integer(u, base, isSigned, digits); };
fmt.ptr.prototype.truncate = function(s) {
var $ptr, _i, _ref, _rune, f, i, n, s;
f = this;
if (f.fmtFlags.precPresent) {
n = f.prec;
_ref = s;
_i = 0;
while (true) {
if (!(_i < _ref.length)) { break; }
_rune = $decodeRune(_ref, _i);
i = _i;
n = n - (1) >> 0;
if (n < 0) {
return $substring(s, 0, i);
}
_i += _rune[1];
}
}
return s;
};
fmt.prototype.truncate = function(s) { return this.$val.truncate(s); };
fmt.ptr.prototype.fmt_s = function(s) {
var $ptr, f, s;
f = this;
s = f.truncate(s);
f.padString(s);
};
fmt.prototype.fmt_s = function(s) { return this.$val.fmt_s(s); };
fmt.ptr.prototype.fmt_sbx = function(s, b, digits) {
var $ptr, b, buf, c, digits, f, i, length, s, width;
f = this;
length = b.$length;
if (b === sliceType$2.nil) {
length = s.length;
}
if (f.fmtFlags.precPresent && f.prec < length) {
length = f.prec;
}
width = $imul(2, length);
if (width > 0) {
if (f.fmtFlags.space) {
if (f.fmtFlags.sharp) {
width = $imul(width, (2));
}
width = width + ((length - 1 >> 0)) >> 0;
} else if (f.fmtFlags.sharp) {
width = width + (2) >> 0;
}
} else {
if (f.fmtFlags.widPresent) {
f.writePadding(f.wid);
}
return;
}
if (f.fmtFlags.widPresent && f.wid > width && !f.fmtFlags.minus) {
f.writePadding(f.wid - width >> 0);
}
buf = f.buf.$get();
if (f.fmtFlags.sharp) {
buf = $append(buf, 48, digits.charCodeAt(16));
}
c = 0;
i = 0;
while (true) {
if (!(i < length)) { break; }
if (f.fmtFlags.space && i > 0) {
buf = $append(buf, 32);
if (f.fmtFlags.sharp) {
buf = $append(buf, 48, digits.charCodeAt(16));
}
}
if (!(b === sliceType$2.nil)) {
c = ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]);
} else {
c = s.charCodeAt(i);
}
buf = $append(buf, digits.charCodeAt((c >>> 4 << 24 >>> 24)), digits.charCodeAt(((c & 15) >>> 0)));
i = i + (1) >> 0;
}
f.buf.$set(buf);
if (f.fmtFlags.widPresent && f.wid > width && f.fmtFlags.minus) {
f.writePadding(f.wid - width >> 0);
}
};
fmt.prototype.fmt_sbx = function(s, b, digits) { return this.$val.fmt_sbx(s, b, digits); };
fmt.ptr.prototype.fmt_sx = function(s, digits) {
var $ptr, digits, f, s;
f = this;
f.fmt_sbx(s, sliceType$2.nil, digits);
};
fmt.prototype.fmt_sx = function(s, digits) { return this.$val.fmt_sx(s, digits); };
fmt.ptr.prototype.fmt_bx = function(b, digits) {
var $ptr, b, digits, f;
f = this;
f.fmt_sbx("", b, digits);
};
fmt.prototype.fmt_bx = function(b, digits) { return this.$val.fmt_bx(b, digits); };
fmt.ptr.prototype.fmt_q = function(s) {
var $ptr, buf, f, s;
f = this;
s = f.truncate(s);
if (f.fmtFlags.sharp && strconv.CanBackquote(s)) {
f.padString("`" + s + "`");
return;
}
buf = $subslice(new sliceType$2(f.intbuf), 0, 0);
if (f.fmtFlags.plus) {
f.pad(strconv.AppendQuoteToASCII(buf, s));
} else {
f.pad(strconv.AppendQuote(buf, s));
}
};
fmt.prototype.fmt_q = function(s) { return this.$val.fmt_q(s); };
fmt.ptr.prototype.fmt_c = function(c) {
var $ptr, buf, c, f, r, w;
f = this;
r = ((c.$low >> 0));
if ((c.$high > 0 || (c.$high === 0 && c.$low > 1114111))) {
r = 65533;
}
buf = $subslice(new sliceType$2(f.intbuf), 0, 0);
w = utf8.EncodeRune($subslice(buf, 0, 4), r);
f.pad($subslice(buf, 0, w));
};
fmt.prototype.fmt_c = function(c) { return this.$val.fmt_c(c); };
fmt.ptr.prototype.fmt_qc = function(c) {
var $ptr, buf, c, f, r;
f = this;
r = ((c.$low >> 0));
if ((c.$high > 0 || (c.$high === 0 && c.$low > 1114111))) {
r = 65533;
}
buf = $subslice(new sliceType$2(f.intbuf), 0, 0);
if (f.fmtFlags.plus) {
f.pad(strconv.AppendQuoteRuneToASCII(buf, r));
} else {
f.pad(strconv.AppendQuoteRune(buf, r));
}
};
fmt.prototype.fmt_qc = function(c) { return this.$val.fmt_qc(c); };
fmt.ptr.prototype.fmt_float = function(v, size, verb, prec) {
var $ptr, f, num, oldZero, prec, size, v, verb;
f = this;
if (f.fmtFlags.precPresent) {
prec = f.prec;
}
num = strconv.AppendFloat($subslice(new sliceType$2(f.intbuf), 0, 1), v, ((verb << 24 >>> 24)), prec, size);
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)) {
num = $subslice(num, 1);
} else {
(0 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 0] = 43);
}
if (f.fmtFlags.space && ((0 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 0]) === 43) && !f.fmtFlags.plus) {
(0 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 0] = 32);
}
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)) {
oldZero = f.fmtFlags.zero;
f.fmtFlags.zero = false;
if (((1 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 1]) === 78) && !f.fmtFlags.space && !f.fmtFlags.plus) {
num = $subslice(num, 1);
}
f.pad(num);
f.fmtFlags.zero = oldZero;
return;
}
if (f.fmtFlags.plus || !(((0 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 0]) === 43))) {
if (f.fmtFlags.zero && f.fmtFlags.widPresent && f.wid > num.$length) {
f.buf.WriteByte((0 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 0]));
f.writePadding(f.wid - num.$length >> 0);
f.buf.Write($subslice(num, 1));
return;
}
f.pad(num);
return;
}
f.pad($subslice(num, 1));
};
fmt.prototype.fmt_float = function(v, size, verb, prec) { return this.$val.fmt_float(v, size, verb, prec); };
$ptrType(buffer).prototype.Write = function(p) {
var $ptr, b, p;
b = this;
b.$set($appendSlice(b.$get(), p));
};
$ptrType(buffer).prototype.WriteString = function(s) {
var $ptr, b, s;
b = this;
b.$set($appendSlice(b.$get(), s));
};
$ptrType(buffer).prototype.WriteByte = function(c) {
var $ptr, b, c;
b = this;
b.$set($append(b.$get(), c));
};
$ptrType(buffer).prototype.WriteRune = function(r) {
var $ptr, b, bp, n, r, w, x;
bp = this;
if (r < 128) {
bp.$set($append(bp.$get(), ((r << 24 >>> 24))));
return;
}
b = bp.$get();
n = b.$length;
while (true) {
if (!((n + 4 >> 0) > b.$capacity)) { break; }
b = $append(b, 0);
}
w = utf8.EncodeRune((x = $subslice(b, n, (n + 4 >> 0)), $subslice(new sliceType$2(x.$array), x.$offset, x.$offset + x.$length)), r);
bp.$set($subslice(b, 0, (n + w >> 0)));
};
newPrinter = function() {
var $ptr, _r, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = ppFree.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
p = $assertType(_r, ptrType$2);
p.panicking = false;
p.erroring = false;
p.fmt.init((p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))));
$s = -1; return p;
/* */ } return; } if ($f === undefined) { $f = { $blk: newPrinter }; } $f.$ptr = $ptr; $f._r = _r; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
};
pp.ptr.prototype.free = function() {
var $ptr, p;
p = this;
p.buf = $subslice(p.buf, 0, 0);
p.arg = $ifaceNil;
p.value = new reflect.Value.ptr(ptrType.nil, 0, 0);
ppFree.Put(p);
};
pp.prototype.free = function() { return this.$val.free(); };
pp.ptr.prototype.Width = function() {
var $ptr, _tmp, _tmp$1, ok, p, wid;
wid = 0;
ok = false;
p = this;
_tmp = p.fmt.wid;
_tmp$1 = p.fmt.fmtFlags.widPresent;
wid = _tmp;
ok = _tmp$1;
return [wid, ok];
};
pp.prototype.Width = function() { return this.$val.Width(); };
pp.ptr.prototype.Precision = function() {
var $ptr, _tmp, _tmp$1, ok, p, prec;
prec = 0;
ok = false;
p = this;
_tmp = p.fmt.prec;
_tmp$1 = p.fmt.fmtFlags.precPresent;
prec = _tmp;
ok = _tmp$1;
return [prec, ok];
};
pp.prototype.Precision = function() { return this.$val.Precision(); };
pp.ptr.prototype.Flag = function(b) {
var $ptr, _1, b, p;
p = this;
_1 = b;
if (_1 === (45)) {
return p.fmt.fmtFlags.minus;
} else if (_1 === (43)) {
return p.fmt.fmtFlags.plus || p.fmt.fmtFlags.plusV;
} else if (_1 === (35)) {
return p.fmt.fmtFlags.sharp || p.fmt.fmtFlags.sharpV;
} else if (_1 === (32)) {
return p.fmt.fmtFlags.space;
} else if (_1 === (48)) {
return p.fmt.fmtFlags.zero;
}
return false;
};
pp.prototype.Flag = function(b) { return this.$val.Flag(b); };
pp.ptr.prototype.Write = function(b) {
var $ptr, _tmp, _tmp$1, b, err, p, ret;
ret = 0;
err = $ifaceNil;
p = this;
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(b);
_tmp = b.$length;
_tmp$1 = $ifaceNil;
ret = _tmp;
err = _tmp$1;
return [ret, err];
};
pp.prototype.Write = function(b) { return this.$val.Write(b); };
Fprintf = function(w, format, a) {
var $ptr, _r, _r$1, _tuple, a, err, format, n, p, w, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
_r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
p = _r;
$r = p.doPrintf(format, a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_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; }
_tuple = _r$1;
n = _tuple[0];
err = _tuple[1];
p.free();
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Fprintf }; } $f.$ptr = $ptr; $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;
};
$pkg.Fprintf = Fprintf;
Sprintf = function(format, a) {
var $ptr, _r, a, format, p, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
p = _r;
$r = p.doPrintf(format, a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
s = ($bytesToString(p.buf));
p.free();
$s = -1; return s;
/* */ } return; } if ($f === undefined) { $f = { $blk: Sprintf }; } $f.$ptr = $ptr; $f._r = _r; $f.a = a; $f.format = format; $f.p = p; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Sprintf = Sprintf;
Errorf = function(format, a) {
var $ptr, _r, _r$1, a, format, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = Sprintf(format, a); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_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; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: Errorf }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.a = a; $f.format = format; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Errorf = Errorf;
Fprint = function(w, a) {
var $ptr, _r, _r$1, _tuple, a, err, n, p, w, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
_r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
p = _r;
$r = p.doPrint(a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_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; }
_tuple = _r$1;
n = _tuple[0];
err = _tuple[1];
p.free();
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Fprint }; } $f.$ptr = $ptr; $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;
};
$pkg.Fprint = Fprint;
Sprint = function(a) {
var $ptr, _r, a, p, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
p = _r;
$r = p.doPrint(a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
s = ($bytesToString(p.buf));
p.free();
$s = -1; return s;
/* */ } return; } if ($f === undefined) { $f = { $blk: Sprint }; } $f.$ptr = $ptr; $f._r = _r; $f.a = a; $f.p = p; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Sprint = Sprint;
Fprintln = function(w, a) {
var $ptr, _r, _r$1, _tuple, a, err, n, p, w, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
_r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
p = _r;
$r = p.doPrintln(a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_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; }
_tuple = _r$1;
n = _tuple[0];
err = _tuple[1];
p.free();
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Fprintln }; } $f.$ptr = $ptr; $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;
};
$pkg.Fprintln = Fprintln;
Println = function(a) {
var $ptr, _r, _tuple, a, err, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
_r = Fprintln(os.Stdout, a); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Println }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.a = a; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Println = Println;
Sprintln = function(a) {
var $ptr, _r, a, p, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
p = _r;
$r = p.doPrintln(a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
s = ($bytesToString(p.buf));
p.free();
$s = -1; return s;
/* */ } return; } if ($f === undefined) { $f = { $blk: Sprintln }; } $f.$ptr = $ptr; $f._r = _r; $f.a = a; $f.p = p; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Sprintln = Sprintln;
getField = function(v, i) {
var $ptr, _r, _r$1, i, v, val, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_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; }
val = _r;
/* */ if (($clone(val, reflect.Value).Kind() === 20) && !$clone(val, reflect.Value).IsNil()) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (($clone(val, reflect.Value).Kind() === 20) && !$clone(val, reflect.Value).IsNil()) { */ case 2:
_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; }
val = _r$1;
/* } */ case 3:
$s = -1; return val;
/* */ } return; } if ($f === undefined) { $f = { $blk: getField }; } $f.$ptr = $ptr; $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;
};
tooLarge = function(x) {
var $ptr, x;
return x > 1000000 || x < -1000000;
};
parsenum = function(s, start, end) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, end, isnum, newi, num, s, start;
num = 0;
isnum = false;
newi = 0;
if (start >= end) {
_tmp = 0;
_tmp$1 = false;
_tmp$2 = end;
num = _tmp;
isnum = _tmp$1;
newi = _tmp$2;
return [num, isnum, newi];
}
newi = start;
while (true) {
if (!(newi < end && 48 <= s.charCodeAt(newi) && s.charCodeAt(newi) <= 57)) { break; }
if (tooLarge(num)) {
_tmp$3 = 0;
_tmp$4 = false;
_tmp$5 = end;
num = _tmp$3;
isnum = _tmp$4;
newi = _tmp$5;
return [num, isnum, newi];
}
num = ($imul(num, 10)) + (((s.charCodeAt(newi) - 48 << 24 >>> 24) >> 0)) >> 0;
isnum = true;
newi = newi + (1) >> 0;
}
return [num, isnum, newi];
};
pp.ptr.prototype.unknownType = function(v) {
var $ptr, _r, p, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; p = $f.p; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
p = this;
if (!$clone(v, reflect.Value).IsValid()) {
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("<nil>");
$s = -1; return;
}
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(63);
_r = $clone(v, reflect.Value).Type().String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$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 = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(63);
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.unknownType }; } $f.$ptr = $ptr; $f._r = _r; $f.p = p; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
pp.prototype.unknownType = function(v) { return this.$val.unknownType(v); };
pp.ptr.prototype.badVerb = function(verb) {
var $ptr, _r, _r$1, p, verb, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; p = $f.p; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
p = this;
p.erroring = true;
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!");
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteRune(verb);
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(40);
/* */ if (!($interfaceIsEqual(p.arg, $ifaceNil))) { $s = 2; continue; }
/* */ if ($clone(p.value, reflect.Value).IsValid()) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!($interfaceIsEqual(p.arg, $ifaceNil))) { */ case 2:
_r = reflect.TypeOf(p.arg).String(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$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; }
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(61);
$r = p.printArg(p.arg, 118); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 5; continue;
/* } else if ($clone(p.value, reflect.Value).IsValid()) { */ case 3:
_r$1 = $clone(p.value, reflect.Value).Type().String(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$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 = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(61);
$r = p.printValue($clone(p.value, reflect.Value), 118, 0); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 5; continue;
/* } else { */ case 4:
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("<nil>");
/* } */ case 5:
case 1:
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(41);
p.erroring = false;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.badVerb }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.p = p; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
};
pp.prototype.badVerb = function(verb) { return this.$val.badVerb(verb); };
pp.ptr.prototype.fmtBool = function(v, verb) {
var $ptr, _1, p, v, verb, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
p = this;
_1 = verb;
/* */ if ((_1 === (116)) || (_1 === (118))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if ((_1 === (116)) || (_1 === (118))) { */ case 2:
p.fmt.fmt_boolean(v);
$s = 4; continue;
/* } else { */ case 3:
$r = p.badVerb(verb); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 4:
case 1:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtBool }; } $f.$ptr = $ptr; $f._1 = _1; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
};
pp.prototype.fmtBool = function(v, verb) { return this.$val.fmtBool(v, verb); };
pp.ptr.prototype.fmt0x64 = function(v, leading0x) {
var $ptr, leading0x, p, sharp, v;
p = this;
sharp = p.fmt.fmtFlags.sharp;
p.fmt.fmtFlags.sharp = leading0x;
p.fmt.fmt_integer(v, 16, false, "0123456789abcdefx");
p.fmt.fmtFlags.sharp = sharp;
};
pp.prototype.fmt0x64 = function(v, leading0x) { return this.$val.fmt0x64(v, leading0x); };
pp.ptr.prototype.fmtInteger = function(v, isSigned, verb) {
var $ptr, _1, isSigned, p, v, verb, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
p = this;
_1 = verb;
/* */ if (_1 === (118)) { $s = 2; continue; }
/* */ if (_1 === (100)) { $s = 3; continue; }
/* */ if (_1 === (98)) { $s = 4; continue; }
/* */ if (_1 === (111)) { $s = 5; continue; }
/* */ if (_1 === (120)) { $s = 6; continue; }
/* */ if (_1 === (88)) { $s = 7; continue; }
/* */ if (_1 === (99)) { $s = 8; continue; }
/* */ if (_1 === (113)) { $s = 9; continue; }
/* */ if (_1 === (85)) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (_1 === (118)) { */ case 2:
if (p.fmt.fmtFlags.sharpV && !isSigned) {
p.fmt0x64(v, true);
} else {
p.fmt.fmt_integer(v, 10, isSigned, "0123456789abcdefx");
}
$s = 12; continue;
/* } else if (_1 === (100)) { */ case 3:
p.fmt.fmt_integer(v, 10, isSigned, "0123456789abcdefx");
$s = 12; continue;
/* } else if (_1 === (98)) { */ case 4:
p.fmt.fmt_integer(v, 2, isSigned, "0123456789abcdefx");
$s = 12; continue;
/* } else if (_1 === (111)) { */ case 5:
p.fmt.fmt_integer(v, 8, isSigned, "0123456789abcdefx");
$s = 12; continue;
/* } else if (_1 === (120)) { */ case 6:
p.fmt.fmt_integer(v, 16, isSigned, "0123456789abcdefx");
$s = 12; continue;
/* } else if (_1 === (88)) { */ case 7:
p.fmt.fmt_integer(v, 16, isSigned, "0123456789ABCDEFX");
$s = 12; continue;
/* } else if (_1 === (99)) { */ case 8:
p.fmt.fmt_c(v);
$s = 12; continue;
/* } else if (_1 === (113)) { */ case 9:
/* */ if ((v.$high < 0 || (v.$high === 0 && v.$low <= 1114111))) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if ((v.$high < 0 || (v.$high === 0 && v.$low <= 1114111))) { */ case 13:
p.fmt.fmt_qc(v);
$s = 15; continue;
/* } else { */ case 14:
$r = p.badVerb(verb); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 15:
$s = 12; continue;
/* } else if (_1 === (85)) { */ case 10:
p.fmt.fmt_unicode(v);
$s = 12; continue;
/* } else { */ case 11:
$r = p.badVerb(verb); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 12:
case 1:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtInteger }; } $f.$ptr = $ptr; $f._1 = _1; $f.isSigned = isSigned; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
};
pp.prototype.fmtInteger = function(v, isSigned, verb) { return this.$val.fmtInteger(v, isSigned, verb); };
pp.ptr.prototype.fmtFloat = function(v, size, verb) {
var $ptr, _1, p, size, v, verb, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
p = this;
_1 = verb;
/* */ if (_1 === (118)) { $s = 2; continue; }
/* */ if ((_1 === (98)) || (_1 === (103)) || (_1 === (71))) { $s = 3; continue; }
/* */ if ((_1 === (102)) || (_1 === (101)) || (_1 === (69))) { $s = 4; continue; }
/* */ if (_1 === (70)) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (_1 === (118)) { */ case 2:
p.fmt.fmt_float(v, size, 103, -1);
$s = 7; continue;
/* } else if ((_1 === (98)) || (_1 === (103)) || (_1 === (71))) { */ case 3:
p.fmt.fmt_float(v, size, verb, -1);
$s = 7; continue;
/* } else if ((_1 === (102)) || (_1 === (101)) || (_1 === (69))) { */ case 4:
p.fmt.fmt_float(v, size, verb, 6);
$s = 7; continue;
/* } else if (_1 === (70)) { */ case 5:
p.fmt.fmt_float(v, size, 102, 6);
$s = 7; continue;
/* } else { */ case 6:
$r = p.badVerb(verb); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 7:
case 1:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtFloat }; } $f.$ptr = $ptr; $f._1 = _1; $f.p = p; $f.size = size; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
};
pp.prototype.fmtFloat = function(v, size, verb) { return this.$val.fmtFloat(v, size, verb); };
pp.ptr.prototype.fmtComplex = function(v, size, verb) {
var $ptr, _1, _q, _q$1, oldPlus, p, size, v, verb, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
p = this;
_1 = verb;
/* */ if ((_1 === (118)) || (_1 === (98)) || (_1 === (103)) || (_1 === (71)) || (_1 === (102)) || (_1 === (70)) || (_1 === (101)) || (_1 === (69))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if ((_1 === (118)) || (_1 === (98)) || (_1 === (103)) || (_1 === (71)) || (_1 === (102)) || (_1 === (70)) || (_1 === (101)) || (_1 === (69))) { */ case 2:
oldPlus = p.fmt.fmtFlags.plus;
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(40);
$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; }
p.fmt.fmtFlags.plus = true;
$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; }
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("i)");
p.fmt.fmtFlags.plus = oldPlus;
$s = 4; continue;
/* } else { */ case 3:
$r = p.badVerb(verb); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 4:
case 1:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtComplex }; } $f.$ptr = $ptr; $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;
};
pp.prototype.fmtComplex = function(v, size, verb) { return this.$val.fmtComplex(v, size, verb); };
pp.ptr.prototype.fmtString = function(v, verb) {
var $ptr, _1, p, v, verb, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
p = this;
_1 = verb;
/* */ if (_1 === (118)) { $s = 2; continue; }
/* */ if (_1 === (115)) { $s = 3; continue; }
/* */ if (_1 === (120)) { $s = 4; continue; }
/* */ if (_1 === (88)) { $s = 5; continue; }
/* */ if (_1 === (113)) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (_1 === (118)) { */ case 2:
if (p.fmt.fmtFlags.sharpV) {
p.fmt.fmt_q(v);
} else {
p.fmt.fmt_s(v);
}
$s = 8; continue;
/* } else if (_1 === (115)) { */ case 3:
p.fmt.fmt_s(v);
$s = 8; continue;
/* } else if (_1 === (120)) { */ case 4:
p.fmt.fmt_sx(v, "0123456789abcdefx");
$s = 8; continue;
/* } else if (_1 === (88)) { */ case 5:
p.fmt.fmt_sx(v, "0123456789ABCDEFX");
$s = 8; continue;
/* } else if (_1 === (113)) { */ case 6:
p.fmt.fmt_q(v);
$s = 8; continue;
/* } else { */ case 7:
$r = p.badVerb(verb); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 8:
case 1:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtString }; } $f.$ptr = $ptr; $f._1 = _1; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
};
pp.prototype.fmtString = function(v, verb) { return this.$val.fmtString(v, verb); };
pp.ptr.prototype.fmtBytes = function(v, verb, typeString) {
var $ptr, _1, _i, _i$1, _r, _ref, _ref$1, c, c$1, i, i$1, p, typeString, v, verb, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
p = this;
_1 = verb;
/* */ if ((_1 === (118)) || (_1 === (100))) { $s = 2; continue; }
/* */ if (_1 === (115)) { $s = 3; continue; }
/* */ if (_1 === (120)) { $s = 4; continue; }
/* */ if (_1 === (88)) { $s = 5; continue; }
/* */ if (_1 === (113)) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if ((_1 === (118)) || (_1 === (100))) { */ case 2:
if (p.fmt.fmtFlags.sharpV) {
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(typeString);
if (v === sliceType$2.nil) {
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(nil)");
$s = -1; return;
}
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(123);
_ref = v;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (i > 0) {
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(", ");
}
p.fmt0x64((new $Uint64(0, c)), true);
_i++;
}
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(125);
} else {
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(91);
_ref$1 = v;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
i$1 = _i$1;
c$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
if (i$1 > 0) {
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32);
}
p.fmt.fmt_integer((new $Uint64(0, c$1)), 10, false, "0123456789abcdefx");
_i$1++;
}
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(93);
}
$s = 8; continue;
/* } else if (_1 === (115)) { */ case 3:
p.fmt.fmt_s(($bytesToString(v)));
$s = 8; continue;
/* } else if (_1 === (120)) { */ case 4:
p.fmt.fmt_bx(v, "0123456789abcdefx");
$s = 8; continue;
/* } else if (_1 === (88)) { */ case 5:
p.fmt.fmt_bx(v, "0123456789ABCDEFX");
$s = 8; continue;
/* } else if (_1 === (113)) { */ case 6:
p.fmt.fmt_q(($bytesToString(v)));
$s = 8; continue;
/* } else { */ case 7:
_r = reflect.ValueOf(v); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$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; }
/* } */ case 8:
case 1:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtBytes }; } $f.$ptr = $ptr; $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;
};
pp.prototype.fmtBytes = function(v, verb, typeString) { return this.$val.fmtBytes(v, verb, typeString); };
pp.ptr.prototype.fmtPointer = function(value, verb) {
var $ptr, _1, _2, _r, p, u, value, verb, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _2 = $f._2; _r = $f._r; 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:
p = this;
u = 0;
_1 = $clone(value, reflect.Value).Kind();
/* */ if ((_1 === (18)) || (_1 === (19)) || (_1 === (21)) || (_1 === (22)) || (_1 === (23)) || (_1 === (26))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if ((_1 === (18)) || (_1 === (19)) || (_1 === (21)) || (_1 === (22)) || (_1 === (23)) || (_1 === (26))) { */ case 2:
u = $clone(value, reflect.Value).Pointer();
$s = 4; continue;
/* } else { */ case 3:
$r = p.badVerb(verb); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } */ case 4:
case 1:
_2 = verb;
/* */ if (_2 === (118)) { $s = 7; continue; }
/* */ if (_2 === (112)) { $s = 8; continue; }
/* */ if ((_2 === (98)) || (_2 === (111)) || (_2 === (100)) || (_2 === (120)) || (_2 === (88))) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (_2 === (118)) { */ case 7:
/* */ if (p.fmt.fmtFlags.sharpV) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (p.fmt.fmtFlags.sharpV) { */ case 12:
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(40);
_r = $clone(value, reflect.Value).Type().String(); /* */ $s = 15; case 15: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$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 = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(")(");
if (u === 0) {
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("nil");
} else {
p.fmt0x64((new $Uint64(0, u.constructor === Number ? u : 1)), true);
}
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(41);
$s = 14; continue;
/* } else { */ case 13:
if (u === 0) {
p.fmt.padString("<nil>");
} else {
p.fmt0x64((new $Uint64(0, u.constructor === Number ? u : 1)), !p.fmt.fmtFlags.sharp);
}
/* } */ case 14:
$s = 11; continue;
/* } else if (_2 === (112)) { */ case 8:
p.fmt0x64((new $Uint64(0, u.constructor === Number ? u : 1)), !p.fmt.fmtFlags.sharp);
$s = 11; continue;
/* } else if ((_2 === (98)) || (_2 === (111)) || (_2 === (100)) || (_2 === (120)) || (_2 === (88))) { */ case 9:
$r = p.fmtInteger((new $Uint64(0, u.constructor === Number ? u : 1)), false, verb); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 11; continue;
/* } else { */ case 10:
$r = p.badVerb(verb); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 11:
case 6:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtPointer }; } $f.$ptr = $ptr; $f._1 = _1; $f._2 = _2; $f._r = _r; $f.p = p; $f.u = u; $f.value = value; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
};
pp.prototype.fmtPointer = function(value, verb) { return this.$val.fmtPointer(value, verb); };
pp.ptr.prototype.catchPanic = function(arg, verb) {
var $ptr, _r, arg, err, oldFlags, p, v, verb, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
p = this;
err = $recover();
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 1:
_r = reflect.ValueOf(arg); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
v = _r;
if (($clone(v, reflect.Value).Kind() === 22) && $clone(v, reflect.Value).IsNil()) {
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("<nil>");
$s = -1; return;
}
if (p.panicking) {
$panic(err);
}
oldFlags = $clone(p.fmt.fmtFlags, fmtFlags);
p.fmt.clearflags();
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!");
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteRune(verb);
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(PANIC=");
p.panicking = true;
$r = p.printArg(err, 118); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
p.panicking = false;
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(41);
fmtFlags.copy(p.fmt.fmtFlags, oldFlags);
/* } */ case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.catchPanic }; } $f.$ptr = $ptr; $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;
};
pp.prototype.catchPanic = function(arg, verb) { return this.$val.catchPanic(arg, verb); };
pp.ptr.prototype.handleMethods = function(verb) {
var $ptr, _1, _r, _r$1, _r$2, _ref, _tuple, _tuple$1, formatter, handled, ok, ok$1, p, stringer, v, v$1, verb, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
handled = false;
p = this;
if (p.erroring) {
$s = -1; return handled;
}
_tuple = $assertType(p.arg, Formatter, true);
formatter = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (ok) { */ case 1:
handled = true;
$deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb]]);
$r = formatter.Format(p, verb); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return handled;
/* } */ case 2:
/* */ if (p.fmt.fmtFlags.sharpV) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (p.fmt.fmtFlags.sharpV) { */ case 4:
_tuple$1 = $assertType(p.arg, GoStringer, true);
stringer = _tuple$1[0];
ok$1 = _tuple$1[1];
/* */ if (ok$1) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (ok$1) { */ case 7:
handled = true;
$deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb]]);
_r = stringer.GoString(); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$r = p.fmt.fmt_s(_r); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return handled;
/* } */ case 8:
$s = 6; continue;
/* } else { */ case 5:
_1 = verb;
/* */ if ((_1 === (118)) || (_1 === (115)) || (_1 === (120)) || (_1 === (88)) || (_1 === (113))) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if ((_1 === (118)) || (_1 === (115)) || (_1 === (120)) || (_1 === (88)) || (_1 === (113))) { */ case 12:
_ref = p.arg;
/* */ if ($assertType(_ref, $error, true)[1]) { $s = 14; continue; }
/* */ if ($assertType(_ref, Stringer, true)[1]) { $s = 15; continue; }
/* */ $s = 16; continue;
/* if ($assertType(_ref, $error, true)[1]) { */ case 14:
v = _ref;
handled = true;
$deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb]]);
_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; }
$r = p.fmtString(_r$1, verb); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return handled;
/* } else if ($assertType(_ref, Stringer, true)[1]) { */ case 15:
v$1 = _ref;
handled = true;
$deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb]]);
_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; }
$r = p.fmtString(_r$2, verb); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return handled;
/* } */ case 16:
/* } */ case 13:
case 11:
/* } */ case 6:
handled = false;
$s = -1; return handled;
/* */ } 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.$ptr = $ptr; $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; } }
};
pp.prototype.handleMethods = function(verb) { return this.$val.handleMethods(verb); };
pp.ptr.prototype.printArg = function(arg, verb) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
p = this;
p.arg = arg;
p.value = new reflect.Value.ptr(ptrType.nil, 0, 0);
/* */ if ($interfaceIsEqual(arg, $ifaceNil)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if ($interfaceIsEqual(arg, $ifaceNil)) { */ case 1:
_1 = verb;
/* */ if ((_1 === (84)) || (_1 === (118))) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if ((_1 === (84)) || (_1 === (118))) { */ case 4:
p.fmt.padString("<nil>");
$s = 6; continue;
/* } else { */ case 5:
$r = p.badVerb(verb); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 6:
case 3:
$s = -1; return;
/* } */ case 2:
_2 = verb;
/* */ if (_2 === (84)) { $s = 9; continue; }
/* */ if (_2 === (112)) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (_2 === (84)) { */ case 9:
_r = reflect.TypeOf(arg).String(); /* */ $s = 12; case 12: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$r = p.fmt.fmt_s(_r); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } else if (_2 === (112)) { */ case 10:
_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; }
$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; }
$s = -1; return;
/* } */ case 11:
case 8:
_ref = arg;
/* */ if ($assertType(_ref, $Bool, true)[1]) { $s = 16; continue; }
/* */ if ($assertType(_ref, $Float32, true)[1]) { $s = 17; continue; }
/* */ if ($assertType(_ref, $Float64, true)[1]) { $s = 18; continue; }
/* */ if ($assertType(_ref, $Complex64, true)[1]) { $s = 19; continue; }
/* */ if ($assertType(_ref, $Complex128, true)[1]) { $s = 20; continue; }
/* */ if ($assertType(_ref, $Int, true)[1]) { $s = 21; continue; }
/* */ if ($assertType(_ref, $Int8, true)[1]) { $s = 22; continue; }
/* */ if ($assertType(_ref, $Int16, true)[1]) { $s = 23; continue; }
/* */ if ($assertType(_ref, $Int32, true)[1]) { $s = 24; continue; }
/* */ if ($assertType(_ref, $Int64, true)[1]) { $s = 25; continue; }
/* */ if ($assertType(_ref, $Uint, true)[1]) { $s = 26; continue; }
/* */ if ($assertType(_ref, $Uint8, true)[1]) { $s = 27; continue; }
/* */ if ($assertType(_ref, $Uint16, true)[1]) { $s = 28; continue; }
/* */ if ($assertType(_ref, $Uint32, true)[1]) { $s = 29; continue; }
/* */ if ($assertType(_ref, $Uint64, true)[1]) { $s = 30; continue; }
/* */ if ($assertType(_ref, $Uintptr, true)[1]) { $s = 31; continue; }
/* */ if ($assertType(_ref, $String, true)[1]) { $s = 32; continue; }
/* */ if ($assertType(_ref, sliceType$2, true)[1]) { $s = 33; continue; }
/* */ if ($assertType(_ref, reflect.Value, true)[1]) { $s = 34; continue; }
/* */ $s = 35; continue;
/* if ($assertType(_ref, $Bool, true)[1]) { */ case 16:
f = _ref.$val;
$r = p.fmtBool(f, verb); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 36; continue;
/* } else if ($assertType(_ref, $Float32, true)[1]) { */ case 17:
f$1 = _ref.$val;
$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; }
$s = 36; continue;
/* } else if ($assertType(_ref, $Float64, true)[1]) { */ case 18:
f$2 = _ref.$val;
$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; }
$s = 36; continue;
/* } else if ($assertType(_ref, $Complex64, true)[1]) { */ case 19:
f$3 = _ref.$val;
$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; }
$s = 36; continue;
/* } else if ($assertType(_ref, $Complex128, true)[1]) { */ case 20:
f$4 = _ref.$val;
$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; }
$s = 36; continue;
/* } else if ($assertType(_ref, $Int, true)[1]) { */ case 21:
f$5 = _ref.$val;
$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; }
$s = 36; continue;
/* } else if ($assertType(_ref, $Int8, true)[1]) { */ case 22:
f$6 = _ref.$val;
$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; }
$s = 36; continue;
/* } else if ($assertType(_ref, $Int16, true)[1]) { */ case 23:
f$7 = _ref.$val;
$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; }
$s = 36; continue;
/* } else if ($assertType(_ref, $Int32, true)[1]) { */ case 24:
f$8 = _ref.$val;
$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; }
$s = 36; continue;
/* } else if ($assertType(_ref, $Int64, true)[1]) { */ case 25:
f$9 = _ref.$val;
$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; }
$s = 36; continue;
/* } else if ($assertType(_ref, $Uint, true)[1]) { */ case 26:
f$10 = _ref.$val;
$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; }
$s = 36; continue;
/* } else if ($assertType(_ref, $Uint8, true)[1]) { */ case 27:
f$11 = _ref.$val;
$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; }
$s = 36; continue;
/* } else if ($assertType(_ref, $Uint16, true)[1]) { */ case 28:
f$12 = _ref.$val;
$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; }
$s = 36; continue;
/* } else if ($assertType(_ref, $Uint32, true)[1]) { */ case 29:
f$13 = _ref.$val;
$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; }
$s = 36; continue;
/* } else if ($assertType(_ref, $Uint64, true)[1]) { */ case 30:
f$14 = _ref.$val;
$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; }
$s = 36; continue;
/* } else if ($assertType(_ref, $Uintptr, true)[1]) { */ case 31:
f$15 = _ref.$val;
$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; }
$s = 36; continue;
/* } else if ($assertType(_ref, $String, true)[1]) { */ case 32:
f$16 = _ref.$val;
$r = p.fmtString(f$16, verb); /* */ $s = 53; case 53: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 36; continue;
/* } else if ($assertType(_ref, sliceType$2, true)[1]) { */ case 33:
f$17 = _ref.$val;
$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; }
$s = 36; continue;
/* } else if ($assertType(_ref, reflect.Value, true)[1]) { */ case 34:
f$18 = _ref.$val;
/* */ if ($clone(f$18, reflect.Value).IsValid() && $clone(f$18, reflect.Value).CanInterface()) { $s = 55; continue; }
/* */ $s = 56; continue;
/* if ($clone(f$18, reflect.Value).IsValid() && $clone(f$18, reflect.Value).CanInterface()) { */ case 55:
_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; }
p.arg = _r$2;
_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; }
/* */ if (_r$3) { $s = 58; continue; }
/* */ $s = 59; continue;
/* if (_r$3) { */ case 58:
$s = -1; return;
/* } */ case 59:
/* } */ case 56:
$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; }
$s = 36; continue;
/* } else { */ case 35:
f$19 = _ref;
_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; }
/* */ if (!_r$4) { $s = 62; continue; }
/* */ $s = 63; continue;
/* if (!_r$4) { */ case 62:
_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; }
$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; }
/* } */ case 63:
/* } */ case 36:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.printArg }; } $f.$ptr = $ptr; $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;
};
pp.prototype.printArg = function(arg, verb) { return this.$val.printArg(arg, verb); };
pp.ptr.prototype.printValue = function(value, verb, depth) {
var $ptr, _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$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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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$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:
p = this;
/* */ if (depth > 0 && $clone(value, reflect.Value).IsValid() && $clone(value, reflect.Value).CanInterface()) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (depth > 0 && $clone(value, reflect.Value).IsValid() && $clone(value, reflect.Value).CanInterface()) { */ case 1:
_r = $clone(value, reflect.Value).Interface(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
p.arg = _r;
_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; }
/* */ if (_r$1) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (_r$1) { */ case 4:
$s = -1; return;
/* } */ case 5:
/* } */ case 2:
p.arg = $ifaceNil;
p.value = value;
f = value;
_1 = $clone(value, reflect.Value).Kind();
/* */ if (_1 === (0)) { $s = 8; continue; }
/* */ if (_1 === (1)) { $s = 9; continue; }
/* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 10; continue; }
/* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { $s = 11; continue; }
/* */ if (_1 === (13)) { $s = 12; continue; }
/* */ if (_1 === (14)) { $s = 13; continue; }
/* */ if (_1 === (15)) { $s = 14; continue; }
/* */ if (_1 === (16)) { $s = 15; continue; }
/* */ if (_1 === (24)) { $s = 16; continue; }
/* */ if (_1 === (21)) { $s = 17; continue; }
/* */ if (_1 === (25)) { $s = 18; continue; }
/* */ if (_1 === (20)) { $s = 19; continue; }
/* */ if ((_1 === (17)) || (_1 === (23))) { $s = 20; continue; }
/* */ if (_1 === (22)) { $s = 21; continue; }
/* */ if ((_1 === (18)) || (_1 === (19)) || (_1 === (26))) { $s = 22; continue; }
/* */ $s = 23; continue;
/* if (_1 === (0)) { */ case 8:
/* */ if (depth === 0) { $s = 25; continue; }
/* */ $s = 26; continue;
/* if (depth === 0) { */ case 25:
(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>");
$s = 27; continue;
/* } else { */ case 26:
_2 = verb;
/* */ if (_2 === (118)) { $s = 29; continue; }
/* */ $s = 30; continue;
/* if (_2 === (118)) { */ case 29:
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("<nil>");
$s = 31; continue;
/* } else { */ case 30:
$r = p.badVerb(verb); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 31:
case 28:
/* } */ case 27:
$s = 24; continue;
/* } else if (_1 === (1)) { */ case 9:
$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; }
$s = 24; continue;
/* } else if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 10:
$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; }
$s = 24; continue;
/* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { */ case 11:
$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; }
$s = 24; continue;
/* } else if (_1 === (13)) { */ case 12:
$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; }
$s = 24; continue;
/* } else if (_1 === (14)) { */ case 13:
$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; }
$s = 24; continue;
/* } else if (_1 === (15)) { */ case 14:
$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; }
$s = 24; continue;
/* } else if (_1 === (16)) { */ case 15:
$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; }
$s = 24; continue;
/* } else if (_1 === (24)) { */ case 16:
_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; }
$r = p.fmtString(_r$2, verb); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 24; continue;
/* } else if (_1 === (21)) { */ case 17:
/* */ if (p.fmt.fmtFlags.sharpV) { $s = 42; continue; }
/* */ $s = 43; continue;
/* if (p.fmt.fmtFlags.sharpV) { */ case 42:
_r$3 = $clone(f, reflect.Value).Type().String(); /* */ $s = 45; case 45: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
$r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$3); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if ($clone(f, reflect.Value).IsNil()) {
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(nil)");
$s = -1; return;
}
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(123);
$s = 44; continue;
/* } else { */ case 43:
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("map[");
/* } */ case 44:
_r$4 = $clone(f, reflect.Value).MapKeys(); /* */ $s = 47; case 47: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
keys = _r$4;
_ref = keys;
_i = 0;
/* while (true) { */ case 48:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 49; continue; }
i = _i;
key = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (i > 0) {
if (p.fmt.fmtFlags.sharpV) {
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(", ");
} else {
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32);
}
}
$r = p.printValue($clone(key, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(58);
_r$5 = $clone(f, reflect.Value).MapIndex($clone(key, reflect.Value)); /* */ $s = 51; case 51: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
$r = p.printValue($clone(_r$5, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 52; case 52: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_i++;
/* } */ $s = 48; continue; case 49:
if (p.fmt.fmtFlags.sharpV) {
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(125);
} else {
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(93);
}
$s = 24; continue;
/* } else if (_1 === (25)) { */ case 18:
/* */ if (p.fmt.fmtFlags.sharpV) { $s = 53; continue; }
/* */ $s = 54; continue;
/* if (p.fmt.fmtFlags.sharpV) { */ case 53:
_r$6 = $clone(f, reflect.Value).Type().String(); /* */ $s = 55; case 55: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
$r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$6); /* */ $s = 56; case 56: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 54:
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(123);
i$1 = 0;
/* while (true) { */ case 57:
/* if (!(i$1 < $clone(f, reflect.Value).NumField())) { break; } */ if(!(i$1 < $clone(f, reflect.Value).NumField())) { $s = 58; continue; }
if (i$1 > 0) {
if (p.fmt.fmtFlags.sharpV) {
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(", ");
} else {
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32);
}
}
/* */ if (p.fmt.fmtFlags.plusV || p.fmt.fmtFlags.sharpV) { $s = 59; continue; }
/* */ $s = 60; continue;
/* if (p.fmt.fmtFlags.plusV || p.fmt.fmtFlags.sharpV) { */ case 59:
_r$7 = $clone(f, reflect.Value).Type().Field(i$1); /* */ $s = 61; case 61: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
name = _r$7.Name;
if (!(name === "")) {
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(name);
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(58);
}
/* } */ case 60:
_r$8 = getField($clone(f, reflect.Value), i$1); /* */ $s = 62; case 62: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
$r = p.printValue($clone(_r$8, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 63; case 63: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
i$1 = i$1 + (1) >> 0;
/* } */ $s = 57; continue; case 58:
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(125);
$s = 24; continue;
/* } else if (_1 === (20)) { */ case 19:
_r$9 = $clone(f, reflect.Value).Elem(); /* */ $s = 64; case 64: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
value$1 = _r$9;
/* */ if (!$clone(value$1, reflect.Value).IsValid()) { $s = 65; continue; }
/* */ $s = 66; continue;
/* if (!$clone(value$1, reflect.Value).IsValid()) { */ case 65:
/* */ if (p.fmt.fmtFlags.sharpV) { $s = 68; continue; }
/* */ $s = 69; continue;
/* if (p.fmt.fmtFlags.sharpV) { */ case 68:
_r$10 = $clone(f, reflect.Value).Type().String(); /* */ $s = 71; case 71: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
$r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$10); /* */ $s = 72; case 72: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(nil)");
$s = 70; continue;
/* } else { */ case 69:
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("<nil>");
/* } */ case 70:
$s = 67; continue;
/* } else { */ case 66:
$r = p.printValue($clone(value$1, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 73; case 73: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 67:
$s = 24; continue;
/* } else if ((_1 === (17)) || (_1 === (23))) { */ case 20:
_3 = verb;
/* */ if ((_3 === (115)) || (_3 === (113)) || (_3 === (120)) || (_3 === (88))) { $s = 75; continue; }
/* */ $s = 76; continue;
/* if ((_3 === (115)) || (_3 === (113)) || (_3 === (120)) || (_3 === (88))) { */ case 75:
t = $clone(f, reflect.Value).Type();
_r$11 = t.Elem(); /* */ $s = 79; case 79: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
_r$12 = _r$11.Kind(); /* */ $s = 80; case 80: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
/* */ if (_r$12 === 8) { $s = 77; continue; }
/* */ $s = 78; continue;
/* if (_r$12 === 8) { */ case 77:
bytes = sliceType$2.nil;
/* */ if ($clone(f, reflect.Value).Kind() === 23) { $s = 81; continue; }
/* */ if ($clone(f, reflect.Value).CanAddr()) { $s = 82; continue; }
/* */ $s = 83; continue;
/* if ($clone(f, reflect.Value).Kind() === 23) { */ case 81:
_r$13 = $clone(f, reflect.Value).Bytes(); /* */ $s = 85; case 85: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
bytes = _r$13;
$s = 84; continue;
/* } else if ($clone(f, reflect.Value).CanAddr()) { */ case 82:
_r$14 = $clone(f, reflect.Value).Slice(0, $clone(f, reflect.Value).Len()); /* */ $s = 86; case 86: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
_r$15 = $clone(_r$14, reflect.Value).Bytes(); /* */ $s = 87; case 87: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
bytes = _r$15;
$s = 84; continue;
/* } else { */ case 83:
bytes = $makeSlice(sliceType$2, $clone(f, reflect.Value).Len());
_ref$1 = bytes;
_i$1 = 0;
/* while (true) { */ case 88:
/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 89; continue; }
i$2 = _i$1;
_r$16 = $clone(f, reflect.Value).Index(i$2); /* */ $s = 90; case 90: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
_r$17 = $clone(_r$16, reflect.Value).Uint(); /* */ $s = 91; case 91: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
((i$2 < 0 || i$2 >= bytes.$length) ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + i$2] = ((_r$17.$low << 24 >>> 24)));
_i$1++;
/* } */ $s = 88; continue; case 89:
/* } */ case 84:
_arg = bytes;
_arg$1 = verb;
_r$18 = t.String(); /* */ $s = 92; case 92: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
_arg$2 = _r$18;
$r = p.fmtBytes(_arg, _arg$1, _arg$2); /* */ $s = 93; case 93: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } */ case 78:
/* } */ case 76:
case 74:
/* */ if (p.fmt.fmtFlags.sharpV) { $s = 94; continue; }
/* */ $s = 95; continue;
/* if (p.fmt.fmtFlags.sharpV) { */ case 94:
_r$19 = $clone(f, reflect.Value).Type().String(); /* */ $s = 97; case 97: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
$r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$19); /* */ $s = 98; case 98: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (($clone(f, reflect.Value).Kind() === 23) && $clone(f, reflect.Value).IsNil()) {
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(nil)");
$s = -1; return;
}
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(123);
i$3 = 0;
/* while (true) { */ case 99:
/* if (!(i$3 < $clone(f, reflect.Value).Len())) { break; } */ if(!(i$3 < $clone(f, reflect.Value).Len())) { $s = 100; continue; }
if (i$3 > 0) {
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(", ");
}
_r$20 = $clone(f, reflect.Value).Index(i$3); /* */ $s = 101; case 101: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
$r = p.printValue($clone(_r$20, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 102; case 102: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
i$3 = i$3 + (1) >> 0;
/* } */ $s = 99; continue; case 100:
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(125);
$s = 96; continue;
/* } else { */ case 95:
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(91);
i$4 = 0;
/* while (true) { */ case 103:
/* if (!(i$4 < $clone(f, reflect.Value).Len())) { break; } */ if(!(i$4 < $clone(f, reflect.Value).Len())) { $s = 104; continue; }
if (i$4 > 0) {
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32);
}
_r$21 = $clone(f, reflect.Value).Index(i$4); /* */ $s = 105; case 105: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
$r = p.printValue($clone(_r$21, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 106; case 106: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
i$4 = i$4 + (1) >> 0;
/* } */ $s = 103; continue; case 104:
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(93);
/* } */ case 96:
$s = 24; continue;
/* } else if (_1 === (22)) { */ case 21:
/* */ if ((depth === 0) && !(($clone(f, reflect.Value).Pointer() === 0))) { $s = 107; continue; }
/* */ $s = 108; continue;
/* if ((depth === 0) && !(($clone(f, reflect.Value).Pointer() === 0))) { */ case 107:
_r$22 = $clone(f, reflect.Value).Elem(); /* */ $s = 110; case 110: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
a = _r$22;
_4 = $clone(a, reflect.Value).Kind();
/* */ if ((_4 === (17)) || (_4 === (23)) || (_4 === (25)) || (_4 === (21))) { $s = 111; continue; }
/* */ $s = 112; continue;
/* if ((_4 === (17)) || (_4 === (23)) || (_4 === (25)) || (_4 === (21))) { */ case 111:
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(38);
$r = p.printValue($clone(a, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 113; case 113: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } */ case 112:
case 109:
/* } */ case 108:
$r = p.fmtPointer($clone(f, reflect.Value), verb); /* */ $s = 114; case 114: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 24; continue;
/* } else if ((_1 === (18)) || (_1 === (19)) || (_1 === (26))) { */ case 22:
$r = p.fmtPointer($clone(f, reflect.Value), verb); /* */ $s = 115; case 115: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 24; continue;
/* } else { */ case 23:
$r = p.unknownType($clone(f, reflect.Value)); /* */ $s = 116; case 116: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 24:
case 7:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.printValue }; } $f.$ptr = $ptr; $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$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;
};
pp.prototype.printValue = function(value, verb, depth) { return this.$val.printValue(value, verb, depth); };
intFromArg = function(a, argNum) {
var $ptr, _1, _r, _tuple, a, argNum, isInt, n, n$1, newArgNum, num, v, x, x$1, x$2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
num = 0;
isInt = false;
newArgNum = 0;
newArgNum = argNum;
/* */ if (argNum < a.$length) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (argNum < a.$length) { */ case 1:
_tuple = $assertType(((argNum < 0 || argNum >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + argNum]), $Int, true);
num = _tuple[0];
isInt = _tuple[1];
/* */ if (!isInt) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!isInt) { */ case 3:
_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; }
v = _r;
_1 = $clone(v, reflect.Value).Kind();
if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) {
n = $clone(v, reflect.Value).Int();
if ((x = (new $Int64(0, (((n.$low + ((n.$high >> 31) * 4294967296)) >> 0)))), (x.$high === n.$high && x.$low === n.$low))) {
num = (((n.$low + ((n.$high >> 31) * 4294967296)) >> 0));
isInt = true;
}
} else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) {
n$1 = $clone(v, reflect.Value).Uint();
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))) {
num = ((n$1.$low >> 0));
isInt = true;
}
}
case 5:
/* } */ case 4:
newArgNum = argNum + 1 >> 0;
if (tooLarge(num)) {
num = 0;
isInt = false;
}
/* } */ case 2:
$s = -1; return [num, isInt, newArgNum];
/* */ } return; } if ($f === undefined) { $f = { $blk: intFromArg }; } $f.$ptr = $ptr; $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;
};
parseArgNumber = function(format) {
var $ptr, _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;
index = 0;
wid = 0;
ok = false;
if (format.length < 3) {
_tmp = 0;
_tmp$1 = 1;
_tmp$2 = false;
index = _tmp;
wid = _tmp$1;
ok = _tmp$2;
return [index, wid, ok];
}
i = 1;
while (true) {
if (!(i < format.length)) { break; }
if (format.charCodeAt(i) === 93) {
_tuple = parsenum(format, 1, i);
width = _tuple[0];
ok$1 = _tuple[1];
newi = _tuple[2];
if (!ok$1 || !((newi === i))) {
_tmp$3 = 0;
_tmp$4 = i + 1 >> 0;
_tmp$5 = false;
index = _tmp$3;
wid = _tmp$4;
ok = _tmp$5;
return [index, wid, ok];
}
_tmp$6 = width - 1 >> 0;
_tmp$7 = i + 1 >> 0;
_tmp$8 = true;
index = _tmp$6;
wid = _tmp$7;
ok = _tmp$8;
return [index, wid, ok];
}
i = i + (1) >> 0;
}
_tmp$9 = 0;
_tmp$10 = 1;
_tmp$11 = false;
index = _tmp$9;
wid = _tmp$10;
ok = _tmp$11;
return [index, wid, ok];
};
pp.ptr.prototype.argNumber = function(argNum, format, i, numArgs) {
var $ptr, _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;
newArgNum = 0;
newi = 0;
found = false;
p = this;
if (format.length <= i || !((format.charCodeAt(i) === 91))) {
_tmp = argNum;
_tmp$1 = i;
_tmp$2 = false;
newArgNum = _tmp;
newi = _tmp$1;
found = _tmp$2;
return [newArgNum, newi, found];
}
p.reordered = true;
_tuple = parseArgNumber($substring(format, i));
index = _tuple[0];
wid = _tuple[1];
ok = _tuple[2];
if (ok && 0 <= index && index < numArgs) {
_tmp$3 = index;
_tmp$4 = i + wid >> 0;
_tmp$5 = true;
newArgNum = _tmp$3;
newi = _tmp$4;
found = _tmp$5;
return [newArgNum, newi, found];
}
p.goodArgNum = false;
_tmp$6 = argNum;
_tmp$7 = i + wid >> 0;
_tmp$8 = ok;
newArgNum = _tmp$6;
newi = _tmp$7;
found = _tmp$8;
return [newArgNum, newi, found];
};
pp.prototype.argNumber = function(argNum, format, i, numArgs) { return this.$val.argNumber(argNum, format, i, numArgs); };
pp.ptr.prototype.badArgNum = function(verb) {
var $ptr, p, verb;
p = this;
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!");
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteRune(verb);
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(BADINDEX)");
};
pp.prototype.badArgNum = function(verb) { return this.$val.badArgNum(verb); };
pp.ptr.prototype.missingArg = function(verb) {
var $ptr, p, verb;
p = this;
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!");
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteRune(verb);
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(MISSING)");
};
pp.prototype.missingArg = function(verb) { return this.$val.missingArg(verb); };
pp.ptr.prototype.doPrintf = function(format, a) {
var $ptr, _1, _i, _r, _r$1, _r$2, _ref, _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, verb, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _i = $f._i; _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; _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; verb = $f.verb; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
p = this;
end = format.length;
argNum = 0;
afterIndex = false;
p.reordered = false;
i = 0;
/* while (true) { */ case 1:
/* if (!(i < end)) { break; } */ if(!(i < end)) { $s = 2; continue; }
p.goodArgNum = true;
lasti = i;
while (true) {
if (!(i < end && !((format.charCodeAt(i) === 37)))) { break; }
i = i + (1) >> 0;
}
if (i > lasti) {
(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));
}
if (i >= end) {
/* break; */ $s = 2; continue;
}
i = i + (1) >> 0;
p.fmt.clearflags();
/* while (true) { */ case 3:
/* if (!(i < end)) { break; } */ if(!(i < end)) { $s = 4; continue; }
c = format.charCodeAt(i);
_1 = c;
/* */ if (_1 === (35)) { $s = 6; continue; }
/* */ if (_1 === (48)) { $s = 7; continue; }
/* */ if (_1 === (43)) { $s = 8; continue; }
/* */ if (_1 === (45)) { $s = 9; continue; }
/* */ if (_1 === (32)) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (_1 === (35)) { */ case 6:
p.fmt.fmtFlags.sharp = true;
$s = 12; continue;
/* } else if (_1 === (48)) { */ case 7:
p.fmt.fmtFlags.zero = !p.fmt.fmtFlags.minus;
$s = 12; continue;
/* } else if (_1 === (43)) { */ case 8:
p.fmt.fmtFlags.plus = true;
$s = 12; continue;
/* } else if (_1 === (45)) { */ case 9:
p.fmt.fmtFlags.minus = true;
p.fmt.fmtFlags.zero = false;
$s = 12; continue;
/* } else if (_1 === (32)) { */ case 10:
p.fmt.fmtFlags.space = true;
$s = 12; continue;
/* } else { */ case 11:
/* */ if (97 <= c && c <= 122 && argNum < a.$length) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (97 <= c && c <= 122 && argNum < a.$length) { */ case 13:
if (c === 118) {
p.fmt.fmtFlags.sharpV = p.fmt.fmtFlags.sharp;
p.fmt.fmtFlags.sharp = false;
p.fmt.fmtFlags.plusV = p.fmt.fmtFlags.plus;
p.fmt.fmtFlags.plus = false;
}
$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; }
argNum = argNum + (1) >> 0;
i = i + (1) >> 0;
/* continue formatLoop; */ $s = 1; continue s;
/* } */ case 14:
/* break simpleFormat; */ $s = 4; continue s;
/* } */ case 12:
case 5:
i = i + (1) >> 0;
/* } */ $s = 3; continue; case 4:
_tuple = p.argNumber(argNum, format, i, a.$length);
argNum = _tuple[0];
i = _tuple[1];
afterIndex = _tuple[2];
/* */ if (i < end && (format.charCodeAt(i) === 42)) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (i < end && (format.charCodeAt(i) === 42)) { */ case 16:
i = i + (1) >> 0;
_r = intFromArg(a, argNum); /* */ $s = 19; case 19: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
p.fmt.wid = _tuple$1[0];
p.fmt.fmtFlags.widPresent = _tuple$1[1];
argNum = _tuple$1[2];
if (!p.fmt.fmtFlags.widPresent) {
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!(BADWIDTH)");
}
if (p.fmt.wid < 0) {
p.fmt.wid = -p.fmt.wid;
p.fmt.fmtFlags.minus = true;
p.fmt.fmtFlags.zero = false;
}
afterIndex = false;
$s = 18; continue;
/* } else { */ case 17:
_tuple$2 = parsenum(format, i, end);
p.fmt.wid = _tuple$2[0];
p.fmt.fmtFlags.widPresent = _tuple$2[1];
i = _tuple$2[2];
if (afterIndex && p.fmt.fmtFlags.widPresent) {
p.goodArgNum = false;
}
/* } */ case 18:
/* */ if ((i + 1 >> 0) < end && (format.charCodeAt(i) === 46)) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if ((i + 1 >> 0) < end && (format.charCodeAt(i) === 46)) { */ case 20:
i = i + (1) >> 0;
if (afterIndex) {
p.goodArgNum = false;
}
_tuple$3 = p.argNumber(argNum, format, i, a.$length);
argNum = _tuple$3[0];
i = _tuple$3[1];
afterIndex = _tuple$3[2];
/* */ if (i < end && (format.charCodeAt(i) === 42)) { $s = 22; continue; }
/* */ $s = 23; continue;
/* if (i < end && (format.charCodeAt(i) === 42)) { */ case 22:
i = i + (1) >> 0;
_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; }
_tuple$4 = _r$1;
p.fmt.prec = _tuple$4[0];
p.fmt.fmtFlags.precPresent = _tuple$4[1];
argNum = _tuple$4[2];
if (p.fmt.prec < 0) {
p.fmt.prec = 0;
p.fmt.fmtFlags.precPresent = false;
}
if (!p.fmt.fmtFlags.precPresent) {
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!(BADPREC)");
}
afterIndex = false;
$s = 24; continue;
/* } else { */ case 23:
_tuple$5 = parsenum(format, i, end);
p.fmt.prec = _tuple$5[0];
p.fmt.fmtFlags.precPresent = _tuple$5[1];
i = _tuple$5[2];
if (!p.fmt.fmtFlags.precPresent) {
p.fmt.prec = 0;
p.fmt.fmtFlags.precPresent = true;
}
/* } */ case 24:
/* } */ case 21:
if (!afterIndex) {
_tuple$6 = p.argNumber(argNum, format, i, a.$length);
argNum = _tuple$6[0];
i = _tuple$6[1];
afterIndex = _tuple$6[2];
}
if (i >= end) {
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!(NOVERB)");
/* break; */ $s = 2; continue;
}
_tuple$7 = utf8.DecodeRuneInString($substring(format, i));
verb = _tuple$7[0];
w = _tuple$7[1];
i = i + (w) >> 0;
/* */ if ((verb === 37)) { $s = 27; continue; }
/* */ if (!p.goodArgNum) { $s = 28; continue; }
/* */ if (argNum >= a.$length) { $s = 29; continue; }
/* */ if ((verb === 118)) { $s = 30; continue; }
/* */ $s = 31; continue;
/* if ((verb === 37)) { */ case 27:
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(37);
$s = 32; continue;
/* } else if (!p.goodArgNum) { */ case 28:
p.badArgNum(verb);
$s = 32; continue;
/* } else if (argNum >= a.$length) { */ case 29:
p.missingArg(verb);
$s = 32; continue;
/* } else if ((verb === 118)) { */ case 30:
p.fmt.fmtFlags.sharpV = p.fmt.fmtFlags.sharp;
p.fmt.fmtFlags.sharp = false;
p.fmt.fmtFlags.plusV = p.fmt.fmtFlags.plus;
p.fmt.fmtFlags.plus = false;
$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; }
argNum = argNum + (1) >> 0;
$s = 32; continue;
/* } else { */ case 31:
$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; }
argNum = argNum + (1) >> 0;
/* } */ case 32:
case 26:
/* } */ $s = 1; continue; case 2:
/* */ if (!p.reordered && argNum < a.$length) { $s = 35; continue; }
/* */ $s = 36; continue;
/* if (!p.reordered && argNum < a.$length) { */ case 35:
p.fmt.clearflags();
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!(EXTRA ");
_ref = $subslice(a, argNum);
_i = 0;
/* while (true) { */ case 37:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 38; continue; }
i$1 = _i;
arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (i$1 > 0) {
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(", ");
}
/* */ if ($interfaceIsEqual(arg, $ifaceNil)) { $s = 39; continue; }
/* */ $s = 40; continue;
/* if ($interfaceIsEqual(arg, $ifaceNil)) { */ case 39:
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("<nil>");
$s = 41; continue;
/* } else { */ case 40:
_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; }
$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; }
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(61);
$r = p.printArg(arg, 118); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 41:
_i++;
/* } */ $s = 37; continue; case 38:
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(41);
/* } */ case 36:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.doPrintf }; } $f.$ptr = $ptr; $f._1 = _1; $f._i = _i; $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._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.verb = verb; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
pp.prototype.doPrintf = function(format, a) { return this.$val.doPrintf(format, a); };
pp.ptr.prototype.doPrint = function(a) {
var $ptr, _i, _r, _ref, _v, a, arg, argNum, isString, p, prevString, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
p = this;
prevString = false;
_ref = a;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
argNum = _i;
arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (!(!($interfaceIsEqual(arg, $ifaceNil)))) { _v = false; $s = 3; continue s; }
_r = reflect.TypeOf(arg).Kind(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_v = _r === 24; case 3:
isString = _v;
if (argNum > 0 && !isString && !prevString) {
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32);
}
$r = p.printArg(arg, 118); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
prevString = isString;
_i++;
/* } */ $s = 1; continue; case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.doPrint }; } $f.$ptr = $ptr; $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;
};
pp.prototype.doPrint = function(a) { return this.$val.doPrint(a); };
pp.ptr.prototype.doPrintln = function(a) {
var $ptr, _i, _ref, a, arg, argNum, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
p = this;
_ref = a;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
argNum = _i;
arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (argNum > 0) {
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32);
}
$r = p.printArg(arg, 118); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_i++;
/* } */ $s = 1; continue; case 2:
(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(10);
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.doPrintln }; } $f.$ptr = $ptr; $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;
};
pp.prototype.doPrintln = function(a) { return this.$val.doPrintln(a); };
ss.ptr.prototype.Read = function(buf) {
var $ptr, _tmp, _tmp$1, buf, err, n, s;
n = 0;
err = $ifaceNil;
s = this;
_tmp = 0;
_tmp$1 = errors.New("ScanState's Read should not be called. Use ReadRune");
n = _tmp;
err = _tmp$1;
return [n, err];
};
ss.prototype.Read = function(buf) { return this.$val.Read(buf); };
ss.ptr.prototype.ReadRune = function() {
var $ptr, _r, _tuple, err, r, s, size, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
r = 0;
size = 0;
err = $ifaceNil;
s = this;
if (s.atEOF || s.count >= s.ssave.argLimit) {
err = io.EOF;
$s = -1; return [r, size, err];
}
_r = s.rs.ReadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
r = _tuple[0];
size = _tuple[1];
err = _tuple[2];
if ($interfaceIsEqual(err, $ifaceNil)) {
s.count = s.count + (1) >> 0;
if (s.ssave.nlIsEnd && (r === 10)) {
s.atEOF = true;
}
} else if ($interfaceIsEqual(err, io.EOF)) {
s.atEOF = true;
}
$s = -1; return [r, size, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.ReadRune }; } $f.$ptr = $ptr; $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;
};
ss.prototype.ReadRune = function() { return this.$val.ReadRune(); };
ss.ptr.prototype.Width = function() {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, ok, s, wid;
wid = 0;
ok = false;
s = this;
if (s.ssave.maxWid === 1073741824) {
_tmp = 0;
_tmp$1 = false;
wid = _tmp;
ok = _tmp$1;
return [wid, ok];
}
_tmp$2 = s.ssave.maxWid;
_tmp$3 = true;
wid = _tmp$2;
ok = _tmp$3;
return [wid, ok];
};
ss.prototype.Width = function() { return this.$val.Width(); };
ss.ptr.prototype.getRune = function() {
var $ptr, _r, _tuple, err, r, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
r = 0;
s = this;
_r = s.ReadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
r = _tuple[0];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
if ($interfaceIsEqual(err, io.EOF)) {
r = -1;
$s = -1; return r;
}
s.error(err);
}
$s = -1; return r;
/* */ } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.getRune }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.r = r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
ss.prototype.getRune = function() { return this.$val.getRune(); };
ss.ptr.prototype.UnreadRune = function() {
var $ptr, _r, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
s = this;
_r = s.rs.UnreadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
s.atEOF = false;
s.count = s.count - (1) >> 0;
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.UnreadRune }; } $f.$ptr = $ptr; $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
ss.prototype.UnreadRune = function() { return this.$val.UnreadRune(); };
ss.ptr.prototype.error = function(err) {
var $ptr, err, s, x;
s = this;
$panic((x = new scanError.ptr(err), new x.constructor.elem(x)));
};
ss.prototype.error = function(err) { return this.$val.error(err); };
ss.ptr.prototype.errorString = function(err) {
var $ptr, err, s, x;
s = this;
$panic((x = new scanError.ptr(errors.New(err)), new x.constructor.elem(x)));
};
ss.prototype.errorString = function(err) { return this.$val.errorString(err); };
ss.ptr.prototype.Token = function(skipSpace, f) {
var $ptr, _r, err, f, s, skipSpace, tok, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
err = [err];
tok = sliceType$2.nil;
err[0] = $ifaceNil;
s = this;
$deferred.push([(function(err) { return function() {
var $ptr, _tuple, e, ok, se;
e = $recover();
if (!($interfaceIsEqual(e, $ifaceNil))) {
_tuple = $assertType(e, scanError, true);
se = $clone(_tuple[0], scanError);
ok = _tuple[1];
if (ok) {
err[0] = se.err;
} else {
$panic(e);
}
}
}; })(err), []]);
if (f === $throwNilPointerError) {
f = notSpace;
}
s.buf = $subslice(s.buf, 0, 0);
_r = s.token(skipSpace, f); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
tok = _r;
$s = -1; return [tok, err[0]];
/* */ } 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.$ptr = $ptr; $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; } }
};
ss.prototype.Token = function(skipSpace, f) { return this.$val.Token(skipSpace, f); };
isSpace = function(r) {
var $ptr, _i, _ref, r, rng, rx;
if (r >= 65536) {
return false;
}
rx = ((r << 16 >>> 16));
_ref = space;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
rng = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), arrayType$1);
if (rx < rng[0]) {
return false;
}
if (rx <= rng[1]) {
return true;
}
_i++;
}
return false;
};
notSpace = function(r) {
var $ptr, r;
return !isSpace(r);
};
ss.ptr.prototype.SkipSpace = function() {
var $ptr, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
s = this;
$r = s.skipSpace(false); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.SkipSpace }; } $f.$ptr = $ptr; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
ss.prototype.SkipSpace = function() { return this.$val.SkipSpace(); };
ss.ptr.prototype.free = function(old) {
var $ptr, old, s;
s = this;
if (old.validSave) {
ssave.copy(s.ssave, old);
return;
}
if (s.buf.$capacity > 1024) {
return;
}
s.buf = $subslice(s.buf, 0, 0);
s.rs = $ifaceNil;
ssFree.Put(s);
};
ss.prototype.free = function(old) { return this.$val.free(old); };
ss.ptr.prototype.skipSpace = function(stopAtNewline) {
var $ptr, _r, _r$1, _r$2, _v, r, s, stopAtNewline, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _v = $f._v; r = $f.r; s = $f.s; stopAtNewline = $f.stopAtNewline; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
s = this;
/* while (true) { */ case 1:
_r = s.getRune(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
r = _r;
if (r === -1) {
$s = -1; return;
}
if (!(r === 13)) { _v = false; $s = 6; continue s; }
_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; }
_v = _r$1; case 6:
/* */ if (_v) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (_v) { */ case 4:
/* continue; */ $s = 1; continue;
/* } */ case 5:
/* */ if (r === 10) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (r === 10) { */ case 8:
if (stopAtNewline) {
/* break; */ $s = 2; continue;
}
if (s.ssave.nlIsSpace) {
/* continue; */ $s = 1; continue;
}
s.errorString("unexpected newline");
$s = -1; return;
/* } */ case 9:
/* */ if (!isSpace(r)) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (!isSpace(r)) { */ case 10:
_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; }
_r$2;
/* break; */ $s = 2; continue;
/* } */ case 11:
/* } */ $s = 1; continue; case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.skipSpace }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._v = _v; $f.r = r; $f.s = s; $f.stopAtNewline = stopAtNewline; $f.$s = $s; $f.$r = $r; return $f;
};
ss.prototype.skipSpace = function(stopAtNewline) { return this.$val.skipSpace(stopAtNewline); };
ss.ptr.prototype.token = function(skipSpace, f) {
var $ptr, _r, _r$1, _r$2, f, r, s, skipSpace, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
s = this;
/* */ if (skipSpace) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (skipSpace) { */ case 1:
$r = s.skipSpace(false); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
/* while (true) { */ case 4:
_r = s.getRune(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
r = _r;
if (r === -1) {
/* break; */ $s = 5; continue;
}
_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; }
/* */ if (!_r$1) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (!_r$1) { */ case 7:
_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; }
_r$2;
/* break; */ $s = 5; continue;
/* } */ case 8:
(s.$ptr_buf || (s.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, s))).WriteRune(r);
/* } */ $s = 4; continue; case 5:
$s = -1; return (x = s.buf, $subslice(new sliceType$2(x.$array), x.$offset, x.$offset + x.$length));
/* */ } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.token }; } $f.$ptr = $ptr; $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;
};
ss.prototype.token = function(skipSpace, f) { return this.$val.token(skipSpace, f); };
indexRune = function(s, r) {
var $ptr, _i, _ref, _rune, c, i, r, s;
_ref = s;
_i = 0;
while (true) {
if (!(_i < _ref.length)) { break; }
_rune = $decodeRune(_ref, _i);
i = _i;
c = _rune[0];
if (c === r) {
return i;
}
_i += _rune[1];
}
return -1;
};
ss.ptr.prototype.peek = function(ok) {
var $ptr, _r, _r$1, ok, r, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
s = this;
_r = s.getRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
r = _r;
/* */ if (!((r === -1))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!((r === -1))) { */ case 2:
_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; }
_r$1;
/* } */ case 3:
$s = -1; return indexRune(ok, r) >= 0;
/* */ } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.peek }; } $f.$ptr = $ptr; $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;
};
ss.prototype.peek = function(ok) { return this.$val.peek(ok); };
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)}];
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)}];
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: "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)}];
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: "SkipSpace", name: "SkipSpace", pkg: "", typ: $funcType([], [], false)}, {prop: "free", name: "free", pkg: "fmt", typ: $funcType([ssave], [], false)}, {prop: "skipSpace", name: "skipSpace", pkg: "fmt", typ: $funcType([$Bool], [], 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)}];
fmtFlags.init("fmt", [{prop: "widPresent", name: "widPresent", exported: false, typ: $Bool, tag: ""}, {prop: "precPresent", name: "precPresent", exported: false, typ: $Bool, tag: ""}, {prop: "minus", name: "minus", exported: false, typ: $Bool, tag: ""}, {prop: "plus", name: "plus", exported: false, typ: $Bool, tag: ""}, {prop: "sharp", name: "sharp", exported: false, typ: $Bool, tag: ""}, {prop: "space", name: "space", exported: false, typ: $Bool, tag: ""}, {prop: "zero", name: "zero", exported: false, typ: $Bool, tag: ""}, {prop: "plusV", name: "plusV", exported: false, typ: $Bool, tag: ""}, {prop: "sharpV", name: "sharpV", exported: false, typ: $Bool, tag: ""}]);
fmt.init("fmt", [{prop: "buf", name: "buf", exported: false, typ: ptrType$1, tag: ""}, {prop: "fmtFlags", name: "", exported: false, typ: fmtFlags, tag: ""}, {prop: "wid", name: "wid", exported: false, typ: $Int, tag: ""}, {prop: "prec", name: "prec", exported: false, typ: $Int, tag: ""}, {prop: "intbuf", name: "intbuf", exported: false, typ: arrayType, tag: ""}]);
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)}]);
Formatter.init([{prop: "Format", name: "Format", pkg: "", typ: $funcType([State, $Int32], [], false)}]);
Stringer.init([{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]);
GoStringer.init([{prop: "GoString", name: "GoString", pkg: "", typ: $funcType([], [$String], false)}]);
buffer.init($Uint8);
pp.init("fmt", [{prop: "buf", name: "buf", exported: false, typ: buffer, tag: ""}, {prop: "arg", name: "arg", exported: false, typ: $emptyInterface, tag: ""}, {prop: "value", name: "value", exported: false, typ: reflect.Value, tag: ""}, {prop: "fmt", name: "fmt", exported: false, typ: fmt, tag: ""}, {prop: "reordered", name: "reordered", exported: false, typ: $Bool, tag: ""}, {prop: "goodArgNum", name: "goodArgNum", exported: false, typ: $Bool, tag: ""}, {prop: "panicking", name: "panicking", exported: false, typ: $Bool, tag: ""}, {prop: "erroring", name: "erroring", exported: false, typ: $Bool, tag: ""}]);
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)}]);
scanError.init("fmt", [{prop: "err", name: "err", exported: false, typ: $error, tag: ""}]);
ss.init("fmt", [{prop: "rs", name: "rs", exported: false, typ: io.RuneScanner, tag: ""}, {prop: "buf", name: "buf", exported: false, typ: buffer, tag: ""}, {prop: "count", name: "count", exported: false, typ: $Int, tag: ""}, {prop: "atEOF", name: "atEOF", exported: false, typ: $Bool, tag: ""}, {prop: "ssave", name: "", exported: false, typ: ssave, tag: ""}]);
ssave.init("fmt", [{prop: "validSave", name: "validSave", exported: false, typ: $Bool, tag: ""}, {prop: "nlIsEnd", name: "nlIsEnd", exported: false, typ: $Bool, tag: ""}, {prop: "nlIsSpace", name: "nlIsSpace", exported: false, typ: $Bool, tag: ""}, {prop: "argLimit", name: "argLimit", exported: false, typ: $Int, tag: ""}, {prop: "limit", name: "limit", exported: false, typ: $Int, tag: ""}, {prop: "maxWid", name: "maxWid", exported: false, typ: $Int, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = math.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = os.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = reflect.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strconv.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sync.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = utf8.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
ppFree = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
var $ptr;
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);
}));
byteType = reflect.TypeOf(new $Uint8(0));
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])]);
ssFree = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
var $ptr;
return new ss.ptr($ifaceNil, buffer.nil, 0, false, new ssave.ptr(false, false, false, 0, 0, 0));
}));
complexError = errors.New("syntax error scanning complex number");
boolError = errors.New("syntax error scanning boolean");
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["sort"] = (function() {
var $pkg = {}, $init, reflect, lessSwap, StringSlice, sliceType$2, funcType, funcType$1, Search, SearchStrings, insertionSort, siftDown, heapSort, medianOfThree, doPivot, quickSort, Sort, maxDepth, Slice, Strings, insertionSort_func, siftDown_func, heapSort_func, medianOfThree_func, doPivot_func, quickSort_func;
reflect = $packages["reflect"];
lessSwap = $pkg.lessSwap = $newType(0, $kindStruct, "sort.lessSwap", true, "sort", false, function(Less_, Swap_) {
this.$val = this;
if (arguments.length === 0) {
this.Less = $throwNilPointerError;
this.Swap = $throwNilPointerError;
return;
}
this.Less = Less_;
this.Swap = Swap_;
});
StringSlice = $pkg.StringSlice = $newType(12, $kindSlice, "sort.StringSlice", true, "sort", true, null);
sliceType$2 = $sliceType($String);
funcType = $funcType([$Int, $Int], [$Bool], false);
funcType$1 = $funcType([$Int, $Int], [], false);
Search = function(n, f) {
var $ptr, _q, _r, _tmp, _tmp$1, f, h, i, j, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _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:
_tmp = 0;
_tmp$1 = n;
i = _tmp;
j = _tmp$1;
/* while (true) { */ case 1:
/* if (!(i < j)) { break; } */ if(!(i < j)) { $s = 2; continue; }
h = i + (_q = ((j - i >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
_r = f(h); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (!_r) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!_r) { */ case 3:
i = h + 1 >> 0;
$s = 5; continue;
/* } else { */ case 4:
j = h;
/* } */ case 5:
/* } */ $s = 1; continue; case 2:
$s = -1; return i;
/* */ } return; } if ($f === undefined) { $f = { $blk: Search }; } $f.$ptr = $ptr; $f._q = _q; $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;
};
$pkg.Search = Search;
SearchStrings = function(a, x) {
var $ptr, _r, a, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; a = $f.a; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
a = [a];
x = [x];
_r = Search(a[0].$length, (function(a, x) { return function(i) {
var $ptr, i;
return ((i < 0 || i >= a[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : a[0].$array[a[0].$offset + i]) >= x[0];
}; })(a, x)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: SearchStrings }; } $f.$ptr = $ptr; $f._r = _r; $f.a = a; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.SearchStrings = SearchStrings;
StringSlice.prototype.Search = function(x) {
var $ptr, _r, p, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; p = $f.p; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
p = this;
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: StringSlice.prototype.Search }; } $f.$ptr = $ptr; $f._r = _r; $f.p = p; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(StringSlice).prototype.Search = function(x) { return this.$get().Search(x); };
insertionSort = function(data, a, b) {
var $ptr, _r, _v, a, b, data, i, j, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
i = a + 1 >> 0;
/* while (true) { */ case 1:
/* if (!(i < b)) { break; } */ if(!(i < b)) { $s = 2; continue; }
j = i;
/* while (true) { */ case 3:
if (!(j > a)) { _v = false; $s = 5; continue s; }
_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; }
_v = _r; case 5:
/* if (!(_v)) { break; } */ if(!(_v)) { $s = 4; continue; }
$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; }
j = j - (1) >> 0;
/* } */ $s = 3; continue; case 4:
i = i + (1) >> 0;
/* } */ $s = 1; continue; case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: insertionSort }; } $f.$ptr = $ptr; $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;
};
siftDown = function(data, lo, hi, first) {
var $ptr, _r, _r$1, _v, child, data, first, hi, lo, root, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
root = lo;
/* while (true) { */ case 1:
child = ($imul(2, root)) + 1 >> 0;
if (child >= hi) {
/* break; */ $s = 2; continue;
}
if (!((child + 1 >> 0) < hi)) { _v = false; $s = 5; continue s; }
_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; }
_v = _r; case 5:
/* */ if (_v) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (_v) { */ case 3:
child = child + (1) >> 0;
/* } */ case 4:
_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; }
/* */ if (!_r$1) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (!_r$1) { */ case 7:
$s = -1; return;
/* } */ case 8:
$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; }
root = child;
/* } */ $s = 1; continue; case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: siftDown }; } $f.$ptr = $ptr; $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;
};
heapSort = function(data, a, b) {
var $ptr, _q, a, b, data, first, hi, i, i$1, lo, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
first = a;
lo = 0;
hi = b - a >> 0;
i = (_q = ((hi - 1 >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
/* while (true) { */ case 1:
/* if (!(i >= 0)) { break; } */ if(!(i >= 0)) { $s = 2; continue; }
$r = siftDown(data, i, hi, first); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
i = i - (1) >> 0;
/* } */ $s = 1; continue; case 2:
i$1 = hi - 1 >> 0;
/* while (true) { */ case 4:
/* if (!(i$1 >= 0)) { break; } */ if(!(i$1 >= 0)) { $s = 5; continue; }
$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; }
$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; }
i$1 = i$1 - (1) >> 0;
/* } */ $s = 4; continue; case 5:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: heapSort }; } $f.$ptr = $ptr; $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;
};
medianOfThree = function(data, m1, m0, m2) {
var $ptr, _r, _r$1, _r$2, data, m0, m1, m2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = data.Less(m1, m0); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (_r) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (_r) { */ case 1:
$r = data.Swap(m1, m0); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
_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; }
/* */ if (_r$1) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (_r$1) { */ case 5:
$r = data.Swap(m2, m1); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_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; }
/* */ if (_r$2) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (_r$2) { */ case 9:
$r = data.Swap(m1, m0); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 10:
/* } */ case 6:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: medianOfThree }; } $f.$ptr = $ptr; $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;
};
doPivot = function(data, lo, hi) {
var $ptr, _q, _q$1, _q$2, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
midlo = 0;
midhi = 0;
m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
/* */ if ((hi - lo >> 0) > 40) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if ((hi - lo >> 0) > 40) { */ case 1:
s = (_q$1 = ((hi - lo >> 0)) / 8, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"));
$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; }
$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; }
$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; }
/* } */ case 2:
$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; }
pivot = lo;
_tmp = lo + 1 >> 0;
_tmp$1 = hi - 1 >> 0;
a = _tmp;
c = _tmp$1;
/* while (true) { */ case 7:
if (!(a < c)) { _v = false; $s = 9; continue s; }
_r = data.Less(a, pivot); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_v = _r; case 9:
/* if (!(_v)) { break; } */ if(!(_v)) { $s = 8; continue; }
a = a + (1) >> 0;
/* } */ $s = 7; continue; case 8:
b = a;
/* while (true) { */ case 11:
/* while (true) { */ case 13:
if (!(b < c)) { _v$1 = false; $s = 15; continue s; }
_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; }
_v$1 = !_r$1; case 15:
/* if (!(_v$1)) { break; } */ if(!(_v$1)) { $s = 14; continue; }
b = b + (1) >> 0;
/* } */ $s = 13; continue; case 14:
/* while (true) { */ case 17:
if (!(b < c)) { _v$2 = false; $s = 19; continue s; }
_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; }
_v$2 = _r$2; case 19:
/* if (!(_v$2)) { break; } */ if(!(_v$2)) { $s = 18; continue; }
c = c - (1) >> 0;
/* } */ $s = 17; continue; case 18:
if (b >= c) {
/* break; */ $s = 12; continue;
}
$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; }
b = b + (1) >> 0;
c = c - (1) >> 0;
/* } */ $s = 11; continue; case 12:
protect = (hi - c >> 0) < 5;
/* */ if (!protect && (hi - c >> 0) < (_q$2 = ((hi - lo >> 0)) / 4, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"))) { $s = 22; continue; }
/* */ $s = 23; continue;
/* if (!protect && (hi - c >> 0) < (_q$2 = ((hi - lo >> 0)) / 4, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"))) { */ case 22:
dups = 0;
_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; }
/* */ if (!_r$3) { $s = 24; continue; }
/* */ $s = 25; continue;
/* if (!_r$3) { */ case 24:
$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; }
c = c + (1) >> 0;
dups = dups + (1) >> 0;
/* } */ case 25:
_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; }
/* */ if (!_r$4) { $s = 28; continue; }
/* */ $s = 29; continue;
/* if (!_r$4) { */ case 28:
b = b - (1) >> 0;
dups = dups + (1) >> 0;
/* } */ case 29:
_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; }
/* */ if (!_r$5) { $s = 31; continue; }
/* */ $s = 32; continue;
/* if (!_r$5) { */ case 31:
$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; }
b = b - (1) >> 0;
dups = dups + (1) >> 0;
/* } */ case 32:
protect = dups > 1;
/* } */ case 23:
/* */ if (protect) { $s = 35; continue; }
/* */ $s = 36; continue;
/* if (protect) { */ case 35:
/* while (true) { */ case 37:
/* while (true) { */ case 39:
if (!(a < b)) { _v$3 = false; $s = 41; continue s; }
_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; }
_v$3 = !_r$6; case 41:
/* if (!(_v$3)) { break; } */ if(!(_v$3)) { $s = 40; continue; }
b = b - (1) >> 0;
/* } */ $s = 39; continue; case 40:
/* while (true) { */ case 43:
if (!(a < b)) { _v$4 = false; $s = 45; continue s; }
_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; }
_v$4 = _r$7; case 45:
/* if (!(_v$4)) { break; } */ if(!(_v$4)) { $s = 44; continue; }
a = a + (1) >> 0;
/* } */ $s = 43; continue; case 44:
if (a >= b) {
/* break; */ $s = 38; continue;
}
$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; }
a = a + (1) >> 0;
b = b - (1) >> 0;
/* } */ $s = 37; continue; case 38:
/* } */ case 36:
$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; }
_tmp$2 = b - 1 >> 0;
_tmp$3 = c;
midlo = _tmp$2;
midhi = _tmp$3;
$s = -1; return [midlo, midhi];
/* */ } return; } if ($f === undefined) { $f = { $blk: doPivot }; } $f.$ptr = $ptr; $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._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;
};
quickSort = function(data, a, b, maxDepth$1) {
var $ptr, _r, _r$1, _tuple, a, b, data, i, maxDepth$1, mhi, mlo, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
/* while (true) { */ case 1:
/* if (!((b - a >> 0) > 12)) { break; } */ if(!((b - a >> 0) > 12)) { $s = 2; continue; }
/* */ if (maxDepth$1 === 0) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (maxDepth$1 === 0) { */ case 3:
$r = heapSort(data, a, b); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } */ case 4:
maxDepth$1 = maxDepth$1 - (1) >> 0;
_r = doPivot(data, a, b); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
mlo = _tuple[0];
mhi = _tuple[1];
/* */ if ((mlo - a >> 0) < (b - mhi >> 0)) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if ((mlo - a >> 0) < (b - mhi >> 0)) { */ case 7:
$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; }
a = mhi;
$s = 9; continue;
/* } else { */ case 8:
$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; }
b = mlo;
/* } */ case 9:
/* } */ $s = 1; continue; case 2:
/* */ if ((b - a >> 0) > 1) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if ((b - a >> 0) > 1) { */ case 12:
i = a + 6 >> 0;
/* while (true) { */ case 14:
/* if (!(i < b)) { break; } */ if(!(i < b)) { $s = 15; continue; }
_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; }
/* */ if (_r$1) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (_r$1) { */ case 16:
$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; }
/* } */ case 17:
i = i + (1) >> 0;
/* } */ $s = 14; continue; case 15:
$r = insertionSort(data, a, b); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 13:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: quickSort }; } $f.$ptr = $ptr; $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;
};
Sort = function(data) {
var $ptr, _r, data, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; data = $f.data; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = data.Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
n = _r;
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Sort }; } $f.$ptr = $ptr; $f._r = _r; $f.data = data; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Sort = Sort;
maxDepth = function(n) {
var $ptr, depth, i, n;
depth = 0;
i = n;
while (true) {
if (!(i > 0)) { break; }
depth = depth + (1) >> 0;
i = (i >> $min((1), 31)) >> 0;
}
return $imul(depth, 2);
};
Slice = function(slice, less) {
var $ptr, _r, _r$1, length, less, rv, slice, swap, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = reflect.ValueOf(slice); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
rv = _r;
_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; }
swap = _r$1;
length = $clone(rv, reflect.Value).Len();
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Slice }; } $f.$ptr = $ptr; $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;
};
$pkg.Slice = Slice;
StringSlice.prototype.Len = function() {
var $ptr, p;
p = this;
return p.$length;
};
$ptrType(StringSlice).prototype.Len = function() { return this.$get().Len(); };
StringSlice.prototype.Less = function(i, j) {
var $ptr, i, j, p;
p = this;
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]);
};
$ptrType(StringSlice).prototype.Less = function(i, j) { return this.$get().Less(i, j); };
StringSlice.prototype.Swap = function(i, j) {
var $ptr, _tmp, _tmp$1, i, j, p;
p = this;
_tmp = ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]);
_tmp$1 = ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]);
((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i] = _tmp);
((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j] = _tmp$1);
};
$ptrType(StringSlice).prototype.Swap = function(i, j) { return this.$get().Swap(i, j); };
StringSlice.prototype.Sort = function() {
var $ptr, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
p = this;
$r = Sort(p); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: StringSlice.prototype.Sort }; } $f.$ptr = $ptr; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(StringSlice).prototype.Sort = function() { return this.$get().Sort(); };
Strings = function(a) {
var $ptr, a, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; a = $f.a; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Strings }; } $f.$ptr = $ptr; $f.a = a; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Strings = Strings;
insertionSort_func = function(data, a, b) {
var $ptr, _r, _v, a, b, data, i, j, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
i = a + 1 >> 0;
/* while (true) { */ case 1:
/* if (!(i < b)) { break; } */ if(!(i < b)) { $s = 2; continue; }
j = i;
/* while (true) { */ case 3:
if (!(j > a)) { _v = false; $s = 5; continue s; }
_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; }
_v = _r; case 5:
/* if (!(_v)) { break; } */ if(!(_v)) { $s = 4; continue; }
$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; }
j = j - (1) >> 0;
/* } */ $s = 3; continue; case 4:
i = i + (1) >> 0;
/* } */ $s = 1; continue; case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: insertionSort_func }; } $f.$ptr = $ptr; $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;
};
siftDown_func = function(data, lo, hi, first) {
var $ptr, _r, _r$1, _v, child, data, first, hi, lo, root, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
root = lo;
/* while (true) { */ case 1:
child = ($imul(2, root)) + 1 >> 0;
if (child >= hi) {
/* break; */ $s = 2; continue;
}
if (!((child + 1 >> 0) < hi)) { _v = false; $s = 5; continue s; }
_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; }
_v = _r; case 5:
/* */ if (_v) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (_v) { */ case 3:
child = child + (1) >> 0;
/* } */ case 4:
_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; }
/* */ if (!_r$1) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (!_r$1) { */ case 7:
$s = -1; return;
/* } */ case 8:
$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; }
root = child;
/* } */ $s = 1; continue; case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: siftDown_func }; } $f.$ptr = $ptr; $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;
};
heapSort_func = function(data, a, b) {
var $ptr, _q, a, b, data, first, hi, i, i$1, lo, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
first = a;
lo = 0;
hi = b - a >> 0;
i = (_q = ((hi - 1 >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
/* while (true) { */ case 1:
/* if (!(i >= 0)) { break; } */ if(!(i >= 0)) { $s = 2; continue; }
$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; }
i = i - (1) >> 0;
/* } */ $s = 1; continue; case 2:
i$1 = hi - 1 >> 0;
/* while (true) { */ case 4:
/* if (!(i$1 >= 0)) { break; } */ if(!(i$1 >= 0)) { $s = 5; continue; }
$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; }
$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; }
i$1 = i$1 - (1) >> 0;
/* } */ $s = 4; continue; case 5:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: heapSort_func }; } $f.$ptr = $ptr; $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;
};
medianOfThree_func = function(data, m1, m0, m2) {
var $ptr, _r, _r$1, _r$2, data, m0, m1, m2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = data.Less(m1, m0); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (_r) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (_r) { */ case 1:
$r = data.Swap(m1, m0); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
_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; }
/* */ if (_r$1) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (_r$1) { */ case 5:
$r = data.Swap(m2, m1); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_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; }
/* */ if (_r$2) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (_r$2) { */ case 9:
$r = data.Swap(m1, m0); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 10:
/* } */ case 6:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: medianOfThree_func }; } $f.$ptr = $ptr; $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;
};
doPivot_func = function(data, lo, hi) {
var $ptr, _q, _q$1, _q$2, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
midlo = 0;
midhi = 0;
m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
/* */ if ((hi - lo >> 0) > 40) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if ((hi - lo >> 0) > 40) { */ case 1:
s = (_q$1 = ((hi - lo >> 0)) / 8, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"));
$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; }
$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; }
$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; }
/* } */ case 2:
$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; }
pivot = lo;
_tmp = lo + 1 >> 0;
_tmp$1 = hi - 1 >> 0;
a = _tmp;
c = _tmp$1;
/* while (true) { */ case 7:
if (!(a < c)) { _v = false; $s = 9; continue s; }
_r = data.Less(a, pivot); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_v = _r; case 9:
/* if (!(_v)) { break; } */ if(!(_v)) { $s = 8; continue; }
a = a + (1) >> 0;
/* } */ $s = 7; continue; case 8:
b = a;
/* while (true) { */ case 11:
/* while (true) { */ case 13:
if (!(b < c)) { _v$1 = false; $s = 15; continue s; }
_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; }
_v$1 = !_r$1; case 15:
/* if (!(_v$1)) { break; } */ if(!(_v$1)) { $s = 14; continue; }
b = b + (1) >> 0;
/* } */ $s = 13; continue; case 14:
/* while (true) { */ case 17:
if (!(b < c)) { _v$2 = false; $s = 19; continue s; }
_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; }
_v$2 = _r$2; case 19:
/* if (!(_v$2)) { break; } */ if(!(_v$2)) { $s = 18; continue; }
c = c - (1) >> 0;
/* } */ $s = 17; continue; case 18:
if (b >= c) {
/* break; */ $s = 12; continue;
}
$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; }
b = b + (1) >> 0;
c = c - (1) >> 0;
/* } */ $s = 11; continue; case 12:
protect = (hi - c >> 0) < 5;
/* */ if (!protect && (hi - c >> 0) < (_q$2 = ((hi - lo >> 0)) / 4, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"))) { $s = 22; continue; }
/* */ $s = 23; continue;
/* if (!protect && (hi - c >> 0) < (_q$2 = ((hi - lo >> 0)) / 4, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"))) { */ case 22:
dups = 0;
_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; }
/* */ if (!_r$3) { $s = 24; continue; }
/* */ $s = 25; continue;
/* if (!_r$3) { */ case 24:
$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; }
c = c + (1) >> 0;
dups = dups + (1) >> 0;
/* } */ case 25:
_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; }
/* */ if (!_r$4) { $s = 28; continue; }
/* */ $s = 29; continue;
/* if (!_r$4) { */ case 28:
b = b - (1) >> 0;
dups = dups + (1) >> 0;
/* } */ case 29:
_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; }
/* */ if (!_r$5) { $s = 31; continue; }
/* */ $s = 32; continue;
/* if (!_r$5) { */ case 31:
$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; }
b = b - (1) >> 0;
dups = dups + (1) >> 0;
/* } */ case 32:
protect = dups > 1;
/* } */ case 23:
/* */ if (protect) { $s = 35; continue; }
/* */ $s = 36; continue;
/* if (protect) { */ case 35:
/* while (true) { */ case 37:
/* while (true) { */ case 39:
if (!(a < b)) { _v$3 = false; $s = 41; continue s; }
_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; }
_v$3 = !_r$6; case 41:
/* if (!(_v$3)) { break; } */ if(!(_v$3)) { $s = 40; continue; }
b = b - (1) >> 0;
/* } */ $s = 39; continue; case 40:
/* while (true) { */ case 43:
if (!(a < b)) { _v$4 = false; $s = 45; continue s; }
_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; }
_v$4 = _r$7; case 45:
/* if (!(_v$4)) { break; } */ if(!(_v$4)) { $s = 44; continue; }
a = a + (1) >> 0;
/* } */ $s = 43; continue; case 44:
if (a >= b) {
/* break; */ $s = 38; continue;
}
$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; }
a = a + (1) >> 0;
b = b - (1) >> 0;
/* } */ $s = 37; continue; case 38:
/* } */ case 36:
$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; }
_tmp$2 = b - 1 >> 0;
_tmp$3 = c;
midlo = _tmp$2;
midhi = _tmp$3;
$s = -1; return [midlo, midhi];
/* */ } return; } if ($f === undefined) { $f = { $blk: doPivot_func }; } $f.$ptr = $ptr; $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._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;
};
quickSort_func = function(data, a, b, maxDepth$1) {
var $ptr, _r, _r$1, _tuple, a, b, data, i, maxDepth$1, mhi, mlo, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
/* while (true) { */ case 1:
/* if (!((b - a >> 0) > 12)) { break; } */ if(!((b - a >> 0) > 12)) { $s = 2; continue; }
/* */ if (maxDepth$1 === 0) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (maxDepth$1 === 0) { */ case 3:
$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; }
$s = -1; return;
/* } */ case 4:
maxDepth$1 = maxDepth$1 - (1) >> 0;
_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; }
_tuple = _r;
mlo = _tuple[0];
mhi = _tuple[1];
/* */ if ((mlo - a >> 0) < (b - mhi >> 0)) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if ((mlo - a >> 0) < (b - mhi >> 0)) { */ case 7:
$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; }
a = mhi;
$s = 9; continue;
/* } else { */ case 8:
$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; }
b = mlo;
/* } */ case 9:
/* } */ $s = 1; continue; case 2:
/* */ if ((b - a >> 0) > 1) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if ((b - a >> 0) > 1) { */ case 12:
i = a + 6 >> 0;
/* while (true) { */ case 14:
/* if (!(i < b)) { break; } */ if(!(i < b)) { $s = 15; continue; }
_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; }
/* */ if (_r$1) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (_r$1) { */ case 16:
$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; }
/* } */ case 17:
i = i + (1) >> 0;
/* } */ $s = 14; continue; case 15:
$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; }
/* } */ case 13:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: quickSort_func }; } $f.$ptr = $ptr; $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;
};
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)}];
lessSwap.init("", [{prop: "Less", name: "Less", exported: true, typ: funcType, tag: ""}, {prop: "Swap", name: "Swap", exported: true, typ: funcType$1, tag: ""}]);
StringSlice.init($String);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = reflect.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["strings"] = (function() {
var $pkg = {}, $init, errors, js, io, unicode, utf8, Reader, Replacer, replacer, trieNode, genericReplacer, appendSliceWriter, stringWriterIface, stringWriter, singleStringReplacer, byteReplacer, byteStringReplacer, stringFinder, asciiSet, arrayType, ptrType, sliceType, arrayType$1, ptrType$1, ptrType$2, sliceType$1, ptrType$3, ptrType$4, arrayType$2, sliceType$2, sliceType$3, ptrType$5, arrayType$3, ptrType$6, ptrType$7, ptrType$8, ptrType$9, IndexByte, Index, LastIndex, Count, NewReader, NewReplacer, makeGenericReplacer, getStringWriter, makeSingleStringReplacer, makeStringFinder, longestCommonSuffix, max, explode, Contains, ContainsRune, IndexRune, IndexAny, genSplit, SplitN, Split, Join, HasPrefix, HasSuffix, Map, ToLower, TrimLeftFunc, TrimRightFunc, TrimFunc, IndexFunc, indexFunc, lastIndexFunc, makeASCIISet, makeCutsetFunc, Trim, TrimLeft, TrimRight, TrimSpace, TrimPrefix, TrimSuffix, Replace, EqualFold;
errors = $packages["errors"];
js = $packages["github.com/gopherjs/gopherjs/js"];
io = $packages["io"];
unicode = $packages["unicode"];
utf8 = $packages["unicode/utf8"];
Reader = $pkg.Reader = $newType(0, $kindStruct, "strings.Reader", true, "strings", true, function(s_, i_, prevRune_) {
this.$val = this;
if (arguments.length === 0) {
this.s = "";
this.i = new $Int64(0, 0);
this.prevRune = 0;
return;
}
this.s = s_;
this.i = i_;
this.prevRune = prevRune_;
});
Replacer = $pkg.Replacer = $newType(0, $kindStruct, "strings.Replacer", true, "strings", true, function(r_) {
this.$val = this;
if (arguments.length === 0) {
this.r = $ifaceNil;
return;
}
this.r = r_;
});
replacer = $pkg.replacer = $newType(8, $kindInterface, "strings.replacer", true, "strings", false, null);
trieNode = $pkg.trieNode = $newType(0, $kindStruct, "strings.trieNode", true, "strings", false, function(value_, priority_, prefix_, next_, table_) {
this.$val = this;
if (arguments.length === 0) {
this.value = "";
this.priority = 0;
this.prefix = "";
this.next = ptrType$2.nil;
this.table = sliceType$1.nil;
return;
}
this.value = value_;
this.priority = priority_;
this.prefix = prefix_;
this.next = next_;
this.table = table_;
});
genericReplacer = $pkg.genericReplacer = $newType(0, $kindStruct, "strings.genericReplacer", true, "strings", false, function(root_, tableSize_, mapping_) {
this.$val = this;
if (arguments.length === 0) {
this.root = new trieNode.ptr("", 0, "", ptrType$2.nil, sliceType$1.nil);
this.tableSize = 0;
this.mapping = arrayType.zero();
return;
}
this.root = root_;
this.tableSize = tableSize_;
this.mapping = mapping_;
});
appendSliceWriter = $pkg.appendSliceWriter = $newType(12, $kindSlice, "strings.appendSliceWriter", true, "strings", false, null);
stringWriterIface = $pkg.stringWriterIface = $newType(8, $kindInterface, "strings.stringWriterIface", true, "strings", false, null);
stringWriter = $pkg.stringWriter = $newType(0, $kindStruct, "strings.stringWriter", true, "strings", false, function(w_) {
this.$val = this;
if (arguments.length === 0) {
this.w = $ifaceNil;
return;
}
this.w = w_;
});
singleStringReplacer = $pkg.singleStringReplacer = $newType(0, $kindStruct, "strings.singleStringReplacer", true, "strings", false, function(finder_, value_) {
this.$val = this;
if (arguments.length === 0) {
this.finder = ptrType$4.nil;
this.value = "";
return;
}
this.finder = finder_;
this.value = value_;
});
byteReplacer = $pkg.byteReplacer = $newType(256, $kindArray, "strings.byteReplacer", true, "strings", false, null);
byteStringReplacer = $pkg.byteStringReplacer = $newType(3072, $kindArray, "strings.byteStringReplacer", true, "strings", false, null);
stringFinder = $pkg.stringFinder = $newType(0, $kindStruct, "strings.stringFinder", true, "strings", false, function(pattern_, badCharSkip_, goodSuffixSkip_) {
this.$val = this;
if (arguments.length === 0) {
this.pattern = "";
this.badCharSkip = arrayType$2.zero();
this.goodSuffixSkip = sliceType$2.nil;
return;
}
this.pattern = pattern_;
this.badCharSkip = badCharSkip_;
this.goodSuffixSkip = goodSuffixSkip_;
});
asciiSet = $pkg.asciiSet = $newType(32, $kindArray, "strings.asciiSet", true, "strings", false, null);
arrayType = $arrayType($Uint8, 256);
ptrType = $ptrType(byteReplacer);
sliceType = $sliceType($Uint8);
arrayType$1 = $arrayType(sliceType, 256);
ptrType$1 = $ptrType(byteStringReplacer);
ptrType$2 = $ptrType(trieNode);
sliceType$1 = $sliceType(ptrType$2);
ptrType$3 = $ptrType(appendSliceWriter);
ptrType$4 = $ptrType(stringFinder);
arrayType$2 = $arrayType($Int, 256);
sliceType$2 = $sliceType($Int);
sliceType$3 = $sliceType($String);
ptrType$5 = $ptrType(asciiSet);
arrayType$3 = $arrayType($Uint32, 8);
ptrType$6 = $ptrType(Reader);
ptrType$7 = $ptrType(Replacer);
ptrType$8 = $ptrType(genericReplacer);
ptrType$9 = $ptrType(singleStringReplacer);
IndexByte = function(s, c) {
var $ptr, c, s;
return $parseInt(s.indexOf($global.String.fromCharCode(c))) >> 0;
};
$pkg.IndexByte = IndexByte;
Index = function(s, sep) {
var $ptr, s, sep;
return $parseInt(s.indexOf(sep)) >> 0;
};
$pkg.Index = Index;
LastIndex = function(s, sep) {
var $ptr, s, sep;
return $parseInt(s.lastIndexOf(sep)) >> 0;
};
$pkg.LastIndex = LastIndex;
Count = function(s, sep) {
var $ptr, n, pos, s, sep;
n = 0;
if ((sep.length === 0)) {
return utf8.RuneCountInString(s) + 1 >> 0;
} else if (sep.length > s.length) {
return 0;
} else if ((sep.length === s.length)) {
if (sep === s) {
return 1;
}
return 0;
}
while (true) {
pos = Index(s, sep);
if (pos === -1) {
break;
}
n = n + (1) >> 0;
s = $substring(s, (pos + sep.length >> 0));
}
return n;
};
$pkg.Count = Count;
Reader.ptr.prototype.Len = function() {
var $ptr, r, x, x$1, x$2, x$3, x$4;
r = this;
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)))) {
return 0;
}
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));
};
Reader.prototype.Len = function() { return this.$val.Len(); };
Reader.ptr.prototype.Size = function() {
var $ptr, r;
r = this;
return (new $Int64(0, r.s.length));
};
Reader.prototype.Size = function() { return this.$val.Size(); };
Reader.ptr.prototype.Read = function(b) {
var $ptr, _tmp, _tmp$1, b, err, n, r, x, x$1, x$2, x$3;
n = 0;
err = $ifaceNil;
r = this;
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)))) {
_tmp = 0;
_tmp$1 = io.EOF;
n = _tmp;
err = _tmp$1;
return [n, err];
}
r.prevRune = -1;
n = $copyString(b, $substring(r.s, $flatten64(r.i)));
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));
return [n, err];
};
Reader.prototype.Read = function(b) { return this.$val.Read(b); };
Reader.ptr.prototype.ReadAt = function(b, off) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, b, err, n, off, r, x;
n = 0;
err = $ifaceNil;
r = this;
if ((off.$high < 0 || (off.$high === 0 && off.$low < 0))) {
_tmp = 0;
_tmp$1 = errors.New("strings.Reader.ReadAt: negative offset");
n = _tmp;
err = _tmp$1;
return [n, err];
}
if ((x = (new $Int64(0, r.s.length)), (off.$high > x.$high || (off.$high === x.$high && off.$low >= x.$low)))) {
_tmp$2 = 0;
_tmp$3 = io.EOF;
n = _tmp$2;
err = _tmp$3;
return [n, err];
}
n = $copyString(b, $substring(r.s, $flatten64(off)));
if (n < b.$length) {
err = io.EOF;
}
return [n, err];
};
Reader.prototype.ReadAt = function(b, off) { return this.$val.ReadAt(b, off); };
Reader.ptr.prototype.ReadByte = function() {
var $ptr, b, r, x, x$1, x$2, x$3;
r = this;
r.prevRune = -1;
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)))) {
return [0, io.EOF];
}
b = r.s.charCodeAt($flatten64(r.i));
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));
return [b, $ifaceNil];
};
Reader.prototype.ReadByte = function() { return this.$val.ReadByte(); };
Reader.ptr.prototype.UnreadByte = function() {
var $ptr, r, x, x$1, x$2;
r = this;
r.prevRune = -1;
if ((x = r.i, (x.$high < 0 || (x.$high === 0 && x.$low <= 0)))) {
return errors.New("strings.Reader.UnreadByte: at beginning of string");
}
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));
return $ifaceNil;
};
Reader.prototype.UnreadByte = function() { return this.$val.UnreadByte(); };
Reader.ptr.prototype.ReadRune = function() {
var $ptr, _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;
ch = 0;
size = 0;
err = $ifaceNil;
r = this;
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)))) {
r.prevRune = -1;
_tmp = 0;
_tmp$1 = 0;
_tmp$2 = io.EOF;
ch = _tmp;
size = _tmp$1;
err = _tmp$2;
return [ch, size, err];
}
r.prevRune = (((x$2 = r.i, x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0));
c = r.s.charCodeAt($flatten64(r.i));
if (c < 128) {
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));
_tmp$3 = ((c >> 0));
_tmp$4 = 1;
_tmp$5 = $ifaceNil;
ch = _tmp$3;
size = _tmp$4;
err = _tmp$5;
return [ch, size, err];
}
_tuple = utf8.DecodeRuneInString($substring(r.s, $flatten64(r.i)));
ch = _tuple[0];
size = _tuple[1];
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));
return [ch, size, err];
};
Reader.prototype.ReadRune = function() { return this.$val.ReadRune(); };
Reader.ptr.prototype.UnreadRune = function() {
var $ptr, r;
r = this;
if (r.prevRune < 0) {
return errors.New("strings.Reader.UnreadRune: previous operation was not ReadRune");
}
r.i = (new $Int64(0, r.prevRune));
r.prevRune = -1;
return $ifaceNil;
};
Reader.prototype.UnreadRune = function() { return this.$val.UnreadRune(); };
Reader.ptr.prototype.Seek = function(offset, whence) {
var $ptr, _1, abs, offset, r, whence, x, x$1;
r = this;
r.prevRune = -1;
abs = new $Int64(0, 0);
_1 = whence;
if (_1 === (0)) {
abs = offset;
} else if (_1 === (1)) {
abs = (x = r.i, new $Int64(x.$high + offset.$high, x.$low + offset.$low));
} else if (_1 === (2)) {
abs = (x$1 = (new $Int64(0, r.s.length)), new $Int64(x$1.$high + offset.$high, x$1.$low + offset.$low));
} else {
return [new $Int64(0, 0), errors.New("strings.Reader.Seek: invalid whence")];
}
if ((abs.$high < 0 || (abs.$high === 0 && abs.$low < 0))) {
return [new $Int64(0, 0), errors.New("strings.Reader.Seek: negative position")];
}
r.i = abs;
return [abs, $ifaceNil];
};
Reader.prototype.Seek = function(offset, whence) { return this.$val.Seek(offset, whence); };
Reader.ptr.prototype.WriteTo = function(w) {
var $ptr, _r, _tmp, _tmp$1, _tuple, err, m, n, r, s, w, x, x$1, x$2, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = new $Int64(0, 0);
err = $ifaceNil;
r = this;
r.prevRune = -1;
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)))) {
_tmp = new $Int64(0, 0);
_tmp$1 = $ifaceNil;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
s = $substring(r.s, $flatten64(r.i));
_r = io.WriteString(w, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
m = _tuple[0];
err = _tuple[1];
if (m > s.length) {
$panic(new $String("strings.Reader.WriteTo: invalid WriteString count"));
}
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));
n = (new $Int64(0, m));
if (!((m === s.length)) && $interfaceIsEqual(err, $ifaceNil)) {
err = io.ErrShortWrite;
}
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.WriteTo }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.WriteTo = function(w) { return this.$val.WriteTo(w); };
Reader.ptr.prototype.Reset = function(s) {
var $ptr, r, s;
r = this;
Reader.copy(r, new Reader.ptr(s, new $Int64(0, 0), -1));
};
Reader.prototype.Reset = function(s) { return this.$val.Reset(s); };
NewReader = function(s) {
var $ptr, s;
return new Reader.ptr(s, new $Int64(0, 0), -1);
};
$pkg.NewReader = NewReader;
NewReplacer = function(oldnew) {
var $ptr, _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;
if ((_r = oldnew.$length % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 1) {
$panic(new $String("strings.NewReplacer: odd argument count"));
}
if ((oldnew.$length === 2) && (0 >= oldnew.$length ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + 0]).length > 1) {
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])));
}
allNewBytes = true;
i = 0;
while (true) {
if (!(i < oldnew.$length)) { break; }
if (!((((i < 0 || i >= oldnew.$length) ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + i]).length === 1))) {
return new Replacer.ptr(makeGenericReplacer(oldnew));
}
if (!(((x = i + 1 >> 0, ((x < 0 || x >= oldnew.$length) ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + x])).length === 1))) {
allNewBytes = false;
}
i = i + (2) >> 0;
}
if (allNewBytes) {
r = arrayType.zero();
_ref = r;
_i = 0;
while (true) {
if (!(_i < 256)) { break; }
i$1 = _i;
((i$1 < 0 || i$1 >= r.length) ? ($throwRuntimeError("index out of range"), undefined) : r[i$1] = ((i$1 << 24 >>> 24)));
_i++;
}
i$2 = oldnew.$length - 2 >> 0;
while (true) {
if (!(i$2 >= 0)) { break; }
o = ((i$2 < 0 || i$2 >= oldnew.$length) ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + i$2]).charCodeAt(0);
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);
((o < 0 || o >= r.length) ? ($throwRuntimeError("index out of range"), undefined) : r[o] = n);
i$2 = i$2 - (2) >> 0;
}
return new Replacer.ptr(new ptrType(r));
}
r$1 = arrayType$1.zero();
i$3 = oldnew.$length - 2 >> 0;
while (true) {
if (!(i$3 >= 0)) { break; }
o$1 = ((i$3 < 0 || i$3 >= oldnew.$length) ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + i$3]).charCodeAt(0);
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]));
((o$1 < 0 || o$1 >= r$1.length) ? ($throwRuntimeError("index out of range"), undefined) : r$1[o$1] = (new sliceType($stringToBytes(n$1))));
i$3 = i$3 - (2) >> 0;
}
return new Replacer.ptr(new ptrType$1(r$1));
};
$pkg.NewReplacer = NewReplacer;
Replacer.ptr.prototype.Replace = function(s) {
var $ptr, _r, r, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
_r = r.r.Replace(s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Replacer.ptr.prototype.Replace }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
Replacer.prototype.Replace = function(s) { return this.$val.Replace(s); };
Replacer.ptr.prototype.WriteString = function(w, s) {
var $ptr, _r, _tuple, err, n, r, s, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
r = this;
_r = r.r.WriteString(w, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Replacer.ptr.prototype.WriteString }; } $f.$ptr = $ptr; $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;
};
Replacer.prototype.WriteString = function(w, s) { return this.$val.WriteString(w, s); };
trieNode.ptr.prototype.add = function(key, val, priority, r) {
var $ptr, 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;
t = this;
if (key === "") {
if (t.priority === 0) {
t.value = val;
t.priority = priority;
}
return;
}
if (!(t.prefix === "")) {
n = 0;
while (true) {
if (!(n < t.prefix.length && n < key.length)) { break; }
if (!((t.prefix.charCodeAt(n) === key.charCodeAt(n)))) {
break;
}
n = n + (1) >> 0;
}
if (n === t.prefix.length) {
t.next.add($substring(key, n), val, priority, r);
} else if (n === 0) {
prefixNode = ptrType$2.nil;
if (t.prefix.length === 1) {
prefixNode = t.next;
} else {
prefixNode = new trieNode.ptr("", 0, $substring(t.prefix, 1), t.next, sliceType$1.nil);
}
keyNode = new trieNode.ptr("", 0, "", ptrType$2.nil, sliceType$1.nil);
t.table = $makeSlice(sliceType$1, r.tableSize);
(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));
(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));
t.prefix = "";
t.next = ptrType$2.nil;
keyNode.add($substring(key, 1), val, priority, r);
} else {
next = new trieNode.ptr("", 0, $substring(t.prefix, n), t.next, sliceType$1.nil);
t.prefix = $substring(t.prefix, 0, n);
t.next = next;
next.add($substring(key, n), val, priority, r);
}
} else if (!(t.table === sliceType$1.nil)) {
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]));
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$2.nil) {
(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$2.nil, sliceType$1.nil)));
}
(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);
} else {
t.prefix = key;
t.next = new trieNode.ptr("", 0, "", ptrType$2.nil, sliceType$1.nil);
t.next.add("", val, priority, r);
}
};
trieNode.prototype.add = function(key, val, priority, r) { return this.$val.add(key, val, priority, r); };
genericReplacer.ptr.prototype.lookup = function(s, ignoreRoot) {
var $ptr, bestPriority, found, ignoreRoot, index, keylen, n, node, r, s, val, x, x$1, x$2;
val = "";
keylen = 0;
found = false;
r = this;
bestPriority = 0;
node = r.root;
n = 0;
while (true) {
if (!(!(node === ptrType$2.nil))) { break; }
if (node.priority > bestPriority && !(ignoreRoot && node === r.root)) {
bestPriority = node.priority;
val = node.value;
keylen = n;
found = true;
}
if (s === "") {
break;
}
if (!(node.table === sliceType$1.nil)) {
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]));
if (((index >> 0)) === r.tableSize) {
break;
}
node = (x$2 = node.table, ((index < 0 || index >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + index]));
s = $substring(s, 1);
n = n + (1) >> 0;
} else if (!(node.prefix === "") && HasPrefix(s, node.prefix)) {
n = n + (node.prefix.length) >> 0;
s = $substring(s, node.prefix.length);
node = node.next;
} else {
break;
}
}
return [val, keylen, found];
};
genericReplacer.prototype.lookup = function(s, ignoreRoot) { return this.$val.lookup(s, ignoreRoot); };
makeGenericReplacer = function(oldnew) {
var $ptr, _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;
r = new genericReplacer.ptr(new trieNode.ptr("", 0, "", ptrType$2.nil, sliceType$1.nil), 0, arrayType.zero());
i = 0;
while (true) {
if (!(i < oldnew.$length)) { break; }
key = ((i < 0 || i >= oldnew.$length) ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + i]);
j = 0;
while (true) {
if (!(j < key.length)) { break; }
(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));
j = j + (1) >> 0;
}
i = i + (2) >> 0;
}
_ref = r.mapping;
_i = 0;
while (true) {
if (!(_i < 256)) { break; }
b = ((_i < 0 || _i >= _ref.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref[_i]);
r.tableSize = r.tableSize + (((b >> 0))) >> 0;
_i++;
}
index = 0;
_ref$1 = r.mapping;
_i$1 = 0;
while (true) {
if (!(_i$1 < 256)) { break; }
i$1 = _i$1;
b$1 = ((_i$1 < 0 || _i$1 >= _ref$1.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1[_i$1]);
if (b$1 === 0) {
(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))));
} else {
(x$3 = r.mapping, ((i$1 < 0 || i$1 >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[i$1] = index));
index = index + (1) << 24 >>> 24;
}
_i$1++;
}
r.root.table = $makeSlice(sliceType$1, r.tableSize);
i$2 = 0;
while (true) {
if (!(i$2 < oldnew.$length)) { break; }
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);
i$2 = i$2 + (2) >> 0;
}
return r;
};
$ptrType(appendSliceWriter).prototype.Write = function(p) {
var $ptr, p, w;
w = this;
w.$set($appendSlice(w.$get(), p));
return [p.$length, $ifaceNil];
};
$ptrType(appendSliceWriter).prototype.WriteString = function(s) {
var $ptr, s, w;
w = this;
w.$set($appendSlice(w.$get(), s));
return [s.length, $ifaceNil];
};
stringWriter.ptr.prototype.WriteString = function(s) {
var $ptr, _r, s, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; s = $f.s; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
w = this;
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: stringWriter.ptr.prototype.WriteString }; } $f.$ptr = $ptr; $f._r = _r; $f.s = s; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
stringWriter.prototype.WriteString = function(s) { return this.$val.WriteString(s); };
getStringWriter = function(w) {
var $ptr, _tuple, ok, sw, w, x;
_tuple = $assertType(w, stringWriterIface, true);
sw = _tuple[0];
ok = _tuple[1];
if (!ok) {
sw = (x = new stringWriter.ptr(w), new x.constructor.elem(x));
}
return sw;
};
genericReplacer.ptr.prototype.Replace = function(s) {
var $ptr, _r, buf, r, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
buf = [buf];
r = this;
buf[0] = $makeSlice(appendSliceWriter, 0, s.length);
_r = r.WriteString((buf.$ptr || (buf.$ptr = new ptrType$3(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; }
_r;
$s = -1; return ($bytesToString(buf[0]));
/* */ } return; } if ($f === undefined) { $f = { $blk: genericReplacer.ptr.prototype.Replace }; } $f.$ptr = $ptr; $f._r = _r; $f.buf = buf; $f.r = r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
genericReplacer.prototype.Replace = function(s) { return this.$val.Replace(s); };
genericReplacer.ptr.prototype.WriteString = function(w, s) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
r = this;
sw = getStringWriter(w);
_tmp = 0;
_tmp$1 = 0;
last = _tmp;
wn = _tmp$1;
prevMatchEmpty = false;
i = 0;
/* while (true) { */ case 1:
/* if (!(i <= s.length)) { break; } */ if(!(i <= s.length)) { $s = 2; continue; }
/* */ if (!((i === s.length)) && (r.root.priority === 0)) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!((i === s.length)) && (r.root.priority === 0)) { */ case 3:
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));
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$2.nil) {
i = i + (1) >> 0;
/* continue; */ $s = 1; continue;
}
/* } */ case 4:
_tuple = r.lookup($substring(s, i), prevMatchEmpty);
val = _tuple[0];
keylen = _tuple[1];
match = _tuple[2];
prevMatchEmpty = match && (keylen === 0);
/* */ if (match) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (match) { */ case 5:
_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; }
_tuple$1 = _r;
wn = _tuple$1[0];
err = _tuple$1[1];
n = n + (wn) >> 0;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [n, err];
}
_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; }
_tuple$2 = _r$1;
wn = _tuple$2[0];
err = _tuple$2[1];
n = n + (wn) >> 0;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [n, err];
}
i = i + (keylen) >> 0;
last = i;
/* continue; */ $s = 1; continue;
/* } */ case 6:
i = i + (1) >> 0;
/* } */ $s = 1; continue; case 2:
/* */ if (!((last === s.length))) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (!((last === s.length))) { */ case 9:
_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; }
_tuple$3 = _r$2;
wn = _tuple$3[0];
err = _tuple$3[1];
n = n + (wn) >> 0;
/* } */ case 10:
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: genericReplacer.ptr.prototype.WriteString }; } $f.$ptr = $ptr; $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;
};
genericReplacer.prototype.WriteString = function(w, s) { return this.$val.WriteString(w, s); };
makeSingleStringReplacer = function(pattern, value) {
var $ptr, pattern, value;
return new singleStringReplacer.ptr(makeStringFinder(pattern), value);
};
singleStringReplacer.ptr.prototype.Replace = function(s) {
var $ptr, _tmp, _tmp$1, buf, i, match, matched, r, s;
r = this;
buf = sliceType.nil;
_tmp = 0;
_tmp$1 = false;
i = _tmp;
matched = _tmp$1;
while (true) {
match = r.finder.next($substring(s, i));
if (match === -1) {
break;
}
matched = true;
buf = $appendSlice(buf, $substring(s, i, (i + match >> 0)));
buf = $appendSlice(buf, r.value);
i = i + ((match + r.finder.pattern.length >> 0)) >> 0;
}
if (!matched) {
return s;
}
buf = $appendSlice(buf, $substring(s, i));
return ($bytesToString(buf));
};
singleStringReplacer.prototype.Replace = function(s) { return this.$val.Replace(s); };
singleStringReplacer.ptr.prototype.WriteString = function(w, s) {
var $ptr, _r, _r$1, _r$2, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, err, i, match, n, r, s, sw, w, wn, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
r = this;
sw = getStringWriter(w);
_tmp = 0;
_tmp$1 = 0;
i = _tmp;
wn = _tmp$1;
/* while (true) { */ case 1:
match = r.finder.next($substring(s, i));
if (match === -1) {
/* break; */ $s = 2; continue;
}
_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; }
_tuple = _r;
wn = _tuple[0];
err = _tuple[1];
n = n + (wn) >> 0;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [n, err];
}
_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; }
_tuple$1 = _r$1;
wn = _tuple$1[0];
err = _tuple$1[1];
n = n + (wn) >> 0;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [n, err];
}
i = i + ((match + r.finder.pattern.length >> 0)) >> 0;
/* } */ $s = 1; continue; case 2:
_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; }
_tuple$2 = _r$2;
wn = _tuple$2[0];
err = _tuple$2[1];
n = n + (wn) >> 0;
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: singleStringReplacer.ptr.prototype.WriteString }; } $f.$ptr = $ptr; $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;
};
singleStringReplacer.prototype.WriteString = function(w, s) { return this.$val.WriteString(w, s); };
byteReplacer.prototype.Replace = function(s) {
var $ptr, b, buf, i, r, s;
r = this.$val;
buf = sliceType.nil;
i = 0;
while (true) {
if (!(i < s.length)) { break; }
b = s.charCodeAt(i);
if (!(((r.nilCheck, ((b < 0 || b >= r.length) ? ($throwRuntimeError("index out of range"), undefined) : r[b])) === b))) {
if (buf === sliceType.nil) {
buf = (new sliceType($stringToBytes(s)));
}
((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])));
}
i = i + (1) >> 0;
}
if (buf === sliceType.nil) {
return s;
}
return ($bytesToString(buf));
};
$ptrType(byteReplacer).prototype.Replace = function(s) { return (new byteReplacer(this.$get())).Replace(s); };
byteReplacer.prototype.WriteString = function(w, s) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
r = this.$val;
bufsize = 32768;
if (s.length < bufsize) {
bufsize = s.length;
}
buf = $makeSlice(sliceType, bufsize);
/* while (true) { */ case 1:
/* if (!(s.length > 0)) { break; } */ if(!(s.length > 0)) { $s = 2; continue; }
ncopy = $copyString(buf, s);
s = $substring(s, ncopy);
_ref = $subslice(buf, 0, ncopy);
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
((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])));
_i++;
}
_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; }
_tuple = _r;
wn = _tuple[0];
err$1 = _tuple[1];
n = n + (wn) >> 0;
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
_tmp = n;
_tmp$1 = err$1;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
/* } */ $s = 1; continue; case 2:
_tmp$2 = n;
_tmp$3 = $ifaceNil;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: byteReplacer.prototype.WriteString }; } $f.$ptr = $ptr; $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;
};
$ptrType(byteReplacer).prototype.WriteString = function(w, s) { return (new byteReplacer(this.$get())).WriteString(w, s); };
byteStringReplacer.prototype.Replace = function(s) {
var $ptr, anyChanges, b, b$1, bi, buf, i, i$1, n, newSize, r, s;
r = this.$val;
newSize = s.length;
anyChanges = false;
i = 0;
while (true) {
if (!(i < s.length)) { break; }
b = s.charCodeAt(i);
if (!((r.nilCheck, ((b < 0 || b >= r.length) ? ($throwRuntimeError("index out of range"), undefined) : r[b])) === sliceType.nil)) {
anyChanges = true;
newSize = newSize + (((r.nilCheck, ((b < 0 || b >= r.length) ? ($throwRuntimeError("index out of range"), undefined) : r[b])).$length - 1 >> 0)) >> 0;
}
i = i + (1) >> 0;
}
if (!anyChanges) {
return s;
}
buf = $makeSlice(sliceType, newSize);
bi = buf;
i$1 = 0;
while (true) {
if (!(i$1 < s.length)) { break; }
b$1 = s.charCodeAt(i$1);
if (!((r.nilCheck, ((b$1 < 0 || b$1 >= r.length) ? ($throwRuntimeError("index out of range"), undefined) : r[b$1])) === sliceType.nil)) {
n = $copySlice(bi, (r.nilCheck, ((b$1 < 0 || b$1 >= r.length) ? ($throwRuntimeError("index out of range"), undefined) : r[b$1])));
bi = $subslice(bi, n);
} else {
(0 >= bi.$length ? ($throwRuntimeError("index out of range"), undefined) : bi.$array[bi.$offset + 0] = b$1);
bi = $subslice(bi, 1);
}
i$1 = i$1 + (1) >> 0;
}
return ($bytesToString(buf));
};
$ptrType(byteStringReplacer).prototype.Replace = function(s) { return (new byteStringReplacer(this.$get())).Replace(s); };
byteStringReplacer.prototype.WriteString = function(w, s) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
r = this.$val;
sw = getStringWriter(w);
last = 0;
i = 0;
/* while (true) { */ case 1:
/* if (!(i < s.length)) { break; } */ if(!(i < s.length)) { $s = 2; continue; }
b = s.charCodeAt(i);
/* */ if ((r.nilCheck, ((b < 0 || b >= r.length) ? ($throwRuntimeError("index out of range"), undefined) : r[b])) === sliceType.nil) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if ((r.nilCheck, ((b < 0 || b >= r.length) ? ($throwRuntimeError("index out of range"), undefined) : r[b])) === sliceType.nil) { */ case 3:
i = i + (1) >> 0;
/* continue; */ $s = 1; continue;
/* } */ case 4:
/* */ if (!((last === i))) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (!((last === i))) { */ case 5:
_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; }
_tuple = _r;
nw = _tuple[0];
err$1 = _tuple[1];
n = n + (nw) >> 0;
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
_tmp = n;
_tmp$1 = err$1;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
/* } */ case 6:
last = i + 1 >> 0;
_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; }
_tuple$1 = _r$1;
nw$1 = _tuple$1[0];
err$2 = _tuple$1[1];
n = n + (nw$1) >> 0;
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
_tmp$2 = n;
_tmp$3 = err$2;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
}
i = i + (1) >> 0;
/* } */ $s = 1; continue; case 2:
/* */ if (!((last === s.length))) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (!((last === s.length))) { */ case 9:
nw$2 = 0;
_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; }
_tuple$2 = _r$2;
nw$2 = _tuple$2[0];
err = _tuple$2[1];
n = n + (nw$2) >> 0;
/* } */ case 10:
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: byteStringReplacer.prototype.WriteString }; } $f.$ptr = $ptr; $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;
};
$ptrType(byteStringReplacer).prototype.WriteString = function(w, s) { return (new byteStringReplacer(this.$get())).WriteString(w, s); };
makeStringFinder = function(pattern) {
var $ptr, _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;
f = new stringFinder.ptr(pattern, arrayType$2.zero(), $makeSlice(sliceType$2, pattern.length));
last = pattern.length - 1 >> 0;
_ref = f.badCharSkip;
_i = 0;
while (true) {
if (!(_i < 256)) { break; }
i = _i;
(x = f.badCharSkip, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i] = pattern.length));
_i++;
}
i$1 = 0;
while (true) {
if (!(i$1 < last)) { break; }
(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)));
i$1 = i$1 + (1) >> 0;
}
lastPrefix = last;
i$2 = last;
while (true) {
if (!(i$2 >= 0)) { break; }
if (HasPrefix(pattern, $substring(pattern, (i$2 + 1 >> 0)))) {
lastPrefix = i$2 + 1 >> 0;
}
(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)));
i$2 = i$2 - (1) >> 0;
}
i$3 = 0;
while (true) {
if (!(i$3 < last)) { break; }
lenSuffix = longestCommonSuffix(pattern, $substring(pattern, 1, (i$3 + 1 >> 0)));
if (!((pattern.charCodeAt((i$3 - lenSuffix >> 0)) === pattern.charCodeAt((last - lenSuffix >> 0))))) {
(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)));
}
i$3 = i$3 + (1) >> 0;
}
return f;
};
longestCommonSuffix = function(a, b) {
var $ptr, a, b, i;
i = 0;
while (true) {
if (!(i < a.length && i < b.length)) { break; }
if (!((a.charCodeAt(((a.length - 1 >> 0) - i >> 0)) === b.charCodeAt(((b.length - 1 >> 0) - i >> 0))))) {
break;
}
i = i + (1) >> 0;
}
return i;
};
stringFinder.ptr.prototype.next = function(text) {
var $ptr, f, i, j, text, x, x$1, x$2;
f = this;
i = f.pattern.length - 1 >> 0;
while (true) {
if (!(i < text.length)) { break; }
j = f.pattern.length - 1 >> 0;
while (true) {
if (!(j >= 0 && (text.charCodeAt(i) === f.pattern.charCodeAt(j)))) { break; }
i = i - (1) >> 0;
j = j - (1) >> 0;
}
if (j < 0) {
return i + 1 >> 0;
}
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;
}
return -1;
};
stringFinder.prototype.next = function(text) { return this.$val.next(text); };
max = function(a, b) {
var $ptr, a, b;
if (a > b) {
return a;
}
return b;
};
explode = function(s, n) {
var $ptr, _tuple, a, ch, i, l, n, s, size, x;
l = utf8.RuneCountInString(s);
if (n < 0 || n > l) {
n = l;
}
a = $makeSlice(sliceType$3, n);
i = 0;
while (true) {
if (!(i < (n - 1 >> 0))) { break; }
_tuple = utf8.DecodeRuneInString(s);
ch = _tuple[0];
size = _tuple[1];
((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = $substring(s, 0, size));
s = $substring(s, size);
if (ch === 65533) {
((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = "\xEF\xBF\xBD");
}
i = i + (1) >> 0;
}
if (n > 0) {
(x = n - 1 >> 0, ((x < 0 || x >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x] = s));
}
return a;
};
Contains = function(s, substr) {
var $ptr, s, substr;
return Index(s, substr) >= 0;
};
$pkg.Contains = Contains;
ContainsRune = function(s, r) {
var $ptr, r, s;
return IndexRune(s, r) >= 0;
};
$pkg.ContainsRune = ContainsRune;
IndexRune = function(s, r) {
var $ptr, _i, _ref, _rune, i, r, r$1, s;
if (0 <= r && r < 128) {
return IndexByte(s, ((r << 24 >>> 24)));
} else if ((r === 65533)) {
_ref = s;
_i = 0;
while (true) {
if (!(_i < _ref.length)) { break; }
_rune = $decodeRune(_ref, _i);
i = _i;
r$1 = _rune[0];
if (r$1 === 65533) {
return i;
}
_i += _rune[1];
}
return -1;
} else if (!utf8.ValidRune(r)) {
return -1;
} else {
return Index(s, ($encodeRune(r)));
}
};
$pkg.IndexRune = IndexRune;
IndexAny = function(s, chars) {
var $ptr, _i, _i$1, _ref, _ref$1, _rune, _rune$1, _tuple, as, c, chars, i, i$1, isASCII, m, s;
if (chars.length > 0) {
if (s.length > 8) {
_tuple = makeASCIISet(chars);
as = $clone(_tuple[0], asciiSet);
isASCII = _tuple[1];
if (isASCII) {
i = 0;
while (true) {
if (!(i < s.length)) { break; }
if (new ptrType$5(as).contains(s.charCodeAt(i))) {
return i;
}
i = i + (1) >> 0;
}
return -1;
}
}
_ref = s;
_i = 0;
while (true) {
if (!(_i < _ref.length)) { break; }
_rune = $decodeRune(_ref, _i);
i$1 = _i;
c = _rune[0];
_ref$1 = chars;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.length)) { break; }
_rune$1 = $decodeRune(_ref$1, _i$1);
m = _rune$1[0];
if (c === m) {
return i$1;
}
_i$1 += _rune$1[1];
}
_i += _rune[1];
}
}
return -1;
};
$pkg.IndexAny = IndexAny;
genSplit = function(s, sep, sepSave, n) {
var $ptr, a, c, i, n, na, s, sep, sepSave, start;
if (n === 0) {
return sliceType$3.nil;
}
if (sep === "") {
return explode(s, n);
}
if (n < 0) {
n = Count(s, sep) + 1 >> 0;
}
c = sep.charCodeAt(0);
start = 0;
a = $makeSlice(sliceType$3, n);
na = 0;
i = 0;
while (true) {
if (!((i + sep.length >> 0) <= s.length && (na + 1 >> 0) < n)) { break; }
if ((s.charCodeAt(i) === c) && ((sep.length === 1) || $substring(s, i, (i + sep.length >> 0)) === sep)) {
((na < 0 || na >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + na] = $substring(s, start, (i + sepSave >> 0)));
na = na + (1) >> 0;
start = i + sep.length >> 0;
i = i + ((sep.length - 1 >> 0)) >> 0;
}
i = i + (1) >> 0;
}
((na < 0 || na >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + na] = $substring(s, start));
return $subslice(a, 0, (na + 1 >> 0));
};
SplitN = function(s, sep, n) {
var $ptr, n, s, sep;
return genSplit(s, sep, 0, n);
};
$pkg.SplitN = SplitN;
Split = function(s, sep) {
var $ptr, s, sep;
return genSplit(s, sep, 0, -1);
};
$pkg.Split = Split;
Join = function(a, sep) {
var $ptr, _1, _i, _ref, a, b, bp, i, n, s, sep;
_1 = a.$length;
if (_1 === (0)) {
return "";
} else if (_1 === (1)) {
return (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]);
} else if (_1 === (2)) {
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]);
} else if (_1 === (3)) {
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]);
}
n = $imul(sep.length, ((a.$length - 1 >> 0)));
i = 0;
while (true) {
if (!(i < a.$length)) { break; }
n = n + (((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i]).length) >> 0;
i = i + (1) >> 0;
}
b = $makeSlice(sliceType, n);
bp = $copyString(b, (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]));
_ref = $subslice(a, 1);
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
bp = bp + ($copyString($subslice(b, bp), sep)) >> 0;
bp = bp + ($copyString($subslice(b, bp), s)) >> 0;
_i++;
}
return ($bytesToString(b));
};
$pkg.Join = Join;
HasPrefix = function(s, prefix) {
var $ptr, prefix, s;
return s.length >= prefix.length && $substring(s, 0, prefix.length) === prefix;
};
$pkg.HasPrefix = HasPrefix;
HasSuffix = function(s, suffix) {
var $ptr, s, suffix;
return s.length >= suffix.length && $substring(s, (s.length - suffix.length >> 0)) === suffix;
};
$pkg.HasSuffix = HasSuffix;
Map = function(mapping, s) {
var $ptr, _i, _r, _ref, _rune, b, c, i, mapping, maxbytes, nb, nbytes, r, s, wid, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; _rune = $f._rune; b = $f.b; c = $f.c; i = $f.i; mapping = $f.mapping; maxbytes = $f.maxbytes; nb = $f.nb; nbytes = $f.nbytes; r = $f.r; s = $f.s; wid = $f.wid; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
maxbytes = s.length;
nbytes = 0;
b = sliceType.nil;
_ref = s;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.length)) { break; } */ if(!(_i < _ref.length)) { $s = 2; continue; }
_rune = $decodeRune(_ref, _i);
i = _i;
c = _rune[0];
_r = mapping(c); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
r = _r;
if (b === sliceType.nil) {
if (r === c) {
_i += _rune[1];
/* continue; */ $s = 1; continue;
}
b = $makeSlice(sliceType, maxbytes);
nbytes = $copyString(b, $substring(s, 0, i));
}
if (r >= 0) {
wid = 1;
if (r >= 128) {
wid = utf8.RuneLen(r);
}
if ((nbytes + wid >> 0) > maxbytes) {
maxbytes = ($imul(maxbytes, 2)) + 4 >> 0;
nb = $makeSlice(sliceType, maxbytes);
$copySlice(nb, $subslice(b, 0, nbytes));
b = nb;
}
nbytes = nbytes + (utf8.EncodeRune($subslice(b, nbytes, maxbytes), r)) >> 0;
}
_i += _rune[1];
/* } */ $s = 1; continue; case 2:
if (b === sliceType.nil) {
$s = -1; return s;
}
$s = -1; return ($bytesToString($subslice(b, 0, nbytes)));
/* */ } return; } if ($f === undefined) { $f = { $blk: Map }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f._rune = _rune; $f.b = b; $f.c = c; $f.i = i; $f.mapping = mapping; $f.maxbytes = maxbytes; $f.nb = nb; $f.nbytes = nbytes; $f.r = r; $f.s = s; $f.wid = wid; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Map = Map;
ToLower = function(s) {
var $ptr, _r, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = Map(unicode.ToLower, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: ToLower }; } $f.$ptr = $ptr; $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.ToLower = ToLower;
TrimLeftFunc = function(s, f) {
var $ptr, _r, f, i, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = indexFunc(s, f, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
i = _r;
if (i === -1) {
$s = -1; return "";
}
$s = -1; return $substring(s, i);
/* */ } return; } if ($f === undefined) { $f = { $blk: TrimLeftFunc }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.i = i; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.TrimLeftFunc = TrimLeftFunc;
TrimRightFunc = function(s, f) {
var $ptr, _r, _tuple, f, i, s, wid, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = lastIndexFunc(s, f, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
i = _r;
if (i >= 0 && s.charCodeAt(i) >= 128) {
_tuple = utf8.DecodeRuneInString($substring(s, i));
wid = _tuple[1];
i = i + (wid) >> 0;
} else {
i = i + (1) >> 0;
}
$s = -1; return $substring(s, 0, i);
/* */ } return; } if ($f === undefined) { $f = { $blk: TrimRightFunc }; } $f.$ptr = $ptr; $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;
};
$pkg.TrimRightFunc = TrimRightFunc;
TrimFunc = function(s, f) {
var $ptr, _r, _r$1, f, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = TrimLeftFunc(s, f); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_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; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: TrimFunc }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.f = f; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.TrimFunc = TrimFunc;
IndexFunc = function(s, f) {
var $ptr, _r, f, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; f = $f.f; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = indexFunc(s, f, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: IndexFunc }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.IndexFunc = IndexFunc;
indexFunc = function(s, f, truth) {
var $ptr, _r, _tuple, f, r, s, start, truth, wid, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
start = 0;
/* while (true) { */ case 1:
/* if (!(start < s.length)) { break; } */ if(!(start < s.length)) { $s = 2; continue; }
wid = 1;
r = ((s.charCodeAt(start) >> 0));
if (r >= 128) {
_tuple = utf8.DecodeRuneInString($substring(s, start));
r = _tuple[0];
wid = _tuple[1];
}
_r = f(r); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (_r === truth) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (_r === truth) { */ case 3:
$s = -1; return start;
/* } */ case 4:
start = start + (wid) >> 0;
/* } */ $s = 1; continue; case 2:
$s = -1; return -1;
/* */ } return; } if ($f === undefined) { $f = { $blk: indexFunc }; } $f.$ptr = $ptr; $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;
};
lastIndexFunc = function(s, f, truth) {
var $ptr, _r, _tuple, f, i, r, s, size, truth, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
i = s.length;
/* while (true) { */ case 1:
/* if (!(i > 0)) { break; } */ if(!(i > 0)) { $s = 2; continue; }
_tuple = utf8.DecodeLastRuneInString($substring(s, 0, i));
r = _tuple[0];
size = _tuple[1];
i = i - (size) >> 0;
_r = f(r); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (_r === truth) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (_r === truth) { */ case 3:
$s = -1; return i;
/* } */ case 4:
/* } */ $s = 1; continue; case 2:
$s = -1; return -1;
/* */ } return; } if ($f === undefined) { $f = { $blk: lastIndexFunc }; } $f.$ptr = $ptr; $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;
};
makeASCIISet = function(chars) {
var $ptr, _index, _tmp, _tmp$1, _tmp$2, _tmp$3, as, c, chars, i, ok, y;
as = arrayType$3.zero();
ok = false;
i = 0;
while (true) {
if (!(i < chars.length)) { break; }
c = chars.charCodeAt(i);
if (c >= 128) {
_tmp = $clone(as, asciiSet);
_tmp$1 = false;
asciiSet.copy(as, _tmp);
ok = _tmp$1;
return [as, ok];
}
_index = c >>> 5 << 24 >>> 24;
((_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));
i = i + (1) >> 0;
}
_tmp$2 = $clone(as, asciiSet);
_tmp$3 = true;
asciiSet.copy(as, _tmp$2);
ok = _tmp$3;
return [as, ok];
};
asciiSet.prototype.contains = function(c) {
var $ptr, as, c, x, y;
as = this.$val;
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));
};
$ptrType(asciiSet).prototype.contains = function(c) { return (new asciiSet(this.$get())).contains(c); };
makeCutsetFunc = function(cutset) {
var $ptr, _tuple, as, cutset, isASCII;
if ((cutset.length === 1) && cutset.charCodeAt(0) < 128) {
return (function(r) {
var $ptr, r;
return r === ((cutset.charCodeAt(0) >> 0));
});
}
_tuple = makeASCIISet(cutset);
as = $clone(_tuple[0], asciiSet);
isASCII = _tuple[1];
if (isASCII) {
return (function(r) {
var $ptr, r;
return r < 128 && new ptrType$5(as).contains(((r << 24 >>> 24)));
});
}
return (function(r) {
var $ptr, r;
return IndexRune(cutset, r) >= 0;
});
};
Trim = function(s, cutset) {
var $ptr, _r, cutset, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; cutset = $f.cutset; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
if (s === "" || cutset === "") {
$s = -1; return s;
}
_r = TrimFunc(s, makeCutsetFunc(cutset)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Trim }; } $f.$ptr = $ptr; $f._r = _r; $f.cutset = cutset; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Trim = Trim;
TrimLeft = function(s, cutset) {
var $ptr, _r, cutset, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; cutset = $f.cutset; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
if (s === "" || cutset === "") {
$s = -1; return s;
}
_r = TrimLeftFunc(s, makeCutsetFunc(cutset)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: TrimLeft }; } $f.$ptr = $ptr; $f._r = _r; $f.cutset = cutset; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.TrimLeft = TrimLeft;
TrimRight = function(s, cutset) {
var $ptr, _r, cutset, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; cutset = $f.cutset; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
if (s === "" || cutset === "") {
$s = -1; return s;
}
_r = TrimRightFunc(s, makeCutsetFunc(cutset)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: TrimRight }; } $f.$ptr = $ptr; $f._r = _r; $f.cutset = cutset; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.TrimRight = TrimRight;
TrimSpace = function(s) {
var $ptr, _r, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = TrimFunc(s, unicode.IsSpace); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: TrimSpace }; } $f.$ptr = $ptr; $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.TrimSpace = TrimSpace;
TrimPrefix = function(s, prefix) {
var $ptr, prefix, s;
if (HasPrefix(s, prefix)) {
return $substring(s, prefix.length);
}
return s;
};
$pkg.TrimPrefix = TrimPrefix;
TrimSuffix = function(s, suffix) {
var $ptr, s, suffix;
if (HasSuffix(s, suffix)) {
return $substring(s, 0, (s.length - suffix.length >> 0));
}
return s;
};
$pkg.TrimSuffix = TrimSuffix;
Replace = function(s, old, new$1, n) {
var $ptr, _tuple, i, j, m, n, new$1, old, s, start, t, w, wid;
if (old === new$1 || (n === 0)) {
return s;
}
m = Count(s, old);
if (m === 0) {
return s;
} else if (n < 0 || m < n) {
n = m;
}
t = $makeSlice(sliceType, (s.length + ($imul(n, ((new$1.length - old.length >> 0)))) >> 0));
w = 0;
start = 0;
i = 0;
while (true) {
if (!(i < n)) { break; }
j = start;
if (old.length === 0) {
if (i > 0) {
_tuple = utf8.DecodeRuneInString($substring(s, start));
wid = _tuple[1];
j = j + (wid) >> 0;
}
} else {
j = j + (Index($substring(s, start), old)) >> 0;
}
w = w + ($copyString($subslice(t, w), $substring(s, start, j))) >> 0;
w = w + ($copyString($subslice(t, w), new$1)) >> 0;
start = j + old.length >> 0;
i = i + (1) >> 0;
}
w = w + ($copyString($subslice(t, w), $substring(s, start))) >> 0;
return ($bytesToString($subslice(t, 0, w)));
};
$pkg.Replace = Replace;
EqualFold = function(s, t) {
var $ptr, _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;
while (true) {
if (!(!(s === "") && !(t === ""))) { break; }
_tmp = 0;
_tmp$1 = 0;
sr = _tmp;
tr = _tmp$1;
if (s.charCodeAt(0) < 128) {
_tmp$2 = ((s.charCodeAt(0) >> 0));
_tmp$3 = $substring(s, 1);
sr = _tmp$2;
s = _tmp$3;
} else {
_tuple = utf8.DecodeRuneInString(s);
r = _tuple[0];
size = _tuple[1];
_tmp$4 = r;
_tmp$5 = $substring(s, size);
sr = _tmp$4;
s = _tmp$5;
}
if (t.charCodeAt(0) < 128) {
_tmp$6 = ((t.charCodeAt(0) >> 0));
_tmp$7 = $substring(t, 1);
tr = _tmp$6;
t = _tmp$7;
} else {
_tuple$1 = utf8.DecodeRuneInString(t);
r$1 = _tuple$1[0];
size$1 = _tuple$1[1];
_tmp$8 = r$1;
_tmp$9 = $substring(t, size$1);
tr = _tmp$8;
t = _tmp$9;
}
if (tr === sr) {
continue;
}
if (tr < sr) {
_tmp$10 = sr;
_tmp$11 = tr;
tr = _tmp$10;
sr = _tmp$11;
}
if (tr < 128 && 65 <= sr && sr <= 90) {
if (tr === ((sr + 97 >> 0) - 65 >> 0)) {
continue;
}
return false;
}
r$2 = unicode.SimpleFold(sr);
while (true) {
if (!(!((r$2 === sr)) && r$2 < tr)) { break; }
r$2 = unicode.SimpleFold(r$2);
}
if (r$2 === tr) {
continue;
}
return false;
}
return s === t;
};
$pkg.EqualFold = EqualFold;
ptrType$6.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)}];
ptrType$7.methods = [{prop: "Replace", name: "Replace", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([io.Writer, $String], [$Int, $error], false)}];
ptrType$2.methods = [{prop: "add", name: "add", pkg: "strings", typ: $funcType([$String, $String, $Int, ptrType$8], [], false)}];
ptrType$8.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)}];
ptrType$3.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}];
stringWriter.methods = [{prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}];
ptrType$9.methods = [{prop: "Replace", name: "Replace", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([io.Writer, $String], [$Int, $error], false)}];
ptrType.methods = [{prop: "Replace", name: "Replace", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([io.Writer, $String], [$Int, $error], false)}];
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)}];
ptrType$4.methods = [{prop: "next", name: "next", pkg: "strings", typ: $funcType([$String], [$Int], false)}];
ptrType$5.methods = [{prop: "contains", name: "contains", pkg: "strings", typ: $funcType([$Uint8], [$Bool], false)}];
Reader.init("strings", [{prop: "s", name: "s", exported: false, typ: $String, tag: ""}, {prop: "i", name: "i", exported: false, typ: $Int64, tag: ""}, {prop: "prevRune", name: "prevRune", exported: false, typ: $Int, tag: ""}]);
Replacer.init("strings", [{prop: "r", name: "r", exported: false, typ: replacer, tag: ""}]);
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)}]);
trieNode.init("strings", [{prop: "value", name: "value", exported: false, typ: $String, tag: ""}, {prop: "priority", name: "priority", exported: false, typ: $Int, tag: ""}, {prop: "prefix", name: "prefix", exported: false, typ: $String, tag: ""}, {prop: "next", name: "next", exported: false, typ: ptrType$2, tag: ""}, {prop: "table", name: "table", exported: false, typ: sliceType$1, tag: ""}]);
genericReplacer.init("strings", [{prop: "root", name: "root", exported: false, typ: trieNode, tag: ""}, {prop: "tableSize", name: "tableSize", exported: false, typ: $Int, tag: ""}, {prop: "mapping", name: "mapping", exported: false, typ: arrayType, tag: ""}]);
appendSliceWriter.init($Uint8);
stringWriterIface.init([{prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}]);
stringWriter.init("strings", [{prop: "w", name: "w", exported: false, typ: io.Writer, tag: ""}]);
singleStringReplacer.init("strings", [{prop: "finder", name: "finder", exported: false, typ: ptrType$4, tag: ""}, {prop: "value", name: "value", exported: false, typ: $String, tag: ""}]);
byteReplacer.init($Uint8, 256);
byteStringReplacer.init(sliceType, 256);
stringFinder.init("strings", [{prop: "pattern", name: "pattern", exported: false, typ: $String, tag: ""}, {prop: "badCharSkip", name: "badCharSkip", exported: false, typ: arrayType$2, tag: ""}, {prop: "goodSuffixSkip", name: "goodSuffixSkip", exported: false, typ: sliceType$2, tag: ""}]);
asciiSet.init($Uint32, 8);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = unicode.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = utf8.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["encoding/json"] = (function() {
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$1, sliceType$1, ptrType, ptrType$1, ptrType$2, sliceType$2, structType$2, ptrType$4, ptrType$5, mapType$1, ptrType$6, sliceType$3, mapType$2, ptrType$9, ptrType$10, ptrType$11, ptrType$13, ptrType$14, funcType, 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, clearOffset, parseTag;
bytes = $packages["bytes"];
encoding = $packages["encoding"];
base64 = $packages["encoding/base64"];
errors = $packages["errors"];
fmt = $packages["fmt"];
nosync = $packages["github.com/gopherjs/gopherjs/nosync"];
io = $packages["io"];
math = $packages["math"];
reflect = $packages["reflect"];
runtime = $packages["runtime"];
sort = $packages["sort"];
strconv = $packages["strconv"];
strings = $packages["strings"];
atomic = $packages["sync/atomic"];
unicode = $packages["unicode"];
utf16 = $packages["unicode/utf16"];
utf8 = $packages["unicode/utf8"];
Unmarshaler = $pkg.Unmarshaler = $newType(8, $kindInterface, "json.Unmarshaler", true, "encoding/json", true, null);
UnmarshalTypeError = $pkg.UnmarshalTypeError = $newType(0, $kindStruct, "json.UnmarshalTypeError", true, "encoding/json", true, function(Value_, Type_, Offset_, Struct_, Field_) {
this.$val = this;
if (arguments.length === 0) {
this.Value = "";
this.Type = $ifaceNil;
this.Offset = new $Int64(0, 0);
this.Struct = "";
this.Field = "";
return;
}
this.Value = Value_;
this.Type = Type_;
this.Offset = Offset_;
this.Struct = Struct_;
this.Field = Field_;
});
InvalidUnmarshalError = $pkg.InvalidUnmarshalError = $newType(0, $kindStruct, "json.InvalidUnmarshalError", true, "encoding/json", true, function(Type_) {
this.$val = this;
if (arguments.length === 0) {
this.Type = $ifaceNil;
return;
}
this.Type = Type_;
});
Number = $pkg.Number = $newType(8, $kindString, "json.Number", true, "encoding/json", true, null);
decodeState = $pkg.decodeState = $newType(0, $kindStruct, "json.decodeState", true, "encoding/json", false, function(data_, off_, scan_, nextscan_, errorContext_, savedError_, useNumber_) {
this.$val = this;
if (arguments.length === 0) {
this.data = sliceType$1.nil;
this.off = 0;
this.scan = new scanner.ptr($throwNilPointerError, false, sliceType$2.nil, $ifaceNil, false, 0, $throwNilPointerError, new $Int64(0, 0));
this.nextscan = new scanner.ptr($throwNilPointerError, false, sliceType$2.nil, $ifaceNil, false, 0, $throwNilPointerError, new $Int64(0, 0));
this.errorContext = new structType$2.ptr("", "");
this.savedError = $ifaceNil;
this.useNumber = false;
return;
}
this.data = data_;
this.off = off_;
this.scan = scan_;
this.nextscan = nextscan_;
this.errorContext = errorContext_;
this.savedError = savedError_;
this.useNumber = useNumber_;
});
unquotedValue = $pkg.unquotedValue = $newType(0, $kindStruct, "json.unquotedValue", true, "encoding/json", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
Marshaler = $pkg.Marshaler = $newType(8, $kindInterface, "json.Marshaler", true, "encoding/json", true, null);
field = $pkg.field = $newType(0, $kindStruct, "json.field", true, "encoding/json", false, function(name_, nameBytes_, equalFold_, tag_, index_, typ_, omitEmpty_, quoted_) {
this.$val = this;
if (arguments.length === 0) {
this.name = "";
this.nameBytes = sliceType$1.nil;
this.equalFold = $throwNilPointerError;
this.tag = false;
this.index = sliceType$2.nil;
this.typ = $ifaceNil;
this.omitEmpty = false;
this.quoted = false;
return;
}
this.name = name_;
this.nameBytes = nameBytes_;
this.equalFold = equalFold_;
this.tag = tag_;
this.index = index_;
this.typ = typ_;
this.omitEmpty = omitEmpty_;
this.quoted = quoted_;
});
byIndex = $pkg.byIndex = $newType(12, $kindSlice, "json.byIndex", true, "encoding/json", false, null);
SyntaxError = $pkg.SyntaxError = $newType(0, $kindStruct, "json.SyntaxError", true, "encoding/json", true, function(msg_, Offset_) {
this.$val = this;
if (arguments.length === 0) {
this.msg = "";
this.Offset = new $Int64(0, 0);
return;
}
this.msg = msg_;
this.Offset = Offset_;
});
scanner = $pkg.scanner = $newType(0, $kindStruct, "json.scanner", true, "encoding/json", false, function(step_, endTop_, parseState_, err_, redo_, redoCode_, redoState_, bytes_) {
this.$val = this;
if (arguments.length === 0) {
this.step = $throwNilPointerError;
this.endTop = false;
this.parseState = sliceType$2.nil;
this.err = $ifaceNil;
this.redo = false;
this.redoCode = 0;
this.redoState = $throwNilPointerError;
this.bytes = new $Int64(0, 0);
return;
}
this.step = step_;
this.endTop = endTop_;
this.parseState = parseState_;
this.err = err_;
this.redo = redo_;
this.redoCode = redoCode_;
this.redoState = redoState_;
this.bytes = bytes_;
});
Decoder = $pkg.Decoder = $newType(0, $kindStruct, "json.Decoder", true, "encoding/json", true, function(r_, buf_, d_, scanp_, scan_, err_, tokenState_, tokenStack_) {
this.$val = this;
if (arguments.length === 0) {
this.r = $ifaceNil;
this.buf = sliceType$1.nil;
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$2.ptr("", ""), $ifaceNil, false);
this.scanp = 0;
this.scan = new scanner.ptr($throwNilPointerError, false, sliceType$2.nil, $ifaceNil, false, 0, $throwNilPointerError, new $Int64(0, 0));
this.err = $ifaceNil;
this.tokenState = 0;
this.tokenStack = sliceType$2.nil;
return;
}
this.r = r_;
this.buf = buf_;
this.d = d_;
this.scanp = scanp_;
this.scan = scan_;
this.err = err_;
this.tokenState = tokenState_;
this.tokenStack = tokenStack_;
});
Token = $pkg.Token = $newType(8, $kindInterface, "json.Token", true, "encoding/json", true, null);
Delim = $pkg.Delim = $newType(4, $kindInt32, "json.Delim", true, "encoding/json", true, null);
tagOptions = $pkg.tagOptions = $newType(8, $kindString, "json.tagOptions", true, "encoding/json", false, null);
sliceType = $sliceType($emptyInterface);
structType$1 = $structType("encoding/json", [{prop: "value", name: "value", exported: false, typ: atomic.Value, tag: ""}, {prop: "mu", name: "mu", exported: false, typ: nosync.Mutex, tag: ""}]);
sliceType$1 = $sliceType($Uint8);
ptrType = $ptrType(encoding.TextUnmarshaler);
ptrType$1 = $ptrType(Marshaler);
ptrType$2 = $ptrType(encoding.TextMarshaler);
sliceType$2 = $sliceType($Int);
structType$2 = $structType("", [{prop: "Struct", name: "Struct", exported: true, typ: $String, tag: ""}, {prop: "Field", name: "Field", exported: true, typ: $String, tag: ""}]);
ptrType$4 = $ptrType(UnmarshalTypeError);
ptrType$5 = $ptrType(reflect.rtype);
mapType$1 = $mapType($String, $emptyInterface);
ptrType$6 = $ptrType(field);
sliceType$3 = $sliceType(field);
mapType$2 = $mapType(reflect.Type, sliceType$3);
ptrType$9 = $ptrType($String);
ptrType$10 = $ptrType($emptyInterface);
ptrType$11 = $ptrType(SyntaxError);
ptrType$13 = $ptrType(InvalidUnmarshalError);
ptrType$14 = $ptrType(decodeState);
funcType = $funcType([sliceType$1, sliceType$1], [$Bool], false);
ptrType$26 = $ptrType(scanner);
funcType$1 = $funcType([ptrType$26, $Uint8], [$Int], false);
ptrType$27 = $ptrType(Decoder);
UnmarshalTypeError.ptr.prototype.Error = function() {
var $ptr, _r$3, _r$4, e, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
e = this;
/* */ if (!(e.Struct === "") || !(e.Field === "")) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(e.Struct === "") || !(e.Field === "")) { */ case 1:
_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; }
$s = -1; return "json: cannot unmarshal " + e.Value + " into Go struct field " + e.Struct + "." + e.Field + " of type " + _r$3;
/* } */ case 2:
_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; }
$s = -1; return "json: cannot unmarshal " + e.Value + " into Go value of type " + _r$4;
/* */ } return; } if ($f === undefined) { $f = { $blk: UnmarshalTypeError.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
};
UnmarshalTypeError.prototype.Error = function() { return this.$val.Error(); };
InvalidUnmarshalError.ptr.prototype.Error = function() {
var $ptr, _r$3, _r$4, _r$5, e, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
e = this;
if ($interfaceIsEqual(e.Type, $ifaceNil)) {
$s = -1; return "json: Unmarshal(nil)";
}
_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; }
/* */ if (!((_r$3 === 22))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!((_r$3 === 22))) { */ case 1:
_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; }
$s = -1; return "json: Unmarshal(non-pointer " + _r$4 + ")";
/* } */ case 2:
_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; }
$s = -1; return "json: Unmarshal(nil " + _r$5 + ")";
/* */ } return; } if ($f === undefined) { $f = { $blk: InvalidUnmarshalError.ptr.prototype.Error }; } $f.$ptr = $ptr; $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;
};
InvalidUnmarshalError.prototype.Error = function() { return this.$val.Error(); };
decodeState.ptr.prototype.unmarshal = function(v) {
var $ptr, _r$3, d, err, rv, v, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
err = [err];
err[0] = $ifaceNil;
d = this;
$deferred.push([(function(err) { return function() {
var $ptr, _tuple, ok, r;
r = $recover();
if (!($interfaceIsEqual(r, $ifaceNil))) {
_tuple = $assertType(r, runtime.Error, true);
ok = _tuple[1];
if (ok) {
$panic(r);
}
err[0] = $assertType(r, $error);
}
}; })(err), []]);
_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; }
rv = _r$3;
if (!(($clone(rv, reflect.Value).Kind() === 22)) || $clone(rv, reflect.Value).IsNil()) {
err[0] = new InvalidUnmarshalError.ptr(reflect.TypeOf(v));
$s = -1; return err[0];
}
d.scan.reset();
$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; }
err[0] = d.savedError;
$s = -1; return err[0];
/* */ } 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.$ptr = $ptr; $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; } }
};
decodeState.prototype.unmarshal = function(v) { return this.$val.unmarshal(v); };
Number.prototype.String = function() {
var $ptr, n;
n = this.$val;
return (n);
};
$ptrType(Number).prototype.String = function() { return new Number(this.$get()).String(); };
Number.prototype.Float64 = function() {
var $ptr, n;
n = this.$val;
return strconv.ParseFloat((n), 64);
};
$ptrType(Number).prototype.Float64 = function() { return new Number(this.$get()).Float64(); };
Number.prototype.Int64 = function() {
var $ptr, n;
n = this.$val;
return strconv.ParseInt((n), 10, 64);
};
$ptrType(Number).prototype.Int64 = function() { return new Number(this.$get()).Int64(); };
isValidNumber = function(s) {
var $ptr, s;
if (s === "") {
return false;
}
if (s.charCodeAt(0) === 45) {
s = $substring(s, 1);
if (s === "") {
return false;
}
}
if ((s.charCodeAt(0) === 48)) {
s = $substring(s, 1);
} else if (49 <= s.charCodeAt(0) && s.charCodeAt(0) <= 57) {
s = $substring(s, 1);
while (true) {
if (!(s.length > 0 && 48 <= s.charCodeAt(0) && s.charCodeAt(0) <= 57)) { break; }
s = $substring(s, 1);
}
} else {
return false;
}
if (s.length >= 2 && (s.charCodeAt(0) === 46) && 48 <= s.charCodeAt(1) && s.charCodeAt(1) <= 57) {
s = $substring(s, 2);
while (true) {
if (!(s.length > 0 && 48 <= s.charCodeAt(0) && s.charCodeAt(0) <= 57)) { break; }
s = $substring(s, 1);
}
}
if (s.length >= 2 && ((s.charCodeAt(0) === 101) || (s.charCodeAt(0) === 69))) {
s = $substring(s, 1);
if ((s.charCodeAt(0) === 43) || (s.charCodeAt(0) === 45)) {
s = $substring(s, 1);
if (s === "") {
return false;
}
}
while (true) {
if (!(s.length > 0 && 48 <= s.charCodeAt(0) && s.charCodeAt(0) <= 57)) { break; }
s = $substring(s, 1);
}
}
return s === "";
};
decodeState.ptr.prototype.init = function(data) {
var $ptr, d, data;
d = this;
d.data = data;
d.off = 0;
d.savedError = $ifaceNil;
d.errorContext.Struct = "";
d.errorContext.Field = "";
return d;
};
decodeState.prototype.init = function(data) { return this.$val.init(data); };
decodeState.ptr.prototype.error = function(err) {
var $ptr, d, err;
d = this;
$panic(d.addErrorContext(err));
};
decodeState.prototype.error = function(err) { return this.$val.error(err); };
decodeState.ptr.prototype.saveError = function(err) {
var $ptr, d, err;
d = this;
if ($interfaceIsEqual(d.savedError, $ifaceNil)) {
d.savedError = d.addErrorContext(err);
}
};
decodeState.prototype.saveError = function(err) { return this.$val.saveError(err); };
decodeState.ptr.prototype.addErrorContext = function(err) {
var $ptr, _ref, d, err, err$1;
d = this;
if (!(d.errorContext.Struct === "") || !(d.errorContext.Field === "")) {
_ref = err;
if ($assertType(_ref, ptrType$4, true)[1]) {
err$1 = _ref.$val;
err$1.Struct = d.errorContext.Struct;
err$1.Field = d.errorContext.Field;
return err$1;
}
}
return err;
};
decodeState.prototype.addErrorContext = function(err) { return this.$val.addErrorContext(err); };
decodeState.ptr.prototype.next = function() {
var $ptr, _r$3, _r$4, _r$5, _tuple, c, d, err, item, rest, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
d = this;
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]));
_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; }
_tuple = _r$3;
item = _tuple[0];
rest = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
d.error(err);
}
d.off = d.data.$length - rest.$length >> 0;
/* */ if (c === 123) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (c === 123) { */ case 2:
_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; }
_r$4;
$s = 4; continue;
/* } else { */ case 3:
_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; }
_r$5;
/* } */ case 4:
$s = -1; return item;
/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.next }; } $f.$ptr = $ptr; $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;
};
decodeState.prototype.next = function() { return this.$val.next(); };
decodeState.ptr.prototype.scanWhile = function(op) {
var $ptr, _r$3, _r$4, c, d, newOp, op, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
d = this;
newOp = 0;
/* while (true) { */ case 1:
/* */ if (d.off >= d.data.$length) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (d.off >= d.data.$length) { */ case 3:
_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; }
newOp = _r$3;
d.off = d.data.$length + 1 >> 0;
$s = 5; continue;
/* } else { */ case 4:
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]));
d.off = d.off + (1) >> 0;
_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; }
newOp = _r$4;
/* } */ case 5:
if (!((newOp === op))) {
/* break; */ $s = 2; continue;
}
/* } */ $s = 1; continue; case 2:
$s = -1; return newOp;
/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.scanWhile }; } $f.$ptr = $ptr; $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;
};
decodeState.prototype.scanWhile = function(op) { return this.$val.scanWhile(op); };
decodeState.ptr.prototype.value = function(v) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
d = this;
/* */ if (!$clone(v, reflect.Value).IsValid()) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!$clone(v, reflect.Value).IsValid()) { */ case 1:
_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; }
_tuple = _r$3;
rest = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
d.error(err);
}
d.off = d.data.$length - rest.$length >> 0;
if (d.scan.redo) {
d.scan.redo = false;
d.scan.step = stateBeginValue;
}
_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; }
_r$4;
_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; }
_r$5;
n = d.scan.parseState.$length;
/* */ 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; }
/* */ $s = 7; continue;
/* 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:
_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; }
_r$6;
_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; }
_r$7;
_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; }
_r$8;
_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; }
_r$9;
/* } */ case 7:
$s = -1; return;
/* } */ case 2:
_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; }
op = _r$10;
_1 = op;
/* */ if (_1 === (6)) { $s = 14; continue; }
/* */ if (_1 === (2)) { $s = 15; continue; }
/* */ if (_1 === (1)) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (_1 === (6)) { */ case 14:
$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; }
$s = 18; continue;
/* } else if (_1 === (2)) { */ case 15:
$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; }
$s = 18; continue;
/* } else if (_1 === (1)) { */ case 16:
$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; }
$s = 18; continue;
/* } else { */ case 17:
d.error(errPhase);
/* } */ case 18:
case 12:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.value }; } $f.$ptr = $ptr; $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;
};
decodeState.prototype.value = function(v) { return this.$val.value(v); };
decodeState.ptr.prototype.valueQuoted = function() {
var $ptr, _1, _r$3, _r$4, _ref, d, op, v, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
d = this;
_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; }
op = _r$3;
_1 = op;
/* */ if (_1 === (6)) { $s = 3; continue; }
/* */ if (_1 === (2)) { $s = 4; continue; }
/* */ if (_1 === (1)) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (_1 === (6)) { */ case 3:
$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; }
$s = 7; continue;
/* } else if (_1 === (2)) { */ case 4:
$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; }
$s = 7; continue;
/* } else if (_1 === (1)) { */ case 5:
_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; }
_ref = _r$4;
/* */ if (_ref === $ifaceNil || $assertType(_ref, $String, true)[1]) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if (_ref === $ifaceNil || $assertType(_ref, $String, true)[1]) { */ case 11:
v = _ref;
$s = -1; return v;
/* } */ case 12:
$s = 7; continue;
/* } else { */ case 6:
d.error(errPhase);
/* } */ case 7:
case 1:
$s = -1; return (x = new unquotedValue.ptr(), new x.constructor.elem(x));
/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.valueQuoted }; } $f.$ptr = $ptr; $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;
};
decodeState.prototype.valueQuoted = function() { return this.$val.valueQuoted(); };
decodeState.ptr.prototype.indirect = function(v, decodingNull) {
var $ptr, _r$10, _r$11, _r$12, _r$13, _r$14, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
d = this;
if (!(!(($clone(v, reflect.Value).Kind() === 22)))) { _v = false; $s = 3; continue s; }
_r$3 = $clone(v, reflect.Value).Type().Name(); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_v = !(_r$3 === ""); case 3:
/* */ if (_v && $clone(v, reflect.Value).CanAddr()) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (_v && $clone(v, reflect.Value).CanAddr()) { */ case 1:
v = $clone(v, reflect.Value).Addr();
/* } */ case 2:
/* while (true) { */ case 5:
/* */ if (($clone(v, reflect.Value).Kind() === 20) && !$clone(v, reflect.Value).IsNil()) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (($clone(v, reflect.Value).Kind() === 20) && !$clone(v, reflect.Value).IsNil()) { */ case 7:
_r$4 = $clone(v, reflect.Value).Elem(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
e = _r$4;
if (!(($clone(e, reflect.Value).Kind() === 22) && !$clone(e, reflect.Value).IsNil())) { _v$1 = false; $s = 12; continue s; }
if (!decodingNull) { _v$2 = true; $s = 13; continue s; }
_r$5 = $clone(e, reflect.Value).Elem(); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_r$6 = $clone(_r$5, reflect.Value).Kind(); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_v$2 = _r$6 === 22; case 13:
_v$1 = _v$2; case 12:
/* */ if (_v$1) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (_v$1) { */ case 10:
v = e;
/* continue; */ $s = 5; continue;
/* } */ case 11:
/* } */ case 8:
if (!(($clone(v, reflect.Value).Kind() === 22))) {
/* break; */ $s = 6; continue;
}
_r$7 = $clone(v, reflect.Value).Elem(); /* */ $s = 18; case 18: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_r$8 = $clone(_r$7, reflect.Value).Kind(); /* */ $s = 19; case 19: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
/* */ if (!((_r$8 === 22)) && decodingNull && $clone(v, reflect.Value).CanSet()) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (!((_r$8 === 22)) && decodingNull && $clone(v, reflect.Value).CanSet()) { */ case 16:
/* break; */ $s = 6; continue;
/* } */ case 17:
/* */ if ($clone(v, reflect.Value).IsNil()) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if ($clone(v, reflect.Value).IsNil()) { */ case 20:
_r$9 = $clone(v, reflect.Value).Type().Elem(); /* */ $s = 22; case 22: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
_r$10 = reflect.New(_r$9); /* */ $s = 23; case 23: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
$r = $clone(v, reflect.Value).Set($clone(_r$10, reflect.Value)); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 21:
_r$11 = $clone(v, reflect.Value).Type().NumMethod(); /* */ $s = 27; case 27: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
/* */ if (_r$11 > 0) { $s = 25; continue; }
/* */ $s = 26; continue;
/* if (_r$11 > 0) { */ case 25:
_r$12 = $clone(v, reflect.Value).Interface(); /* */ $s = 28; case 28: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
_tuple = $assertType(_r$12, Unmarshaler, true);
u = _tuple[0];
ok = _tuple[1];
if (ok) {
$s = -1; return [u, $ifaceNil, new reflect.Value.ptr(ptrType$5.nil, 0, 0)];
}
/* */ if (!decodingNull) { $s = 29; continue; }
/* */ $s = 30; continue;
/* if (!decodingNull) { */ case 29:
_r$13 = $clone(v, reflect.Value).Interface(); /* */ $s = 31; case 31: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
_tuple$1 = $assertType(_r$13, encoding.TextUnmarshaler, true);
u$1 = _tuple$1[0];
ok$1 = _tuple$1[1];
if (ok$1) {
$s = -1; return [$ifaceNil, u$1, new reflect.Value.ptr(ptrType$5.nil, 0, 0)];
}
/* } */ case 30:
/* } */ case 26:
_r$14 = $clone(v, reflect.Value).Elem(); /* */ $s = 32; case 32: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
v = _r$14;
/* } */ $s = 5; continue; case 6:
$s = -1; return [$ifaceNil, $ifaceNil, v];
/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.indirect }; } $f.$ptr = $ptr; $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._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;
};
decodeState.prototype.indirect = function(v, decodingNull) { return this.$val.indirect(v, decodingNull); };
decodeState.ptr.prototype.array = function(v) {
var $ptr, _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$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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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$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:
d = this;
_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; }
_tuple = _r$3;
u = _tuple[0];
ut = _tuple[1];
pv = _tuple[2];
/* */ if (!($interfaceIsEqual(u, $ifaceNil))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!($interfaceIsEqual(u, $ifaceNil))) { */ case 2:
d.off = d.off - (1) >> 0;
_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; }
_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; }
err = _r$5;
if (!($interfaceIsEqual(err, $ifaceNil))) {
d.error(err);
}
$s = -1; return;
/* } */ case 3:
/* */ if (!($interfaceIsEqual(ut, $ifaceNil))) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!($interfaceIsEqual(ut, $ifaceNil))) { */ case 6:
d.saveError(new UnmarshalTypeError.ptr("array", $clone(v, reflect.Value).Type(), (new $Int64(0, d.off)), "", ""));
d.off = d.off - (1) >> 0;
_r$6 = d.next(); /* */ $s = 8; case 8: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_r$6;
$s = -1; return;
/* } */ case 7:
v = pv;
_1 = $clone(v, reflect.Value).Kind();
/* */ if (_1 === (20)) { $s = 10; continue; }
/* */ if (_1 === (17)) { $s = 11; continue; }
/* */ if (_1 === (23)) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (_1 === (20)) { */ case 10:
_r$7 = $clone(v, reflect.Value).NumMethod(); /* */ $s = 17; case 17: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
/* */ if (_r$7 === 0) { $s = 15; continue; }
/* */ $s = 16; continue;
/* if (_r$7 === 0) { */ case 15:
_r$8 = d.arrayInterface(); /* */ $s = 18; case 18: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_r$9 = reflect.ValueOf(_r$8); /* */ $s = 19; case 19: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
$r = $clone(v, reflect.Value).Set($clone(_r$9, reflect.Value)); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } */ case 16:
d.saveError(new UnmarshalTypeError.ptr("array", $clone(v, reflect.Value).Type(), (new $Int64(0, d.off)), "", ""));
d.off = d.off - (1) >> 0;
_r$10 = d.next(); /* */ $s = 21; case 21: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
_r$10;
$s = -1; return;
/* } else if (_1 === (17)) { */ case 11:
$s = 14; continue;
/* } else if (_1 === (23)) { */ case 12:
/* break; */ $s = 9; continue;
$s = 14; continue;
/* } else { */ case 13:
d.saveError(new UnmarshalTypeError.ptr("array", $clone(v, reflect.Value).Type(), (new $Int64(0, d.off)), "", ""));
d.off = d.off - (1) >> 0;
_r$11 = d.next(); /* */ $s = 22; case 22: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
_r$11;
$s = -1; return;
/* } */ case 14:
case 9:
i = 0;
/* while (true) { */ case 23:
_r$12 = d.scanWhile(9); /* */ $s = 25; case 25: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
op = _r$12;
if (op === 8) {
/* break; */ $s = 24; continue;
}
d.off = d.off - (1) >> 0;
d.scan.undo(op);
/* */ if ($clone(v, reflect.Value).Kind() === 23) { $s = 26; continue; }
/* */ $s = 27; continue;
/* if ($clone(v, reflect.Value).Kind() === 23) { */ case 26:
/* */ if (i >= $clone(v, reflect.Value).Cap()) { $s = 28; continue; }
/* */ $s = 29; continue;
/* if (i >= $clone(v, reflect.Value).Cap()) { */ case 28:
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;
if (newcap < 4) {
newcap = 4;
}
_r$13 = reflect.MakeSlice($clone(v, reflect.Value).Type(), $clone(v, reflect.Value).Len(), newcap); /* */ $s = 30; case 30: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
newv = _r$13;
_r$14 = reflect.Copy($clone(newv, reflect.Value), $clone(v, reflect.Value)); /* */ $s = 31; case 31: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
_r$14;
$r = $clone(v, reflect.Value).Set($clone(newv, reflect.Value)); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 29:
if (i >= $clone(v, reflect.Value).Len()) {
$clone(v, reflect.Value).SetLen(i + 1 >> 0);
}
/* } */ case 27:
/* */ if (i < $clone(v, reflect.Value).Len()) { $s = 33; continue; }
/* */ $s = 34; continue;
/* if (i < $clone(v, reflect.Value).Len()) { */ case 33:
_r$15 = $clone(v, reflect.Value).Index(i); /* */ $s = 36; case 36: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
$r = d.value($clone(_r$15, reflect.Value)); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 35; continue;
/* } else { */ case 34:
$r = d.value(new reflect.Value.ptr(ptrType$5.nil, 0, 0)); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 35:
i = i + (1) >> 0;
_r$16 = d.scanWhile(9); /* */ $s = 39; case 39: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
op = _r$16;
if (op === 8) {
/* break; */ $s = 24; continue;
}
if (!((op === 7))) {
d.error(errPhase);
}
/* } */ $s = 23; continue; case 24:
/* */ if (i < $clone(v, reflect.Value).Len()) { $s = 40; continue; }
/* */ $s = 41; continue;
/* if (i < $clone(v, reflect.Value).Len()) { */ case 40:
/* */ if ($clone(v, reflect.Value).Kind() === 17) { $s = 42; continue; }
/* */ $s = 43; continue;
/* if ($clone(v, reflect.Value).Kind() === 17) { */ case 42:
_r$17 = $clone(v, reflect.Value).Type().Elem(); /* */ $s = 45; case 45: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
_r$18 = reflect.Zero(_r$17); /* */ $s = 46; case 46: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
z = _r$18;
/* while (true) { */ case 47:
/* if (!(i < $clone(v, reflect.Value).Len())) { break; } */ if(!(i < $clone(v, reflect.Value).Len())) { $s = 48; continue; }
_r$19 = $clone(v, reflect.Value).Index(i); /* */ $s = 49; case 49: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
$r = $clone(_r$19, reflect.Value).Set($clone(z, reflect.Value)); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
i = i + (1) >> 0;
/* } */ $s = 47; continue; case 48:
$s = 44; continue;
/* } else { */ case 43:
$clone(v, reflect.Value).SetLen(i);
/* } */ case 44:
/* } */ case 41:
/* */ if ((i === 0) && ($clone(v, reflect.Value).Kind() === 23)) { $s = 51; continue; }
/* */ $s = 52; continue;
/* if ((i === 0) && ($clone(v, reflect.Value).Kind() === 23)) { */ case 51:
_r$20 = reflect.MakeSlice($clone(v, reflect.Value).Type(), 0, 0); /* */ $s = 53; case 53: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
$r = $clone(v, reflect.Value).Set($clone(_r$20, reflect.Value)); /* */ $s = 54; case 54: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 52:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.array }; } $f.$ptr = $ptr; $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$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;
};
decodeState.prototype.array = function(v) { return this.$val.array(v); };
decodeState.ptr.prototype.object = function(v) {
var $ptr, _1, _2, _3, _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$6, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _2 = $f._2; _3 = $f._3; _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$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; _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:
d = this;
_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; }
_tuple = _r$3;
u = _tuple[0];
ut = _tuple[1];
pv = _tuple[2];
/* */ if (!($interfaceIsEqual(u, $ifaceNil))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!($interfaceIsEqual(u, $ifaceNil))) { */ case 2:
d.off = d.off - (1) >> 0;
_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; }
_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; }
err = _r$5;
if (!($interfaceIsEqual(err, $ifaceNil))) {
d.error(err);
}
$s = -1; return;
/* } */ case 3:
/* */ if (!($interfaceIsEqual(ut, $ifaceNil))) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!($interfaceIsEqual(ut, $ifaceNil))) { */ case 6:
d.saveError(new UnmarshalTypeError.ptr("object", $clone(v, reflect.Value).Type(), (new $Int64(0, d.off)), "", ""));
d.off = d.off - (1) >> 0;
_r$6 = d.next(); /* */ $s = 8; case 8: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_r$6;
$s = -1; return;
/* } */ case 7:
v = pv;
if (!($clone(v, reflect.Value).Kind() === 20)) { _v = false; $s = 11; continue s; }
_r$7 = $clone(v, reflect.Value).NumMethod(); /* */ $s = 12; case 12: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_v = _r$7 === 0; case 11:
/* */ if (_v) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (_v) { */ case 9:
_r$8 = d.objectInterface(); /* */ $s = 13; case 13: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_r$9 = reflect.ValueOf(new mapType$1(_r$8)); /* */ $s = 14; case 14: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
$r = $clone(v, reflect.Value).Set($clone(_r$9, reflect.Value)); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } */ case 10:
_1 = $clone(v, reflect.Value).Kind();
/* */ if (_1 === (21)) { $s = 17; continue; }
/* */ if (_1 === (25)) { $s = 18; continue; }
/* */ $s = 19; continue;
/* if (_1 === (21)) { */ case 17:
t = $clone(v, reflect.Value).Type();
_r$10 = t.Key(); /* */ $s = 22; case 22: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
_r$11 = _r$10.Kind(); /* */ $s = 23; case 23: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
_2 = _r$11;
/* */ 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 = 24; continue; }
_r$12 = t.Key(); /* */ $s = 27; case 27: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
_r$13 = reflect.PtrTo(_r$12); /* */ $s = 28; case 28: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
_r$14 = _r$13.Implements(textUnmarshalerType); /* */ $s = 29; case 29: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
/* */ if (!_r$14) { $s = 25; continue; }
/* */ $s = 26; continue;
/* 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 24:
$s = 26; continue;
/* } else if (!_r$14) { */ case 25:
d.saveError(new UnmarshalTypeError.ptr("object", $clone(v, reflect.Value).Type(), (new $Int64(0, d.off)), "", ""));
d.off = d.off - (1) >> 0;
_r$15 = d.next(); /* */ $s = 30; case 30: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
_r$15;
$s = -1; return;
/* } */ case 26:
case 21:
/* */ if ($clone(v, reflect.Value).IsNil()) { $s = 31; continue; }
/* */ $s = 32; continue;
/* if ($clone(v, reflect.Value).IsNil()) { */ case 31:
_r$16 = reflect.MakeMap(t); /* */ $s = 33; case 33: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
$r = $clone(v, reflect.Value).Set($clone(_r$16, reflect.Value)); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 32:
$s = 20; continue;
/* } else if (_1 === (25)) { */ case 18:
$s = 20; continue;
/* } else { */ case 19:
d.saveError(new UnmarshalTypeError.ptr("object", $clone(v, reflect.Value).Type(), (new $Int64(0, d.off)), "", ""));
d.off = d.off - (1) >> 0;
_r$17 = d.next(); /* */ $s = 35; case 35: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
_r$17;
$s = -1; return;
/* } */ case 20:
case 16:
mapElem = new reflect.Value.ptr(ptrType$5.nil, 0, 0);
/* while (true) { */ case 36:
_r$18 = d.scanWhile(9); /* */ $s = 38; case 38: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
op = _r$18;
if (op === 5) {
/* break; */ $s = 37; continue;
}
if (!((op === 1))) {
d.error(errPhase);
}
start = d.off - 1 >> 0;
_r$19 = d.scanWhile(0); /* */ $s = 39; case 39: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
op = _r$19;
item = $subslice(d.data, start, (d.off - 1 >> 0));
_tuple$1 = unquoteBytes(item);
key = _tuple$1[0];
ok = _tuple$1[1];
if (!ok) {
d.error(errPhase);
}
subv = new reflect.Value.ptr(ptrType$5.nil, 0, 0);
destring = false;
/* */ if ($clone(v, reflect.Value).Kind() === 21) { $s = 40; continue; }
/* */ $s = 41; continue;
/* if ($clone(v, reflect.Value).Kind() === 21) { */ case 40:
_r$20 = $clone(v, reflect.Value).Type().Elem(); /* */ $s = 43; case 43: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
elemType = _r$20;
/* */ if (!$clone(mapElem, reflect.Value).IsValid()) { $s = 44; continue; }
/* */ $s = 45; continue;
/* if (!$clone(mapElem, reflect.Value).IsValid()) { */ case 44:
_r$21 = reflect.New(elemType); /* */ $s = 47; case 47: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
_r$22 = $clone(_r$21, reflect.Value).Elem(); /* */ $s = 48; case 48: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
mapElem = _r$22;
$s = 46; continue;
/* } else { */ case 45:
_r$23 = reflect.Zero(elemType); /* */ $s = 49; case 49: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
$r = $clone(mapElem, reflect.Value).Set($clone(_r$23, reflect.Value)); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 46:
subv = mapElem;
$s = 42; continue;
/* } else { */ case 41:
f = ptrType$6.nil;
_r$24 = cachedTypeFields($clone(v, reflect.Value).Type()); /* */ $s = 51; case 51: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
fields = _r$24;
_ref = fields;
_i = 0;
/* while (true) { */ case 52:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 53; continue; }
i = _i;
ff = ((i < 0 || i >= fields.$length) ? ($throwRuntimeError("index out of range"), undefined) : fields.$array[fields.$offset + i]);
if (bytes.Equal(ff.nameBytes, key)) {
f = ff;
/* break; */ $s = 53; continue;
}
if (!(f === ptrType$6.nil)) { _v$1 = false; $s = 56; continue s; }
_r$25 = ff.equalFold(ff.nameBytes, key); /* */ $s = 57; case 57: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
_v$1 = _r$25; case 56:
/* */ if (_v$1) { $s = 54; continue; }
/* */ $s = 55; continue;
/* if (_v$1) { */ case 54:
f = ff;
/* } */ case 55:
_i++;
/* } */ $s = 52; continue; case 53:
/* */ if (!(f === ptrType$6.nil)) { $s = 58; continue; }
/* */ $s = 59; continue;
/* if (!(f === ptrType$6.nil)) { */ case 58:
subv = v;
destring = f.quoted;
_ref$1 = f.index;
_i$1 = 0;
/* while (true) { */ case 60:
/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 61; continue; }
i$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
/* */ if ($clone(subv, reflect.Value).Kind() === 22) { $s = 62; continue; }
/* */ $s = 63; continue;
/* if ($clone(subv, reflect.Value).Kind() === 22) { */ case 62:
/* */ if ($clone(subv, reflect.Value).IsNil()) { $s = 64; continue; }
/* */ $s = 65; continue;
/* if ($clone(subv, reflect.Value).IsNil()) { */ case 64:
_r$26 = $clone(subv, reflect.Value).Type().Elem(); /* */ $s = 66; case 66: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
_r$27 = reflect.New(_r$26); /* */ $s = 67; case 67: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
$r = $clone(subv, reflect.Value).Set($clone(_r$27, reflect.Value)); /* */ $s = 68; case 68: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 65:
_r$28 = $clone(subv, reflect.Value).Elem(); /* */ $s = 69; case 69: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; }
subv = _r$28;
/* } */ case 63:
_r$29 = $clone(subv, reflect.Value).Field(i$1); /* */ $s = 70; case 70: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; }
subv = _r$29;
_i$1++;
/* } */ $s = 60; continue; case 61:
d.errorContext.Field = f.name;
_r$30 = $clone(v, reflect.Value).Type().Name(); /* */ $s = 71; case 71: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; }
d.errorContext.Struct = _r$30;
/* } */ case 59:
/* } */ case 42:
/* */ if (op === 9) { $s = 72; continue; }
/* */ $s = 73; continue;
/* if (op === 9) { */ case 72:
_r$31 = d.scanWhile(9); /* */ $s = 74; case 74: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; }
op = _r$31;
/* } */ case 73:
if (!((op === 3))) {
d.error(errPhase);
}
/* */ if (destring) { $s = 75; continue; }
/* */ $s = 76; continue;
/* if (destring) { */ case 75:
_r$32 = d.valueQuoted(); /* */ $s = 78; case 78: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; }
_ref$2 = _r$32;
/* */ if (_ref$2 === $ifaceNil) { $s = 79; continue; }
/* */ if ($assertType(_ref$2, $String, true)[1]) { $s = 80; continue; }
/* */ $s = 81; continue;
/* if (_ref$2 === $ifaceNil) { */ case 79:
qv = _ref$2;
$r = d.literalStore(nullLiteral, $clone(subv, reflect.Value), false); /* */ $s = 83; case 83: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 82; continue;
/* } else if ($assertType(_ref$2, $String, true)[1]) { */ case 80:
qv$1 = _ref$2.$val;
$r = d.literalStore((new sliceType$1($stringToBytes(qv$1))), $clone(subv, reflect.Value), true); /* */ $s = 84; case 84: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 82; continue;
/* } else { */ case 81:
qv$2 = _ref$2;
_r$33 = fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal unquoted value into %v", new sliceType([$clone(subv, reflect.Value).Type()])); /* */ $s = 85; case 85: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; }
$r = d.saveError(_r$33); /* */ $s = 86; case 86: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 82:
$s = 77; continue;
/* } else { */ case 76:
$r = d.value($clone(subv, reflect.Value)); /* */ $s = 87; case 87: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 77:
/* */ if ($clone(v, reflect.Value).Kind() === 21) { $s = 88; continue; }
/* */ $s = 89; continue;
/* if ($clone(v, reflect.Value).Kind() === 21) { */ case 88:
_r$34 = $clone(v, reflect.Value).Type().Key(); /* */ $s = 90; case 90: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; }
kt = _r$34;
kv = new reflect.Value.ptr(ptrType$5.nil, 0, 0);
_r$35 = kt.Kind(); /* */ $s = 96; case 96: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; }
/* */ if ((_r$35 === 24)) { $s = 92; continue; }
_r$36 = reflect.PtrTo(kt).Implements(textUnmarshalerType); /* */ $s = 97; case 97: if($c) { $c = false; _r$36 = _r$36.$blk(); } if (_r$36 && _r$36.$blk !== undefined) { break s; }
/* */ if (_r$36) { $s = 93; continue; }
/* */ $s = 94; continue;
/* if ((_r$35 === 24)) { */ case 92:
_r$37 = reflect.ValueOf(key); /* */ $s = 98; case 98: if($c) { $c = false; _r$37 = _r$37.$blk(); } if (_r$37 && _r$37.$blk !== undefined) { break s; }
_r$38 = $clone(_r$37, reflect.Value).Convert(kt); /* */ $s = 99; case 99: if($c) { $c = false; _r$38 = _r$38.$blk(); } if (_r$38 && _r$38.$blk !== undefined) { break s; }
kv = _r$38;
$s = 95; continue;
/* } else if (_r$36) { */ case 93:
_r$39 = $clone(v, reflect.Value).Type().Key(); /* */ $s = 100; case 100: if($c) { $c = false; _r$39 = _r$39.$blk(); } if (_r$39 && _r$39.$blk !== undefined) { break s; }
_r$40 = reflect.New(_r$39); /* */ $s = 101; case 101: if($c) { $c = false; _r$40 = _r$40.$blk(); } if (_r$40 && _r$40.$blk !== undefined) { break s; }
kv = _r$40;
$r = d.literalStore(item, $clone(kv, reflect.Value), true); /* */ $s = 102; case 102: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$41 = $clone(kv, reflect.Value).Elem(); /* */ $s = 103; case 103: if($c) { $c = false; _r$41 = _r$41.$blk(); } if (_r$41 && _r$41.$blk !== undefined) { break s; }
kv = _r$41;
$s = 95; continue;
/* } else { */ case 94:
_r$42 = kt.Kind(); /* */ $s = 105; case 105: if($c) { $c = false; _r$42 = _r$42.$blk(); } if (_r$42 && _r$42.$blk !== undefined) { break s; }
_3 = _r$42;
/* */ if ((_3 === (2)) || (_3 === (3)) || (_3 === (4)) || (_3 === (5)) || (_3 === (6))) { $s = 106; continue; }
/* */ if ((_3 === (7)) || (_3 === (8)) || (_3 === (9)) || (_3 === (10)) || (_3 === (11)) || (_3 === (12))) { $s = 107; continue; }
/* */ $s = 108; continue;
/* if ((_3 === (2)) || (_3 === (3)) || (_3 === (4)) || (_3 === (5)) || (_3 === (6))) { */ case 106:
s = ($bytesToString(key));
_tuple$2 = strconv.ParseInt(s, 10, 64);
n = _tuple$2[0];
err$1 = _tuple$2[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) { _v$2 = true; $s = 112; continue s; }
_r$43 = reflect.Zero(kt); /* */ $s = 113; case 113: if($c) { $c = false; _r$43 = _r$43.$blk(); } if (_r$43 && _r$43.$blk !== undefined) { break s; }
_r$44 = $clone(_r$43, reflect.Value).OverflowInt(n); /* */ $s = 114; case 114: if($c) { $c = false; _r$44 = _r$44.$blk(); } if (_r$44 && _r$44.$blk !== undefined) { break s; }
_v$2 = _r$44; case 112:
/* */ if (_v$2) { $s = 110; continue; }
/* */ $s = 111; continue;
/* if (_v$2) { */ case 110:
d.saveError(new UnmarshalTypeError.ptr("number " + s, kt, (new $Int64(0, (start + 1 >> 0))), "", ""));
$s = -1; return;
/* } */ case 111:
_r$45 = reflect.ValueOf(n); /* */ $s = 115; case 115: if($c) { $c = false; _r$45 = _r$45.$blk(); } if (_r$45 && _r$45.$blk !== undefined) { break s; }
_r$46 = $clone(_r$45, reflect.Value).Convert(kt); /* */ $s = 116; case 116: if($c) { $c = false; _r$46 = _r$46.$blk(); } if (_r$46 && _r$46.$blk !== undefined) { break s; }
kv = _r$46;
$s = 109; continue;
/* } else if ((_3 === (7)) || (_3 === (8)) || (_3 === (9)) || (_3 === (10)) || (_3 === (11)) || (_3 === (12))) { */ case 107:
s$1 = ($bytesToString(key));
_tuple$3 = strconv.ParseUint(s$1, 10, 64);
n$1 = _tuple$3[0];
err$2 = _tuple$3[1];
if (!($interfaceIsEqual(err$2, $ifaceNil))) { _v$3 = true; $s = 119; continue s; }
_r$47 = reflect.Zero(kt); /* */ $s = 120; case 120: if($c) { $c = false; _r$47 = _r$47.$blk(); } if (_r$47 && _r$47.$blk !== undefined) { break s; }
_r$48 = $clone(_r$47, reflect.Value).OverflowUint(n$1); /* */ $s = 121; case 121: if($c) { $c = false; _r$48 = _r$48.$blk(); } if (_r$48 && _r$48.$blk !== undefined) { break s; }
_v$3 = _r$48; case 119:
/* */ if (_v$3) { $s = 117; continue; }
/* */ $s = 118; continue;
/* if (_v$3) { */ case 117:
d.saveError(new UnmarshalTypeError.ptr("number " + s$1, kt, (new $Int64(0, (start + 1 >> 0))), "", ""));
$s = -1; return;
/* } */ case 118:
_r$49 = reflect.ValueOf(n$1); /* */ $s = 122; case 122: if($c) { $c = false; _r$49 = _r$49.$blk(); } if (_r$49 && _r$49.$blk !== undefined) { break s; }
_r$50 = $clone(_r$49, reflect.Value).Convert(kt); /* */ $s = 123; case 123: if($c) { $c = false; _r$50 = _r$50.$blk(); } if (_r$50 && _r$50.$blk !== undefined) { break s; }
kv = _r$50;
$s = 109; continue;
/* } else { */ case 108:
$panic(new $String("json: Unexpected key type"));
/* } */ case 109:
case 104:
/* } */ case 95:
case 91:
$r = $clone(v, reflect.Value).SetMapIndex($clone(kv, reflect.Value), $clone(subv, reflect.Value)); /* */ $s = 124; case 124: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 89:
_r$51 = d.scanWhile(9); /* */ $s = 125; case 125: if($c) { $c = false; _r$51 = _r$51.$blk(); } if (_r$51 && _r$51.$blk !== undefined) { break s; }
op = _r$51;
if (op === 5) {
/* break; */ $s = 37; continue;
}
if (!((op === 4))) {
d.error(errPhase);
}
d.errorContext.Struct = "";
d.errorContext.Field = "";
/* } */ $s = 36; continue; case 37:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.object }; } $f.$ptr = $ptr; $f._1 = _1; $f._2 = _2; $f._3 = _3; $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$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._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;
};
decodeState.prototype.object = function(v) { return this.$val.object(v); };
decodeState.ptr.prototype.literal = function(v) {
var $ptr, _r$3, d, op, start, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
d = this;
start = d.off - 1 >> 0;
_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; }
op = _r$3;
d.off = d.off - (1) >> 0;
d.scan.undo(op);
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.literal }; } $f.$ptr = $ptr; $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;
};
decodeState.prototype.literal = function(v) { return this.$val.literal(v); };
decodeState.ptr.prototype.convertNumber = function(s) {
var $ptr, _tuple, d, err, f, s;
d = this;
if (d.useNumber) {
return [new Number((s)), $ifaceNil];
}
_tuple = strconv.ParseFloat(s, 64);
f = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [$ifaceNil, new UnmarshalTypeError.ptr("number " + s, reflect.TypeOf(new $Float64(0)), (new $Int64(0, d.off)), "", "")];
}
return [new $Float64(f), $ifaceNil];
};
decodeState.prototype.convertNumber = function(s) { return this.$val.convertNumber(s); };
decodeState.ptr.prototype.literalStore = function(item, v, fromQuoted) {
var $ptr, _1, _2, _3, _4, _5, _6, _arg, _arg$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$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, 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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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; _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; 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:
d = this;
/* */ if (item.$length === 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (item.$length === 0) { */ case 1:
_r$3 = fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", new sliceType([item, $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; }
$r = d.saveError(_r$3); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } */ case 2:
isNull = (0 >= item.$length ? ($throwRuntimeError("index out of range"), undefined) : item.$array[item.$offset + 0]) === 110;
_r$4 = d.indirect($clone(v, reflect.Value), isNull); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_tuple = _r$4;
u = _tuple[0];
ut = _tuple[1];
pv = _tuple[2];
/* */ if (!($interfaceIsEqual(u, $ifaceNil))) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!($interfaceIsEqual(u, $ifaceNil))) { */ case 6:
_r$5 = u.UnmarshalJSON(item); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
err = _r$5;
if (!($interfaceIsEqual(err, $ifaceNil))) {
d.error(err);
}
$s = -1; return;
/* } */ case 7:
/* */ if (!($interfaceIsEqual(ut, $ifaceNil))) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (!($interfaceIsEqual(ut, $ifaceNil))) { */ case 9:
/* */ if (!(((0 >= item.$length ? ($throwRuntimeError("index out of range"), undefined) : item.$array[item.$offset + 0]) === 34))) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if (!(((0 >= item.$length ? ($throwRuntimeError("index out of range"), undefined) : item.$array[item.$offset + 0]) === 34))) { */ case 11:
/* */ if (fromQuoted) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (fromQuoted) { */ case 13:
_r$6 = fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", new sliceType([item, $clone(v, reflect.Value).Type()])); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
$r = d.saveError(_r$6); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 15; continue;
/* } else { */ case 14:
val = "";
_1 = (0 >= item.$length ? ($throwRuntimeError("index out of range"), undefined) : item.$array[item.$offset + 0]);
if (_1 === (110)) {
val = "null";
} else if ((_1 === (116)) || (_1 === (102))) {
val = "bool";
} else {
val = "number";
}
d.saveError(new UnmarshalTypeError.ptr(val, $clone(v, reflect.Value).Type(), (new $Int64(0, d.off)), "", ""));
/* } */ case 15:
$s = -1; return;
/* } */ case 12:
_tuple$1 = unquoteBytes(item);
s = _tuple$1[0];
ok = _tuple$1[1];
/* */ if (!ok) { $s = 18; continue; }
/* */ $s = 19; continue;
/* if (!ok) { */ case 18:
/* */ if (fromQuoted) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if (fromQuoted) { */ case 20:
_r$7 = fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", new sliceType([item, $clone(v, reflect.Value).Type()])); /* */ $s = 23; case 23: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
$r = d.error(_r$7); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 22; continue;
/* } else { */ case 21:
d.error(errPhase);
/* } */ case 22:
/* } */ case 19:
_r$8 = ut.UnmarshalText(s); /* */ $s = 25; case 25: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
err$1 = _r$8;
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
d.error(err$1);
}
$s = -1; return;
/* } */ case 10:
v = pv;
c = (0 >= item.$length ? ($throwRuntimeError("index out of range"), undefined) : item.$array[item.$offset + 0]);
_2 = c;
/* */ if (_2 === (110)) { $s = 27; continue; }
/* */ if ((_2 === (116)) || (_2 === (102))) { $s = 28; continue; }
/* */ if (_2 === (34)) { $s = 29; continue; }
/* */ $s = 30; continue;
/* if (_2 === (110)) { */ case 27:
/* */ if (fromQuoted && !(($bytesToString(item)) === "null")) { $s = 32; continue; }
/* */ $s = 33; continue;
/* if (fromQuoted && !(($bytesToString(item)) === "null")) { */ case 32:
_r$9 = fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", new sliceType([item, $clone(v, reflect.Value).Type()])); /* */ $s = 34; case 34: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
$r = d.saveError(_r$9); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* break; */ $s = 26; continue;
/* } */ case 33:
_3 = $clone(v, reflect.Value).Kind();
/* */ if ((_3 === (20)) || (_3 === (22)) || (_3 === (21)) || (_3 === (23))) { $s = 37; continue; }
/* */ $s = 38; continue;
/* if ((_3 === (20)) || (_3 === (22)) || (_3 === (21)) || (_3 === (23))) { */ case 37:
_r$10 = reflect.Zero($clone(v, reflect.Value).Type()); /* */ $s = 39; case 39: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
$r = $clone(v, reflect.Value).Set($clone(_r$10, reflect.Value)); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 38:
case 36:
$s = 31; continue;
/* } else if ((_2 === (116)) || (_2 === (102))) { */ case 28:
value = (0 >= item.$length ? ($throwRuntimeError("index out of range"), undefined) : item.$array[item.$offset + 0]) === 116;
/* */ if (fromQuoted && !(($bytesToString(item)) === "true") && !(($bytesToString(item)) === "false")) { $s = 41; continue; }
/* */ $s = 42; continue;
/* if (fromQuoted && !(($bytesToString(item)) === "true") && !(($bytesToString(item)) === "false")) { */ case 41:
_r$11 = fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", new sliceType([item, $clone(v, reflect.Value).Type()])); /* */ $s = 43; case 43: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
$r = d.saveError(_r$11); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* break; */ $s = 26; continue;
/* } */ case 42:
_4 = $clone(v, reflect.Value).Kind();
/* */ if (_4 === (1)) { $s = 46; continue; }
/* */ if (_4 === (20)) { $s = 47; continue; }
/* */ if (fromQuoted) { $s = 48; continue; }
/* */ $s = 49; continue;
/* if (_4 === (1)) { */ case 46:
$clone(v, reflect.Value).SetBool(value);
$s = 50; continue;
/* } else if (_4 === (20)) { */ case 47:
_r$12 = $clone(v, reflect.Value).NumMethod(); /* */ $s = 54; case 54: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
/* */ if (_r$12 === 0) { $s = 51; continue; }
/* */ $s = 52; continue;
/* if (_r$12 === 0) { */ case 51:
_r$13 = reflect.ValueOf(new $Bool(value)); /* */ $s = 55; case 55: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
$r = $clone(v, reflect.Value).Set($clone(_r$13, reflect.Value)); /* */ $s = 56; case 56: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 53; continue;
/* } else { */ case 52:
d.saveError(new UnmarshalTypeError.ptr("bool", $clone(v, reflect.Value).Type(), (new $Int64(0, d.off)), "", ""));
/* } */ case 53:
$s = 50; continue;
/* } else if (fromQuoted) { */ case 48:
_r$14 = fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", new sliceType([item, $clone(v, reflect.Value).Type()])); /* */ $s = 57; case 57: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
$r = d.saveError(_r$14); /* */ $s = 58; case 58: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 50; continue;
/* } else { */ case 49:
d.saveError(new UnmarshalTypeError.ptr("bool", $clone(v, reflect.Value).Type(), (new $Int64(0, d.off)), "", ""));
/* } */ case 50:
case 45:
$s = 31; continue;
/* } else if (_2 === (34)) { */ case 29:
_tuple$2 = unquoteBytes(item);
s$1 = _tuple$2[0];
ok$1 = _tuple$2[1];
/* */ if (!ok$1) { $s = 59; continue; }
/* */ $s = 60; continue;
/* if (!ok$1) { */ case 59:
/* */ if (fromQuoted) { $s = 61; continue; }
/* */ $s = 62; continue;
/* if (fromQuoted) { */ case 61:
_r$15 = fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", new sliceType([item, $clone(v, reflect.Value).Type()])); /* */ $s = 64; case 64: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
$r = d.error(_r$15); /* */ $s = 65; case 65: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 63; continue;
/* } else { */ case 62:
d.error(errPhase);
/* } */ case 63:
/* } */ case 60:
_5 = $clone(v, reflect.Value).Kind();
/* */ if (_5 === (23)) { $s = 67; continue; }
/* */ if (_5 === (24)) { $s = 68; continue; }
/* */ if (_5 === (20)) { $s = 69; continue; }
/* */ $s = 70; continue;
/* if (_5 === (23)) { */ case 67:
_r$16 = $clone(v, reflect.Value).Type().Elem(); /* */ $s = 74; case 74: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
_r$17 = _r$16.Kind(); /* */ $s = 75; case 75: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
/* */ if (!((_r$17 === 8))) { $s = 72; continue; }
/* */ $s = 73; continue;
/* if (!((_r$17 === 8))) { */ case 72:
d.saveError(new UnmarshalTypeError.ptr("string", $clone(v, reflect.Value).Type(), (new $Int64(0, d.off)), "", ""));
/* break; */ $s = 66; continue;
/* } */ case 73:
b = $makeSlice(sliceType$1, base64.StdEncoding.DecodedLen(s$1.$length));
_tuple$3 = base64.StdEncoding.Decode(b, s$1);
n = _tuple$3[0];
err$2 = _tuple$3[1];
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
d.saveError(err$2);
/* break; */ $s = 66; continue;
}
$r = $clone(v, reflect.Value).SetBytes($subslice(b, 0, n)); /* */ $s = 76; case 76: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 71; continue;
/* } else if (_5 === (24)) { */ case 68:
$clone(v, reflect.Value).SetString(($bytesToString(s$1)));
$s = 71; continue;
/* } else if (_5 === (20)) { */ case 69:
_r$18 = $clone(v, reflect.Value).NumMethod(); /* */ $s = 80; case 80: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
/* */ if (_r$18 === 0) { $s = 77; continue; }
/* */ $s = 78; continue;
/* if (_r$18 === 0) { */ case 77:
_r$19 = reflect.ValueOf(new $String(($bytesToString(s$1)))); /* */ $s = 81; case 81: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
$r = $clone(v, reflect.Value).Set($clone(_r$19, reflect.Value)); /* */ $s = 82; case 82: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 79; continue;
/* } else { */ case 78:
d.saveError(new UnmarshalTypeError.ptr("string", $clone(v, reflect.Value).Type(), (new $Int64(0, d.off)), "", ""));
/* } */ case 79:
$s = 71; continue;
/* } else { */ case 70:
d.saveError(new UnmarshalTypeError.ptr("string", $clone(v, reflect.Value).Type(), (new $Int64(0, d.off)), "", ""));
/* } */ case 71:
case 66:
$s = 31; continue;
/* } else { */ case 30:
/* */ if (!((c === 45)) && (c < 48 || c > 57)) { $s = 83; continue; }
/* */ $s = 84; continue;
/* if (!((c === 45)) && (c < 48 || c > 57)) { */ case 83:
/* */ if (fromQuoted) { $s = 85; continue; }
/* */ $s = 86; continue;
/* if (fromQuoted) { */ case 85:
_r$20 = fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", new sliceType([item, $clone(v, reflect.Value).Type()])); /* */ $s = 88; case 88: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
$r = d.error(_r$20); /* */ $s = 89; case 89: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 87; continue;
/* } else { */ case 86:
d.error(errPhase);
/* } */ case 87:
/* } */ case 84:
s$2 = ($bytesToString(item));
_6 = $clone(v, reflect.Value).Kind();
/* */ if (_6 === (20)) { $s = 91; continue; }
/* */ if ((_6 === (2)) || (_6 === (3)) || (_6 === (4)) || (_6 === (5)) || (_6 === (6))) { $s = 92; continue; }
/* */ if ((_6 === (7)) || (_6 === (8)) || (_6 === (9)) || (_6 === (10)) || (_6 === (11)) || (_6 === (12))) { $s = 93; continue; }
/* */ if ((_6 === (13)) || (_6 === (14))) { $s = 94; continue; }
/* */ $s = 95; continue;
/* if (_6 === (20)) { */ case 91:
_tuple$4 = d.convertNumber(s$2);
n$1 = _tuple$4[0];
err$3 = _tuple$4[1];
if (!($interfaceIsEqual(err$3, $ifaceNil))) {
d.saveError(err$3);
/* break; */ $s = 90; continue;
}
_r$21 = $clone(v, reflect.Value).NumMethod(); /* */ $s = 99; case 99: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
/* */ if (!((_r$21 === 0))) { $s = 97; continue; }
/* */ $s = 98; continue;
/* if (!((_r$21 === 0))) { */ case 97:
d.saveError(new UnmarshalTypeError.ptr("number", $clone(v, reflect.Value).Type(), (new $Int64(0, d.off)), "", ""));
/* break; */ $s = 90; continue;
/* } */ case 98:
_r$22 = reflect.ValueOf(n$1); /* */ $s = 100; case 100: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
$r = $clone(v, reflect.Value).Set($clone(_r$22, reflect.Value)); /* */ $s = 101; case 101: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 96; continue;
/* } else if ((_6 === (2)) || (_6 === (3)) || (_6 === (4)) || (_6 === (5)) || (_6 === (6))) { */ case 92:
_tuple$5 = strconv.ParseInt(s$2, 10, 64);
n$2 = _tuple$5[0];
err$4 = _tuple$5[1];
if (!($interfaceIsEqual(err$4, $ifaceNil)) || $clone(v, reflect.Value).OverflowInt(n$2)) {
d.saveError(new UnmarshalTypeError.ptr("number " + s$2, $clone(v, reflect.Value).Type(), (new $Int64(0, d.off)), "", ""));
/* break; */ $s = 90; continue;
}
$clone(v, reflect.Value).SetInt(n$2);
$s = 96; continue;
/* } else if ((_6 === (7)) || (_6 === (8)) || (_6 === (9)) || (_6 === (10)) || (_6 === (11)) || (_6 === (12))) { */ case 93:
_tuple$6 = strconv.ParseUint(s$2, 10, 64);
n$3 = _tuple$6[0];
err$5 = _tuple$6[1];
if (!($interfaceIsEqual(err$5, $ifaceNil)) || $clone(v, reflect.Value).OverflowUint(n$3)) {
d.saveError(new UnmarshalTypeError.ptr("number " + s$2, $clone(v, reflect.Value).Type(), (new $Int64(0, d.off)), "", ""));
/* break; */ $s = 90; continue;
}
$clone(v, reflect.Value).SetUint(n$3);
$s = 96; continue;
/* } else if ((_6 === (13)) || (_6 === (14))) { */ case 94:
_arg = s$2;
_r$23 = $clone(v, reflect.Value).Type().Bits(); /* */ $s = 102; case 102: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
_arg$1 = _r$23;
_r$24 = strconv.ParseFloat(_arg, _arg$1); /* */ $s = 103; case 103: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
_tuple$7 = _r$24;
n$4 = _tuple$7[0];
err$6 = _tuple$7[1];
if (!($interfaceIsEqual(err$6, $ifaceNil)) || $clone(v, reflect.Value).OverflowFloat(n$4)) {
d.saveError(new UnmarshalTypeError.ptr("number " + s$2, $clone(v, reflect.Value).Type(), (new $Int64(0, d.off)), "", ""));
/* break; */ $s = 90; continue;
}
$clone(v, reflect.Value).SetFloat(n$4);
$s = 96; continue;
/* } else { */ case 95:
/* */ if (($clone(v, reflect.Value).Kind() === 24) && $interfaceIsEqual($clone(v, reflect.Value).Type(), numberType)) { $s = 104; continue; }
/* */ $s = 105; continue;
/* if (($clone(v, reflect.Value).Kind() === 24) && $interfaceIsEqual($clone(v, reflect.Value).Type(), numberType)) { */ case 104:
$clone(v, reflect.Value).SetString(s$2);
/* */ if (!isValidNumber(s$2)) { $s = 106; continue; }
/* */ $s = 107; continue;
/* if (!isValidNumber(s$2)) { */ case 106:
_r$25 = fmt.Errorf("json: invalid number literal, trying to unmarshal %q into Number", new sliceType([item])); /* */ $s = 108; case 108: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
$r = d.error(_r$25); /* */ $s = 109; case 109: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 107:
/* break; */ $s = 90; continue;
/* } */ case 105:
/* */ if (fromQuoted) { $s = 110; continue; }
/* */ $s = 111; continue;
/* if (fromQuoted) { */ case 110:
_r$26 = fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", new sliceType([item, $clone(v, reflect.Value).Type()])); /* */ $s = 113; case 113: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
$r = d.error(_r$26); /* */ $s = 114; case 114: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 112; continue;
/* } else { */ case 111:
d.error(new UnmarshalTypeError.ptr("number", $clone(v, reflect.Value).Type(), (new $Int64(0, d.off)), "", ""));
/* } */ case 112:
/* } */ case 96:
case 90:
/* } */ case 31:
case 26:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.literalStore }; } $f.$ptr = $ptr; $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._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._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.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;
};
decodeState.prototype.literalStore = function(item, v, fromQuoted) { return this.$val.literalStore(item, v, fromQuoted); };
decodeState.ptr.prototype.valueInterface = function() {
var $ptr, _1, _r$3, _r$4, _r$5, _r$6, d, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
d = this;
_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; }
_1 = _r$3;
/* */ if (_1 === (6)) { $s = 3; continue; }
/* */ if (_1 === (2)) { $s = 4; continue; }
/* */ if (_1 === (1)) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (_1 === (6)) { */ case 3:
_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; }
$s = -1; return _r$4;
/* } else if (_1 === (2)) { */ case 4:
_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; }
$s = -1; return new mapType$1(_r$5);
/* } else if (_1 === (1)) { */ case 5:
_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; }
$s = -1; return _r$6;
/* } else { */ case 6:
d.error(errPhase);
$panic(new $String("unreachable"));
/* } */ case 7:
case 1:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.valueInterface }; } $f.$ptr = $ptr; $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;
};
decodeState.prototype.valueInterface = function() { return this.$val.valueInterface(); };
decodeState.ptr.prototype.arrayInterface = function() {
var $ptr, _r$3, _r$4, _r$5, d, op, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
d = this;
v = $makeSlice(sliceType, 0);
/* while (true) { */ case 1:
_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; }
op = _r$3;
if (op === 8) {
/* break; */ $s = 2; continue;
}
d.off = d.off - (1) >> 0;
d.scan.undo(op);
_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; }
v = $append(v, _r$4);
_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; }
op = _r$5;
if (op === 8) {
/* break; */ $s = 2; continue;
}
if (!((op === 7))) {
d.error(errPhase);
}
/* } */ $s = 1; continue; case 2:
$s = -1; return v;
/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.arrayInterface }; } $f.$ptr = $ptr; $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;
};
decodeState.prototype.arrayInterface = function() { return this.$val.arrayInterface(); };
decodeState.ptr.prototype.objectInterface = function() {
var $ptr, _key, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, d, item, key, m, ok, op, start, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
d = this;
m = {};
/* while (true) { */ case 1:
_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; }
op = _r$3;
if (op === 5) {
/* break; */ $s = 2; continue;
}
if (!((op === 1))) {
d.error(errPhase);
}
start = d.off - 1 >> 0;
_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; }
op = _r$4;
item = $subslice(d.data, start, (d.off - 1 >> 0));
_tuple = unquote(item);
key = _tuple[0];
ok = _tuple[1];
if (!ok) {
d.error(errPhase);
}
/* */ if (op === 9) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (op === 9) { */ case 5:
_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; }
op = _r$5;
/* } */ case 6:
if (!((op === 3))) {
d.error(errPhase);
}
_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; }
_key = key; (m || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: _r$6 };
_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; }
op = _r$7;
if (op === 5) {
/* break; */ $s = 2; continue;
}
if (!((op === 4))) {
d.error(errPhase);
}
/* } */ $s = 1; continue; case 2:
$s = -1; return m;
/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.objectInterface }; } $f.$ptr = $ptr; $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;
};
decodeState.prototype.objectInterface = function() { return this.$val.objectInterface(); };
decodeState.ptr.prototype.literalInterface = function() {
var $ptr, _1, _r$3, _tuple, _tuple$1, c, d, err, item, n, ok, op, s, start, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
d = this;
start = d.off - 1 >> 0;
_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; }
op = _r$3;
d.off = d.off - (1) >> 0;
d.scan.undo(op);
item = $subslice(d.data, start, d.off);
c = (0 >= item.$length ? ($throwRuntimeError("index out of range"), undefined) : item.$array[item.$offset + 0]);
_1 = c;
if (_1 === (110)) {
$s = -1; return $ifaceNil;
} else if ((_1 === (116)) || (_1 === (102))) {
$s = -1; return new $Bool((c === 116));
} else if (_1 === (34)) {
_tuple = unquote(item);
s = _tuple[0];
ok = _tuple[1];
if (!ok) {
d.error(errPhase);
}
$s = -1; return new $String(s);
} else {
if (!((c === 45)) && (c < 48 || c > 57)) {
d.error(errPhase);
}
_tuple$1 = d.convertNumber(($bytesToString(item)));
n = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
d.saveError(err);
}
$s = -1; return n;
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.literalInterface }; } $f.$ptr = $ptr; $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;
};
decodeState.prototype.literalInterface = function() { return this.$val.literalInterface(); };
getu4 = function(s) {
var $ptr, _tuple, err, r, s;
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))) {
return -1;
}
_tuple = strconv.ParseUint(($bytesToString($subslice(s, 2, 6))), 16, 64);
r = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return -1;
}
return ((r.$low >> 0));
};
unquote = function(s) {
var $ptr, _tuple, ok, s, t;
t = "";
ok = false;
_tuple = unquoteBytes(s);
s = _tuple[0];
ok = _tuple[1];
t = ($bytesToString(s));
return [t, ok];
};
unquoteBytes = function(s) {
var $ptr, _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;
t = sliceType$1.nil;
ok = false;
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))) {
return [t, ok];
}
s = $subslice(s, 1, (s.$length - 1 >> 0));
r = 0;
while (true) {
if (!(r < s.$length)) { break; }
c = ((r < 0 || r >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + r]);
if ((c === 92) || (c === 34) || c < 32) {
break;
}
if (c < 128) {
r = r + (1) >> 0;
continue;
}
_tuple = utf8.DecodeRune($subslice(s, r));
rr = _tuple[0];
size = _tuple[1];
if ((rr === 65533) && (size === 1)) {
break;
}
r = r + (size) >> 0;
}
if (r === s.$length) {
_tmp = s;
_tmp$1 = true;
t = _tmp;
ok = _tmp$1;
return [t, ok];
}
b = $makeSlice(sliceType$1, (s.$length + 8 >> 0));
w = $copySlice(b, $subslice(s, 0, r));
while (true) {
if (!(r < s.$length)) { break; }
if (w >= (b.$length - 8 >> 0)) {
nb = $makeSlice(sliceType$1, ($imul(((b.$length + 4 >> 0)), 2)));
$copySlice(nb, $subslice(b, 0, w));
b = nb;
}
c$1 = ((r < 0 || r >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + r]);
if ((c$1 === 92)) {
r = r + (1) >> 0;
if (r >= s.$length) {
return [t, ok];
}
switch (0) { default:
_1 = ((r < 0 || r >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + r]);
if ((_1 === (34)) || (_1 === (92)) || (_1 === (47)) || (_1 === (39))) {
((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]));
r = r + (1) >> 0;
w = w + (1) >> 0;
} else if (_1 === (98)) {
((w < 0 || w >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + w] = 8);
r = r + (1) >> 0;
w = w + (1) >> 0;
} else if (_1 === (102)) {
((w < 0 || w >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + w] = 12);
r = r + (1) >> 0;
w = w + (1) >> 0;
} else if (_1 === (110)) {
((w < 0 || w >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + w] = 10);
r = r + (1) >> 0;
w = w + (1) >> 0;
} else if (_1 === (114)) {
((w < 0 || w >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + w] = 13);
r = r + (1) >> 0;
w = w + (1) >> 0;
} else if (_1 === (116)) {
((w < 0 || w >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + w] = 9);
r = r + (1) >> 0;
w = w + (1) >> 0;
} else if (_1 === (117)) {
r = r - (1) >> 0;
rr$1 = getu4($subslice(s, r));
if (rr$1 < 0) {
return [t, ok];
}
r = r + (6) >> 0;
if (utf16.IsSurrogate(rr$1)) {
rr1 = getu4($subslice(s, r));
dec = utf16.DecodeRune(rr$1, rr1);
if (!((dec === 65533))) {
r = r + (6) >> 0;
w = w + (utf8.EncodeRune($subslice(b, w), dec)) >> 0;
break;
}
rr$1 = 65533;
}
w = w + (utf8.EncodeRune($subslice(b, w), rr$1)) >> 0;
} else {
return [t, ok];
}
}
} else if (((c$1 === 34)) || (c$1 < 32)) {
return [t, ok];
} else if (c$1 < 128) {
((w < 0 || w >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + w] = c$1);
r = r + (1) >> 0;
w = w + (1) >> 0;
} else {
_tuple$1 = utf8.DecodeRune($subslice(s, r));
rr$2 = _tuple$1[0];
size$1 = _tuple$1[1];
r = r + (size$1) >> 0;
w = w + (utf8.EncodeRune($subslice(b, w), rr$2)) >> 0;
}
}
_tmp$2 = $subslice(b, 0, w);
_tmp$3 = true;
t = _tmp$2;
ok = _tmp$3;
return [t, ok];
};
isValidTag = function(s) {
var $ptr, _i, _ref, _rune, c, s;
if (s === "") {
return false;
}
_ref = s;
_i = 0;
while (true) {
if (!(_i < _ref.length)) { break; }
_rune = $decodeRune(_ref, _i);
c = _rune[0];
if (strings.ContainsRune("!#$%&()*+-./:<=>?@[]^_{|}~ ", c)) {
} else if (!unicode.IsLetter(c) && !unicode.IsDigit(c)) {
return false;
}
_i += _rune[1];
}
return true;
};
fillField = function(f) {
var $ptr, f;
f.nameBytes = (new sliceType$1($stringToBytes(f.name)));
f.equalFold = foldFunc(f.nameBytes);
return f;
};
byIndex.prototype.Len = function() {
var $ptr, x;
x = this;
return x.$length;
};
$ptrType(byIndex).prototype.Len = function() { return this.$get().Len(); };
byIndex.prototype.Swap = function(i, j) {
var $ptr, _tmp, _tmp$1, i, j, x;
x = this;
_tmp = $clone(((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j]), field);
_tmp$1 = $clone(((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]), field);
field.copy(((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]), _tmp);
field.copy(((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j]), _tmp$1);
};
$ptrType(byIndex).prototype.Swap = function(i, j) { return this.$get().Swap(i, j); };
byIndex.prototype.Less = function(i, j) {
var $ptr, _i, _ref, i, j, k, x, x$1, x$2, xik;
x = this;
_ref = ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]).index;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
k = _i;
xik = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (k >= ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j]).index.$length) {
return false;
}
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]))))) {
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]));
}
_i++;
}
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;
};
$ptrType(byIndex).prototype.Less = function(i, j) { return this.$get().Less(i, j); };
typeFields = function(t) {
var $ptr, _1, _entry, _entry$1, _entry$2, _entry$3, _i, _key, _key$1, _r$10, _r$11, _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, advance, count, current, dominant, f, fi, fields, fj, ft, i, i$1, index, name, name$1, next, nextCount, ok, opts, out, quoted, sf, t, tag, tagged, visited, x, x$1, x$2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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$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; 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; 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; 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:
fields = [fields];
current = new sliceType$3([]);
next = new sliceType$3([new field.ptr("", sliceType$1.nil, $throwNilPointerError, false, sliceType$2.nil, t, false, false)]);
count = $makeMap(reflect.Type.keyFor, []);
nextCount = $makeMap(reflect.Type.keyFor, []);
visited = $makeMap(reflect.Type.keyFor, []);
fields[0] = sliceType$3.nil;
/* while (true) { */ case 1:
/* if (!(next.$length > 0)) { break; } */ if(!(next.$length > 0)) { $s = 2; continue; }
_tmp = next;
_tmp$1 = $subslice(current, 0, 0);
current = _tmp;
next = _tmp$1;
_tmp$2 = nextCount;
_tmp$3 = $makeMap(reflect.Type.keyFor, []);
count = _tmp$2;
nextCount = _tmp$3;
_ref = current;
_i = 0;
/* while (true) { */ case 3:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; }
f = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), field);
/* */ if ((_entry = visited[reflect.Type.keyFor(f.typ)], _entry !== undefined ? _entry.v : false)) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if ((_entry = visited[reflect.Type.keyFor(f.typ)], _entry !== undefined ? _entry.v : false)) { */ case 5:
_i++;
/* continue; */ $s = 3; continue;
/* } */ case 6:
_key = f.typ; (visited || $throwRuntimeError("assignment to entry in nil map"))[reflect.Type.keyFor(_key)] = { k: _key, v: true };
i = 0;
/* while (true) { */ case 7:
_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; }
/* if (!(i < _r$3)) { break; } */ if(!(i < _r$3)) { $s = 8; continue; }
_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; }
sf = $clone(_r$4, reflect.StructField);
/* */ if (!(sf.PkgPath === "") && !sf.Anonymous) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if (!(sf.PkgPath === "") && !sf.Anonymous) { */ case 11:
i = i + (1) >> 0;
/* continue; */ $s = 7; continue;
/* } */ case 12:
tag = new reflect.StructTag(sf.Tag).Get("json");
/* */ if (tag === "-") { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (tag === "-") { */ case 13:
i = i + (1) >> 0;
/* continue; */ $s = 7; continue;
/* } */ case 14:
_tuple = parseTag(tag);
name = _tuple[0];
opts = _tuple[1];
if (!isValidTag(name)) {
name = "";
}
index = $makeSlice(sliceType$2, (f.index.$length + 1 >> 0));
$copySlice(index, f.index);
(x = f.index.$length, ((x < 0 || x >= index.$length) ? ($throwRuntimeError("index out of range"), undefined) : index.$array[index.$offset + x] = i));
ft = sf.Type;
_r$5 = ft.Name(); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
if (!(_r$5 === "")) { _v = false; $s = 17; continue s; }
_r$6 = ft.Kind(); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_v = _r$6 === 22; case 17:
/* */ if (_v) { $s = 15; continue; }
/* */ $s = 16; continue;
/* if (_v) { */ case 15:
_r$7 = ft.Elem(); /* */ $s = 20; case 20: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
ft = _r$7;
/* } */ case 16:
quoted = false;
/* */ if (new tagOptions(opts).Contains("string")) { $s = 21; continue; }
/* */ $s = 22; continue;
/* if (new tagOptions(opts).Contains("string")) { */ case 21:
_r$8 = ft.Kind(); /* */ $s = 24; case 24: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_1 = _r$8;
if ((_1 === (1)) || (_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6)) || (_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (13)) || (_1 === (14)) || (_1 === (24))) {
quoted = true;
}
case 23:
/* } */ case 22:
if (!(name === "") || !sf.Anonymous) { _v$1 = true; $s = 27; continue s; }
_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; }
_v$1 = !((_r$9 === 25)); case 27:
/* */ if (_v$1) { $s = 25; continue; }
/* */ $s = 26; continue;
/* if (_v$1) { */ case 25:
tagged = !(name === "");
if (name === "") {
name = sf.Name;
}
fields[0] = $append(fields[0], fillField(new field.ptr(name, sliceType$1.nil, $throwNilPointerError, tagged, index, ft, new tagOptions(opts).Contains("omitempty"), quoted)));
if ((_entry$1 = count[reflect.Type.keyFor(f.typ)], _entry$1 !== undefined ? _entry$1.v : 0) > 1) {
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])));
}
i = i + (1) >> 0;
/* continue; */ $s = 7; continue;
/* } */ case 26:
_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 };
/* */ if ((_entry$3 = nextCount[reflect.Type.keyFor(ft)], _entry$3 !== undefined ? _entry$3.v : 0) === 1) { $s = 29; continue; }
/* */ $s = 30; continue;
/* if ((_entry$3 = nextCount[reflect.Type.keyFor(ft)], _entry$3 !== undefined ? _entry$3.v : 0) === 1) { */ case 29:
_r$10 = ft.Name(); /* */ $s = 31; case 31: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
_r$11 = fillField(new field.ptr(_r$10, sliceType$1.nil, $throwNilPointerError, false, index, ft, false, false)); /* */ $s = 32; case 32: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
next = $append(next, _r$11);
/* } */ case 30:
i = i + (1) >> 0;
/* } */ $s = 7; continue; case 8:
_i++;
/* } */ $s = 3; continue; case 4:
/* } */ $s = 1; continue; case 2:
$r = sort.Slice(fields[0], (function(fields) { return function(i$1, j) {
var $ptr, i$1, j, x$2;
x$2 = fields[0];
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)) {
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;
}
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))) {
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;
}
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)) {
return ((i$1 < 0 || i$1 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i$1]).tag;
}
return ($subslice(new byIndex(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length)).Less(i$1, j);
}; })(fields)); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
out = $subslice(fields[0], 0, 0);
_tmp$4 = 0;
_tmp$5 = 0;
advance = _tmp$4;
i$1 = _tmp$5;
/* while (true) { */ case 34:
/* if (!(i$1 < fields[0].$length)) { break; } */ if(!(i$1 < fields[0].$length)) { $s = 35; continue; }
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);
name$1 = fi.name;
advance = 1;
while (true) {
if (!((i$1 + advance >> 0) < fields[0].$length)) { break; }
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);
if (!(fj.name === name$1)) {
break;
}
advance = advance + (1) >> 0;
}
if (advance === 1) {
out = $append(out, fi);
i$1 = i$1 + (advance) >> 0;
/* continue; */ $s = 34; continue;
}
_tuple$1 = dominantField($subslice(fields[0], i$1, (i$1 + advance >> 0)));
dominant = $clone(_tuple$1[0], field);
ok = _tuple$1[1];
if (ok) {
out = $append(out, dominant);
}
i$1 = i$1 + (advance) >> 0;
/* } */ $s = 34; continue; case 35:
fields[0] = out;
$r = sort.Sort(($subslice(new byIndex(fields[0].$array), fields[0].$offset, fields[0].$offset + fields[0].$length))); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return fields[0];
/* */ } return; } if ($f === undefined) { $f = { $blk: typeFields }; } $f.$ptr = $ptr; $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$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.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.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.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;
};
dominantField = function(fields) {
var $ptr, _i, _ref, f, fields, i, length, tagged;
length = (0 >= fields.$length ? ($throwRuntimeError("index out of range"), undefined) : fields.$array[fields.$offset + 0]).index.$length;
tagged = -1;
_ref = fields;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
f = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), field);
if (f.index.$length > length) {
fields = $subslice(fields, 0, i);
break;
}
if (f.tag) {
if (tagged >= 0) {
return [new field.ptr("", sliceType$1.nil, $throwNilPointerError, false, sliceType$2.nil, $ifaceNil, false, false), false];
}
tagged = i;
}
_i++;
}
if (tagged >= 0) {
return [((tagged < 0 || tagged >= fields.$length) ? ($throwRuntimeError("index out of range"), undefined) : fields.$array[fields.$offset + tagged]), true];
}
if (fields.$length > 1) {
return [new field.ptr("", sliceType$1.nil, $throwNilPointerError, false, sliceType$2.nil, $ifaceNil, false, false), false];
}
return [(0 >= fields.$length ? ($throwRuntimeError("index out of range"), undefined) : fields.$array[fields.$offset + 0]), true];
};
cachedTypeFields = function(t) {
var $ptr, _entry, _entry$1, _i, _key, _key$1, _keys, _r$3, _ref, _tuple, _tuple$1, f, k, m, newM, t, v, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_tuple = $assertType(fieldCache.value.Load(), mapType$2, true);
m = _tuple[0];
f = (_entry = m[reflect.Type.keyFor(t)], _entry !== undefined ? _entry.v : sliceType$3.nil);
if (!(f === sliceType$3.nil)) {
$s = -1; return f;
}
_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; }
f = _r$3;
if (f === sliceType$3.nil) {
f = new sliceType$3([]);
}
fieldCache.mu.Lock();
_tuple$1 = $assertType(fieldCache.value.Load(), mapType$2, true);
m = _tuple$1[0];
newM = (x = $keys(m).length + 1 >> 0, ((x < 0 || x > 2147483647) ? $throwRuntimeError("makemap: size out of range") : {}));
_ref = m;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry$1 = _ref[_keys[_i]];
if (_entry$1 === undefined) {
_i++;
continue;
}
k = _entry$1.k;
v = _entry$1.v;
_key = k; (newM || $throwRuntimeError("assignment to entry in nil map"))[reflect.Type.keyFor(_key)] = { k: _key, v: v };
_i++;
}
_key$1 = t; (newM || $throwRuntimeError("assignment to entry in nil map"))[reflect.Type.keyFor(_key$1)] = { k: _key$1, v: f };
fieldCache.value.Store(new mapType$2(newM));
fieldCache.mu.Unlock();
$s = -1; return f;
/* */ } return; } if ($f === undefined) { $f = { $blk: cachedTypeFields }; } $f.$ptr = $ptr; $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;
};
foldFunc = function(s) {
var $ptr, _i, _ref, b, nonLetter, s, special, upper;
nonLetter = false;
special = false;
_ref = s;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (b >= 128) {
return bytes.EqualFold;
}
upper = (b & 223) >>> 0;
if (upper < 65 || upper > 90) {
nonLetter = true;
} else if ((upper === 75) || (upper === 83)) {
special = true;
}
_i++;
}
if (special) {
return equalFoldRight;
}
if (nonLetter) {
return asciiEqualFold;
}
return simpleLetterEqualFold;
};
equalFoldRight = function(s, t) {
var $ptr, _1, _i, _ref, _tuple, s, sb, sbUpper, size, t, tb, tr;
_ref = s;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
sb = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (t.$length === 0) {
return false;
}
tb = (0 >= t.$length ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + 0]);
if (tb < 128) {
if (!((sb === tb))) {
sbUpper = (sb & 223) >>> 0;
if (65 <= sbUpper && sbUpper <= 90) {
if (!((sbUpper === ((tb & 223) >>> 0)))) {
return false;
}
} else {
return false;
}
}
t = $subslice(t, 1);
_i++;
continue;
}
_tuple = utf8.DecodeRune(t);
tr = _tuple[0];
size = _tuple[1];
_1 = sb;
if ((_1 === (115)) || (_1 === (83))) {
if (!((tr === 383))) {
return false;
}
} else if ((_1 === (107)) || (_1 === (75))) {
if (!((tr === 8490))) {
return false;
}
} else {
return false;
}
t = $subslice(t, size);
_i++;
}
if (t.$length > 0) {
return false;
}
return true;
};
asciiEqualFold = function(s, t) {
var $ptr, _i, _ref, i, s, sb, t, tb;
if (!((s.$length === t.$length))) {
return false;
}
_ref = s;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
sb = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
tb = ((i < 0 || i >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + i]);
if (sb === tb) {
_i++;
continue;
}
if ((97 <= sb && sb <= 122) || (65 <= sb && sb <= 90)) {
if (!((((sb & 223) >>> 0) === ((tb & 223) >>> 0)))) {
return false;
}
} else {
return false;
}
_i++;
}
return true;
};
simpleLetterEqualFold = function(s, t) {
var $ptr, _i, _ref, b, i, s, t;
if (!((s.$length === t.$length))) {
return false;
}
_ref = s;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (!((((b & 223) >>> 0) === ((((i < 0 || i >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + i]) & 223) >>> 0)))) {
return false;
}
_i++;
}
return true;
};
nextValue = function(data, scan) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
value = sliceType$1.nil;
rest = sliceType$1.nil;
err = $ifaceNil;
scan.reset();
_ref = data;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
i = _i;
c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_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; }
v = _r$3;
/* */ if (v >= 5) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (v >= 5) { */ case 4:
_1 = v;
/* */ if ((_1 === (5)) || (_1 === (8))) { $s = 7; continue; }
/* */ if (_1 === (11)) { $s = 8; continue; }
/* */ if (_1 === (10)) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if ((_1 === (5)) || (_1 === (8))) { */ case 7:
_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; }
/* */ if (_r$4 === 10) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if (_r$4 === 10) { */ case 11:
_tmp = $subslice(data, 0, (i + 1 >> 0));
_tmp$1 = $subslice(data, (i + 1 >> 0));
_tmp$2 = $ifaceNil;
value = _tmp;
rest = _tmp$1;
err = _tmp$2;
$s = -1; return [value, rest, err];
/* } */ case 12:
$s = 10; continue;
/* } else if (_1 === (11)) { */ case 8:
_tmp$3 = sliceType$1.nil;
_tmp$4 = sliceType$1.nil;
_tmp$5 = scan.err;
value = _tmp$3;
rest = _tmp$4;
err = _tmp$5;
$s = -1; return [value, rest, err];
/* } else if (_1 === (10)) { */ case 9:
_tmp$6 = $subslice(data, 0, i);
_tmp$7 = $subslice(data, i);
_tmp$8 = $ifaceNil;
value = _tmp$6;
rest = _tmp$7;
err = _tmp$8;
$s = -1; return [value, rest, err];
/* } */ case 10:
case 6:
/* } */ case 5:
_i++;
/* } */ $s = 1; continue; case 2:
_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; }
/* */ if (_r$5 === 11) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if (_r$5 === 11) { */ case 14:
_tmp$9 = sliceType$1.nil;
_tmp$10 = sliceType$1.nil;
_tmp$11 = scan.err;
value = _tmp$9;
rest = _tmp$10;
err = _tmp$11;
$s = -1; return [value, rest, err];
/* } */ case 15:
_tmp$12 = data;
_tmp$13 = sliceType$1.nil;
_tmp$14 = $ifaceNil;
value = _tmp$12;
rest = _tmp$13;
err = _tmp$14;
$s = -1; return [value, rest, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: nextValue }; } $f.$ptr = $ptr; $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;
};
SyntaxError.ptr.prototype.Error = function() {
var $ptr, e;
e = this;
return e.msg;
};
SyntaxError.prototype.Error = function() { return this.$val.Error(); };
scanner.ptr.prototype.reset = function() {
var $ptr, s;
s = this;
s.step = stateBeginValue;
s.parseState = $subslice(s.parseState, 0, 0);
s.err = $ifaceNil;
s.redo = false;
s.endTop = false;
};
scanner.prototype.reset = function() { return this.$val.reset(); };
scanner.ptr.prototype.eof = function() {
var $ptr, _r$3, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$3 = $f._r$3; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
s = this;
if (!($interfaceIsEqual(s.err, $ifaceNil))) {
$s = -1; return 11;
}
if (s.endTop) {
$s = -1; return 10;
}
_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; }
_r$3;
if (s.endTop) {
$s = -1; return 10;
}
if ($interfaceIsEqual(s.err, $ifaceNil)) {
s.err = new SyntaxError.ptr("unexpected end of JSON input", s.bytes);
}
$s = -1; return 11;
/* */ } return; } if ($f === undefined) { $f = { $blk: scanner.ptr.prototype.eof }; } $f.$ptr = $ptr; $f._r$3 = _r$3; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
scanner.prototype.eof = function() { return this.$val.eof(); };
scanner.ptr.prototype.pushParseState = function(p) {
var $ptr, p, s;
s = this;
s.parseState = $append(s.parseState, p);
};
scanner.prototype.pushParseState = function(p) { return this.$val.pushParseState(p); };
scanner.ptr.prototype.popParseState = function() {
var $ptr, n, s;
s = this;
n = s.parseState.$length - 1 >> 0;
s.parseState = $subslice(s.parseState, 0, n);
s.redo = false;
if (n === 0) {
s.step = stateEndTop;
s.endTop = true;
} else {
s.step = stateEndValue;
}
};
scanner.prototype.popParseState = function() { return this.$val.popParseState(); };
isSpace = function(c) {
var $ptr, c;
return (c === 32) || (c === 9) || (c === 13) || (c === 10);
};
stateBeginValueOrEmpty = function(s, c) {
var $ptr, c, s;
if (c <= 32 && isSpace(c)) {
return 9;
}
if (c === 93) {
return stateEndValue(s, c);
}
return stateBeginValue(s, c);
};
stateBeginValue = function(s, c) {
var $ptr, _1, c, s;
if (c <= 32 && isSpace(c)) {
return 9;
}
_1 = c;
if (_1 === (123)) {
s.step = stateBeginStringOrEmpty;
s.pushParseState(0);
return 2;
} else if (_1 === (91)) {
s.step = stateBeginValueOrEmpty;
s.pushParseState(2);
return 6;
} else if (_1 === (34)) {
s.step = stateInString;
return 1;
} else if (_1 === (45)) {
s.step = stateNeg;
return 1;
} else if (_1 === (48)) {
s.step = state0;
return 1;
} else if (_1 === (116)) {
s.step = stateT;
return 1;
} else if (_1 === (102)) {
s.step = stateF;
return 1;
} else if (_1 === (110)) {
s.step = stateN;
return 1;
}
if (49 <= c && c <= 57) {
s.step = state1;
return 1;
}
return s.error(c, "looking for beginning of value");
};
stateBeginStringOrEmpty = function(s, c) {
var $ptr, c, n, s, x, x$1;
if (c <= 32 && isSpace(c)) {
return 9;
}
if (c === 125) {
n = s.parseState.$length;
(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));
return stateEndValue(s, c);
}
return stateBeginString(s, c);
};
stateBeginString = function(s, c) {
var $ptr, c, s;
if (c <= 32 && isSpace(c)) {
return 9;
}
if (c === 34) {
s.step = stateInString;
return 1;
}
return s.error(c, "looking for beginning of object key string");
};
stateEndValue = function(s, c) {
var $ptr, _1, c, n, ps, s, x, x$1, x$2, x$3, x$4, x$5;
n = s.parseState.$length;
if (n === 0) {
s.step = stateEndTop;
s.endTop = true;
return stateEndTop(s, c);
}
if (c <= 32 && isSpace(c)) {
s.step = stateEndValue;
return 9;
}
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]));
_1 = ps;
if (_1 === (0)) {
if (c === 58) {
(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));
s.step = stateBeginValue;
return 3;
}
return s.error(c, "after object key");
} else if (_1 === (1)) {
if (c === 44) {
(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));
s.step = stateBeginString;
return 4;
}
if (c === 125) {
s.popParseState();
return 5;
}
return s.error(c, "after object key:value pair");
} else if (_1 === (2)) {
if (c === 44) {
s.step = stateBeginValue;
return 7;
}
if (c === 93) {
s.popParseState();
return 8;
}
return s.error(c, "after array element");
}
return s.error(c, "");
};
stateEndTop = function(s, c) {
var $ptr, c, s;
if (!((c === 32)) && !((c === 9)) && !((c === 13)) && !((c === 10))) {
s.error(c, "after top-level value");
}
return 10;
};
stateInString = function(s, c) {
var $ptr, c, s;
if (c === 34) {
s.step = stateEndValue;
return 0;
}
if (c === 92) {
s.step = stateInStringEsc;
return 0;
}
if (c < 32) {
return s.error(c, "in string literal");
}
return 0;
};
stateInStringEsc = function(s, c) {
var $ptr, _1, c, s;
_1 = c;
if ((_1 === (98)) || (_1 === (102)) || (_1 === (110)) || (_1 === (114)) || (_1 === (116)) || (_1 === (92)) || (_1 === (47)) || (_1 === (34))) {
s.step = stateInString;
return 0;
} else if (_1 === (117)) {
s.step = stateInStringEscU;
return 0;
}
return s.error(c, "in string escape code");
};
stateInStringEscU = function(s, c) {
var $ptr, c, s;
if (48 <= c && c <= 57 || 97 <= c && c <= 102 || 65 <= c && c <= 70) {
s.step = stateInStringEscU1;
return 0;
}
return s.error(c, "in \\u hexadecimal character escape");
};
stateInStringEscU1 = function(s, c) {
var $ptr, c, s;
if (48 <= c && c <= 57 || 97 <= c && c <= 102 || 65 <= c && c <= 70) {
s.step = stateInStringEscU12;
return 0;
}
return s.error(c, "in \\u hexadecimal character escape");
};
stateInStringEscU12 = function(s, c) {
var $ptr, c, s;
if (48 <= c && c <= 57 || 97 <= c && c <= 102 || 65 <= c && c <= 70) {
s.step = stateInStringEscU123;
return 0;
}
return s.error(c, "in \\u hexadecimal character escape");
};
stateInStringEscU123 = function(s, c) {
var $ptr, c, s;
if (48 <= c && c <= 57 || 97 <= c && c <= 102 || 65 <= c && c <= 70) {
s.step = stateInString;
return 0;
}
return s.error(c, "in \\u hexadecimal character escape");
};
stateNeg = function(s, c) {
var $ptr, c, s;
if (c === 48) {
s.step = state0;
return 0;
}
if (49 <= c && c <= 57) {
s.step = state1;
return 0;
}
return s.error(c, "in numeric literal");
};
state1 = function(s, c) {
var $ptr, c, s;
if (48 <= c && c <= 57) {
s.step = state1;
return 0;
}
return state0(s, c);
};
state0 = function(s, c) {
var $ptr, c, s;
if (c === 46) {
s.step = stateDot;
return 0;
}
if ((c === 101) || (c === 69)) {
s.step = stateE;
return 0;
}
return stateEndValue(s, c);
};
stateDot = function(s, c) {
var $ptr, c, s;
if (48 <= c && c <= 57) {
s.step = stateDot0;
return 0;
}
return s.error(c, "after decimal point in numeric literal");
};
stateDot0 = function(s, c) {
var $ptr, c, s;
if (48 <= c && c <= 57) {
return 0;
}
if ((c === 101) || (c === 69)) {
s.step = stateE;
return 0;
}
return stateEndValue(s, c);
};
stateE = function(s, c) {
var $ptr, c, s;
if ((c === 43) || (c === 45)) {
s.step = stateESign;
return 0;
}
return stateESign(s, c);
};
stateESign = function(s, c) {
var $ptr, c, s;
if (48 <= c && c <= 57) {
s.step = stateE0;
return 0;
}
return s.error(c, "in exponent of numeric literal");
};
stateE0 = function(s, c) {
var $ptr, c, s;
if (48 <= c && c <= 57) {
return 0;
}
return stateEndValue(s, c);
};
stateT = function(s, c) {
var $ptr, c, s;
if (c === 114) {
s.step = stateTr;
return 0;
}
return s.error(c, "in literal true (expecting 'r')");
};
stateTr = function(s, c) {
var $ptr, c, s;
if (c === 117) {
s.step = stateTru;
return 0;
}
return s.error(c, "in literal true (expecting 'u')");
};
stateTru = function(s, c) {
var $ptr, c, s;
if (c === 101) {
s.step = stateEndValue;
return 0;
}
return s.error(c, "in literal true (expecting 'e')");
};
stateF = function(s, c) {
var $ptr, c, s;
if (c === 97) {
s.step = stateFa;
return 0;
}
return s.error(c, "in literal false (expecting 'a')");
};
stateFa = function(s, c) {
var $ptr, c, s;
if (c === 108) {
s.step = stateFal;
return 0;
}
return s.error(c, "in literal false (expecting 'l')");
};
stateFal = function(s, c) {
var $ptr, c, s;
if (c === 115) {
s.step = stateFals;
return 0;
}
return s.error(c, "in literal false (expecting 's')");
};
stateFals = function(s, c) {
var $ptr, c, s;
if (c === 101) {
s.step = stateEndValue;
return 0;
}
return s.error(c, "in literal false (expecting 'e')");
};
stateN = function(s, c) {
var $ptr, c, s;
if (c === 117) {
s.step = stateNu;
return 0;
}
return s.error(c, "in literal null (expecting 'u')");
};
stateNu = function(s, c) {
var $ptr, c, s;
if (c === 108) {
s.step = stateNul;
return 0;
}
return s.error(c, "in literal null (expecting 'l')");
};
stateNul = function(s, c) {
var $ptr, c, s;
if (c === 108) {
s.step = stateEndValue;
return 0;
}
return s.error(c, "in literal null (expecting 'l')");
};
stateError = function(s, c) {
var $ptr, c, s;
return 11;
};
scanner.ptr.prototype.error = function(c, context) {
var $ptr, c, context, s;
s = this;
s.step = stateError;
s.err = new SyntaxError.ptr("invalid character " + quoteChar(c) + " " + context, s.bytes);
return 11;
};
scanner.prototype.error = function(c, context) { return this.$val.error(c, context); };
quoteChar = function(c) {
var $ptr, c, s;
if (c === 39) {
return "'\\''";
}
if (c === 34) {
return "'\"'";
}
s = strconv.Quote(($encodeRune(c)));
return "'" + $substring(s, 1, (s.length - 1 >> 0)) + "'";
};
scanner.ptr.prototype.undo = function(scanCode) {
var $ptr, s, scanCode;
s = this;
if (s.redo) {
$panic(new $String("json: invalid use of scanner"));
}
s.redoCode = scanCode;
s.redoState = s.step;
s.step = stateRedo;
s.redo = true;
};
scanner.prototype.undo = function(scanCode) { return this.$val.undo(scanCode); };
stateRedo = function(s, c) {
var $ptr, c, s;
s.redo = false;
s.step = s.redoState;
return s.redoCode;
};
NewDecoder = function(r) {
var $ptr, r;
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$2.ptr("", ""), $ifaceNil, false), 0, new scanner.ptr($throwNilPointerError, false, sliceType$2.nil, $ifaceNil, false, 0, $throwNilPointerError, new $Int64(0, 0)), $ifaceNil, 0, sliceType$2.nil);
};
$pkg.NewDecoder = NewDecoder;
Decoder.ptr.prototype.UseNumber = function() {
var $ptr, dec;
dec = this;
dec.d.useNumber = true;
};
Decoder.prototype.UseNumber = function() { return this.$val.UseNumber(); };
Decoder.ptr.prototype.Decode = function(v) {
var $ptr, _r$3, _r$4, _r$5, _tuple, dec, err, err$1, n, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
dec = this;
if (!($interfaceIsEqual(dec.err, $ifaceNil))) {
$s = -1; return dec.err;
}
_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; }
err = _r$3;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
if (!dec.tokenValueAllowed()) {
$s = -1; return new SyntaxError.ptr("not at beginning of value", new $Int64(0, 0));
}
_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; }
_tuple = _r$4;
n = _tuple[0];
err$1 = _tuple[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return err$1;
}
dec.d.init($subslice(dec.buf, dec.scanp, (dec.scanp + n >> 0)));
dec.scanp = dec.scanp + (n) >> 0;
_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; }
err$1 = _r$5;
dec.tokenValueEnd();
$s = -1; return err$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.Decode }; } $f.$ptr = $ptr; $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;
};
Decoder.prototype.Decode = function(v) { return this.$val.Decode(v); };
Decoder.ptr.prototype.Buffered = function() {
var $ptr, dec;
dec = this;
return bytes.NewReader($subslice(dec.buf, dec.scanp));
};
Decoder.prototype.Buffered = function() { return this.$val.Buffered(); };
Decoder.ptr.prototype.readValue = function() {
var $ptr, _i, _r$3, _r$4, _r$5, _r$6, _ref, _v, c, dec, err, i, n, scanp, v, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
dec = this;
dec.scan.reset();
scanp = dec.scanp;
err = $ifaceNil;
/* while (true) { */ case 1:
_ref = $subslice(dec.buf, scanp);
_i = 0;
/* while (true) { */ case 3:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; }
i = _i;
c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
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));
_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; }
v = _r$3;
if (v === 10) {
scanp = scanp + (i) >> 0;
/* break Input; */ $s = 2; continue s;
}
if (!((v === 5) || (v === 8))) { _v = false; $s = 8; continue s; }
_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; }
_v = _r$4 === 10; case 8:
/* */ if (_v) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (_v) { */ case 6:
scanp = scanp + ((i + 1 >> 0)) >> 0;
/* break Input; */ $s = 2; continue s;
/* } */ case 7:
if (v === 11) {
dec.err = dec.scan.err;
$s = -1; return [0, dec.scan.err];
}
_i++;
/* } */ $s = 3; continue; case 4:
scanp = dec.buf.$length;
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 10:
/* */ if ($interfaceIsEqual(err, io.EOF)) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if ($interfaceIsEqual(err, io.EOF)) { */ case 12:
_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; }
/* */ if (_r$5 === 10) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if (_r$5 === 10) { */ case 14:
/* break Input; */ $s = 2; continue s;
/* } */ case 15:
if (nonSpace(dec.buf)) {
err = io.ErrUnexpectedEOF;
}
/* } */ case 13:
dec.err = err;
$s = -1; return [0, err];
/* } */ case 11:
n = scanp - dec.scanp >> 0;
_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; }
err = _r$6;
scanp = dec.scanp + n >> 0;
/* } */ $s = 1; continue; case 2:
$s = -1; return [scanp - dec.scanp >> 0, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.readValue }; } $f.$ptr = $ptr; $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;
};
Decoder.prototype.readValue = function() { return this.$val.readValue(); };
Decoder.ptr.prototype.refill = function() {
var $ptr, _r$3, _tuple, dec, err, n, n$1, newBuf, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
dec = this;
if (dec.scanp > 0) {
n = $copySlice(dec.buf, $subslice(dec.buf, dec.scanp));
dec.buf = $subslice(dec.buf, 0, n);
dec.scanp = 0;
}
if ((dec.buf.$capacity - dec.buf.$length >> 0) < 512) {
newBuf = $makeSlice(sliceType$1, dec.buf.$length, (($imul(2, dec.buf.$capacity)) + 512 >> 0));
$copySlice(newBuf, dec.buf);
dec.buf = newBuf;
}
_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; }
_tuple = _r$3;
n$1 = _tuple[0];
err = _tuple[1];
dec.buf = $subslice(dec.buf, 0, (dec.buf.$length + n$1 >> 0));
$s = -1; return err;
/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.refill }; } $f.$ptr = $ptr; $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.$s = $s; $f.$r = $r; return $f;
};
Decoder.prototype.refill = function() { return this.$val.refill(); };
nonSpace = function(b) {
var $ptr, _i, _ref, b, c;
_ref = b;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (!isSpace(c)) {
return true;
}
_i++;
}
return false;
};
Decoder.ptr.prototype.tokenPrepareForDecode = function() {
var $ptr, _1, _r$3, _r$4, _tuple, _tuple$1, c, c$1, dec, err, err$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
dec = this;
_1 = dec.tokenState;
/* */ if (_1 === (3)) { $s = 2; continue; }
/* */ if (_1 === (6)) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (_1 === (3)) { */ case 2:
_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; }
_tuple = _r$3;
c = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
if (!((c === 44))) {
$s = -1; return new SyntaxError.ptr("expected comma after array element", new $Int64(0, 0));
}
dec.scanp = dec.scanp + (1) >> 0;
dec.tokenState = 2;
$s = 4; continue;
/* } else if (_1 === (6)) { */ case 3:
_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; }
_tuple$1 = _r$4;
c$1 = _tuple$1[0];
err$1 = _tuple$1[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return err$1;
}
if (!((c$1 === 58))) {
$s = -1; return new SyntaxError.ptr("expected colon after object key", new $Int64(0, 0));
}
dec.scanp = dec.scanp + (1) >> 0;
dec.tokenState = 7;
/* } */ case 4:
case 1:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.tokenPrepareForDecode }; } $f.$ptr = $ptr; $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;
};
Decoder.prototype.tokenPrepareForDecode = function() { return this.$val.tokenPrepareForDecode(); };
Decoder.ptr.prototype.tokenValueAllowed = function() {
var $ptr, _1, dec;
dec = this;
_1 = dec.tokenState;
if ((_1 === (0)) || (_1 === (1)) || (_1 === (2)) || (_1 === (7))) {
return true;
}
return false;
};
Decoder.prototype.tokenValueAllowed = function() { return this.$val.tokenValueAllowed(); };
Decoder.ptr.prototype.tokenValueEnd = function() {
var $ptr, _1, dec;
dec = this;
_1 = dec.tokenState;
if ((_1 === (1)) || (_1 === (2))) {
dec.tokenState = 3;
} else if (_1 === (7)) {
dec.tokenState = 8;
}
};
Decoder.prototype.tokenValueEnd = function() { return this.$val.tokenValueEnd(); };
Delim.prototype.String = function() {
var $ptr, d;
d = this.$val;
return ($encodeRune(d));
};
$ptrType(Delim).prototype.String = function() { return new Delim(this.$get()).String(); };
Decoder.ptr.prototype.Token = function() {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
dec = this;
/* while (true) { */ case 1:
x = [x];
x$1 = [x$1];
_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; }
_tuple = _r$3;
c = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [$ifaceNil, err];
}
_1 = c;
/* */ if (_1 === (91)) { $s = 5; continue; }
/* */ if (_1 === (93)) { $s = 6; continue; }
/* */ if (_1 === (123)) { $s = 7; continue; }
/* */ if (_1 === (125)) { $s = 8; continue; }
/* */ if (_1 === (58)) { $s = 9; continue; }
/* */ if (_1 === (44)) { $s = 10; continue; }
/* */ if (_1 === (34)) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if (_1 === (91)) { */ case 5:
if (!dec.tokenValueAllowed()) {
$s = -1; return dec.tokenError(c);
}
dec.scanp = dec.scanp + (1) >> 0;
dec.tokenStack = $append(dec.tokenStack, dec.tokenState);
dec.tokenState = 1;
$s = -1; return [new Delim(91), $ifaceNil];
/* } else if (_1 === (93)) { */ case 6:
if (!((dec.tokenState === 1)) && !((dec.tokenState === 3))) {
$s = -1; return dec.tokenError(c);
}
dec.scanp = dec.scanp + (1) >> 0;
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]));
dec.tokenStack = $subslice(dec.tokenStack, 0, (dec.tokenStack.$length - 1 >> 0));
dec.tokenValueEnd();
$s = -1; return [new Delim(93), $ifaceNil];
/* } else if (_1 === (123)) { */ case 7:
if (!dec.tokenValueAllowed()) {
$s = -1; return dec.tokenError(c);
}
dec.scanp = dec.scanp + (1) >> 0;
dec.tokenStack = $append(dec.tokenStack, dec.tokenState);
dec.tokenState = 4;
$s = -1; return [new Delim(123), $ifaceNil];
/* } else if (_1 === (125)) { */ case 8:
if (!((dec.tokenState === 4)) && !((dec.tokenState === 8))) {
$s = -1; return dec.tokenError(c);
}
dec.scanp = dec.scanp + (1) >> 0;
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]));
dec.tokenStack = $subslice(dec.tokenStack, 0, (dec.tokenStack.$length - 1 >> 0));
dec.tokenValueEnd();
$s = -1; return [new Delim(125), $ifaceNil];
/* } else if (_1 === (58)) { */ case 9:
if (!((dec.tokenState === 6))) {
$s = -1; return dec.tokenError(c);
}
dec.scanp = dec.scanp + (1) >> 0;
dec.tokenState = 7;
/* continue; */ $s = 1; continue;
$s = 13; continue;
/* } else if (_1 === (44)) { */ case 10:
/* */ if (dec.tokenState === 3) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if (dec.tokenState === 3) { */ case 14:
dec.scanp = dec.scanp + (1) >> 0;
dec.tokenState = 2;
/* continue; */ $s = 1; continue;
/* } */ case 15:
if (dec.tokenState === 8) {
dec.scanp = dec.scanp + (1) >> 0;
dec.tokenState = 5;
/* continue; */ $s = 1; continue;
}
$s = -1; return dec.tokenError(c);
/* } else if (_1 === (34)) { */ case 11:
/* */ if ((dec.tokenState === 4) || (dec.tokenState === 5)) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if ((dec.tokenState === 4) || (dec.tokenState === 5)) { */ case 16:
x[0] = "";
old = dec.tokenState;
dec.tokenState = 0;
_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; }
err$1 = _r$4;
dec.tokenState = old;
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
clearOffset(err$1);
$s = -1; return [$ifaceNil, err$1];
}
dec.tokenState = 6;
$s = -1; return [new $String(x[0]), $ifaceNil];
/* } */ case 17:
if (!dec.tokenValueAllowed()) {
$s = -1; return dec.tokenError(c);
}
x$1[0] = $ifaceNil;
_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; }
err$2 = _r$5;
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
clearOffset(err$2);
$s = -1; return [$ifaceNil, err$2];
}
$s = -1; return [x$1[0], $ifaceNil];
/* } else { */ case 12:
if (!dec.tokenValueAllowed()) {
$s = -1; return dec.tokenError(c);
}
x$1[0] = $ifaceNil;
_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; }
err$2 = _r$6;
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
clearOffset(err$2);
$s = -1; return [$ifaceNil, err$2];
}
$s = -1; return [x$1[0], $ifaceNil];
/* } */ case 13:
case 4:
/* } */ $s = 1; continue; case 2:
$s = -1; return [$ifaceNil, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.Token }; } $f.$ptr = $ptr; $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;
};
Decoder.prototype.Token = function() { return this.$val.Token(); };
clearOffset = function(err) {
var $ptr, _tuple, err, ok, s;
_tuple = $assertType(err, ptrType$11, true);
s = _tuple[0];
ok = _tuple[1];
if (ok) {
s.Offset = new $Int64(0, 0);
}
};
Decoder.ptr.prototype.tokenError = function(c) {
var $ptr, _1, c, context, dec;
dec = this;
context = "";
_1 = dec.tokenState;
if (_1 === (0)) {
context = " looking for beginning of value";
} else if ((_1 === (1)) || (_1 === (2)) || (_1 === (7))) {
context = " looking for beginning of value";
} else if (_1 === (3)) {
context = " after array element";
} else if (_1 === (5)) {
context = " looking for beginning of object key string";
} else if (_1 === (6)) {
context = " after object key";
} else if (_1 === (8)) {
context = " after object key:value pair";
}
return [$ifaceNil, new SyntaxError.ptr("invalid character " + quoteChar(c) + " " + context, new $Int64(0, 0))];
};
Decoder.prototype.tokenError = function(c) { return this.$val.tokenError(c); };
Decoder.ptr.prototype.More = function() {
var $ptr, _r$3, _tuple, c, dec, err, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
dec = this;
_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; }
_tuple = _r$3;
c = _tuple[0];
err = _tuple[1];
$s = -1; return $interfaceIsEqual(err, $ifaceNil) && !((c === 93)) && !((c === 125));
/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.More }; } $f.$ptr = $ptr; $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;
};
Decoder.prototype.More = function() { return this.$val.More(); };
Decoder.ptr.prototype.peek = function() {
var $ptr, _r$3, c, dec, err, i, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
dec = this;
err = $ifaceNil;
/* while (true) { */ case 1:
i = dec.scanp;
/* while (true) { */ case 3:
/* if (!(i < dec.buf.$length)) { break; } */ if(!(i < dec.buf.$length)) { $s = 4; continue; }
c = (x = dec.buf, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
if (isSpace(c)) {
i = i + (1) >> 0;
/* continue; */ $s = 3; continue;
}
dec.scanp = i;
$s = -1; return [c, $ifaceNil];
/* } */ $s = 3; continue; case 4:
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [0, err];
}
_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; }
err = _r$3;
/* } */ $s = 1; continue; case 2:
$s = -1; return [0, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.peek }; } $f.$ptr = $ptr; $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;
};
Decoder.prototype.peek = function() { return this.$val.peek(); };
parseTag = function(tag) {
var $ptr, idx, tag;
idx = strings.Index(tag, ",");
if (!((idx === -1))) {
return [$substring(tag, 0, idx), ($substring(tag, (idx + 1 >> 0)))];
}
return [tag, ""];
};
tagOptions.prototype.Contains = function(optionName) {
var $ptr, _tmp, _tmp$1, i, next, o, optionName, s;
o = this.$val;
if (o.length === 0) {
return false;
}
s = (o);
while (true) {
if (!(!(s === ""))) { break; }
next = "";
i = strings.Index(s, ",");
if (i >= 0) {
_tmp = $substring(s, 0, i);
_tmp$1 = $substring(s, (i + 1 >> 0));
s = _tmp;
next = _tmp$1;
}
if (s === optionName) {
return true;
}
s = next;
}
return false;
};
$ptrType(tagOptions).prototype.Contains = function(optionName) { return new tagOptions(this.$get()).Contains(optionName); };
ptrType$4.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
ptrType$13.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
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)}];
ptrType$14.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$14], 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$1], false)}, {prop: "literalInterface", name: "literalInterface", pkg: "encoding/json", typ: $funcType([], [$emptyInterface], false)}];
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)}];
ptrType$11.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
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)}];
ptrType$27.methods = [{prop: "UseNumber", name: "UseNumber", 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)}];
Delim.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
tagOptions.methods = [{prop: "Contains", name: "Contains", pkg: "", typ: $funcType([$String], [$Bool], false)}];
Unmarshaler.init([{prop: "UnmarshalJSON", name: "UnmarshalJSON", pkg: "", typ: $funcType([sliceType$1], [$error], false)}]);
UnmarshalTypeError.init("", [{prop: "Value", name: "Value", exported: true, typ: $String, tag: ""}, {prop: "Type", name: "Type", exported: true, typ: reflect.Type, tag: ""}, {prop: "Offset", name: "Offset", exported: true, typ: $Int64, tag: ""}, {prop: "Struct", name: "Struct", exported: true, typ: $String, tag: ""}, {prop: "Field", name: "Field", exported: true, typ: $String, tag: ""}]);
InvalidUnmarshalError.init("", [{prop: "Type", name: "Type", exported: true, typ: reflect.Type, tag: ""}]);
decodeState.init("encoding/json", [{prop: "data", name: "data", exported: false, typ: sliceType$1, tag: ""}, {prop: "off", name: "off", exported: false, typ: $Int, tag: ""}, {prop: "scan", name: "scan", exported: false, typ: scanner, tag: ""}, {prop: "nextscan", name: "nextscan", exported: false, typ: scanner, tag: ""}, {prop: "errorContext", name: "errorContext", exported: false, typ: structType$2, tag: ""}, {prop: "savedError", name: "savedError", exported: false, typ: $error, tag: ""}, {prop: "useNumber", name: "useNumber", exported: false, typ: $Bool, tag: ""}]);
unquotedValue.init("", []);
Marshaler.init([{prop: "MarshalJSON", name: "MarshalJSON", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}]);
field.init("encoding/json", [{prop: "name", name: "name", exported: false, typ: $String, tag: ""}, {prop: "nameBytes", name: "nameBytes", exported: false, typ: sliceType$1, tag: ""}, {prop: "equalFold", name: "equalFold", exported: false, typ: funcType, tag: ""}, {prop: "tag", name: "tag", exported: false, typ: $Bool, tag: ""}, {prop: "index", name: "index", exported: false, typ: sliceType$2, tag: ""}, {prop: "typ", name: "typ", exported: false, typ: reflect.Type, tag: ""}, {prop: "omitEmpty", name: "omitEmpty", exported: false, typ: $Bool, tag: ""}, {prop: "quoted", name: "quoted", exported: false, typ: $Bool, tag: ""}]);
byIndex.init(field);
SyntaxError.init("encoding/json", [{prop: "msg", name: "msg", exported: false, typ: $String, tag: ""}, {prop: "Offset", name: "Offset", exported: true, typ: $Int64, tag: ""}]);
scanner.init("encoding/json", [{prop: "step", name: "step", exported: false, typ: funcType$1, tag: ""}, {prop: "endTop", name: "endTop", exported: false, typ: $Bool, tag: ""}, {prop: "parseState", name: "parseState", exported: false, typ: sliceType$2, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}, {prop: "redo", name: "redo", exported: false, typ: $Bool, tag: ""}, {prop: "redoCode", name: "redoCode", exported: false, typ: $Int, tag: ""}, {prop: "redoState", name: "redoState", exported: false, typ: funcType$1, tag: ""}, {prop: "bytes", name: "bytes", exported: false, typ: $Int64, tag: ""}]);
Decoder.init("encoding/json", [{prop: "r", name: "r", exported: false, typ: io.Reader, tag: ""}, {prop: "buf", name: "buf", exported: false, typ: sliceType$1, tag: ""}, {prop: "d", name: "d", exported: false, typ: decodeState, tag: ""}, {prop: "scanp", name: "scanp", exported: false, typ: $Int, tag: ""}, {prop: "scan", name: "scan", exported: false, typ: scanner, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}, {prop: "tokenState", name: "tokenState", exported: false, typ: $Int, tag: ""}, {prop: "tokenStack", name: "tokenStack", exported: false, typ: sliceType$2, tag: ""}]);
Token.init([]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = encoding.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = base64.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = errors.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = fmt.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = nosync.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = math.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = reflect.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = runtime.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sort.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strconv.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strings.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = atomic.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = unicode.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = utf16.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = utf8.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
fieldCache = new structType$1.ptr(new atomic.Value.ptr(new atomic.noCopy.ptr(), $ifaceNil), new nosync.Mutex.ptr(false));
errPhase = errors.New("JSON decoder out of sync - data changing underfoot?");
nullLiteral = (new sliceType$1($stringToBytes("null")));
_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; }
textUnmarshalerType = _r;
numberType = reflect.TypeOf(new Number(""));
_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; }
marshalerType = _r$1;
_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; }
textMarshalerType = _r$2;
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["path"] = (function() {
var $pkg = {}, $init, errors, strings, utf8, lazybuf, sliceType, ptrType, Clean, Split;
errors = $packages["errors"];
strings = $packages["strings"];
utf8 = $packages["unicode/utf8"];
lazybuf = $pkg.lazybuf = $newType(0, $kindStruct, "path.lazybuf", true, "path", false, function(s_, buf_, w_) {
this.$val = this;
if (arguments.length === 0) {
this.s = "";
this.buf = sliceType.nil;
this.w = 0;
return;
}
this.s = s_;
this.buf = buf_;
this.w = w_;
});
sliceType = $sliceType($Uint8);
ptrType = $ptrType(lazybuf);
lazybuf.ptr.prototype.index = function(i) {
var $ptr, b, i, x;
b = this;
if (!(b.buf === sliceType.nil)) {
return (x = b.buf, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
}
return b.s.charCodeAt(i);
};
lazybuf.prototype.index = function(i) { return this.$val.index(i); };
lazybuf.ptr.prototype.append = function(c) {
var $ptr, b, c, x, x$1;
b = this;
if (b.buf === sliceType.nil) {
if (b.w < b.s.length && (b.s.charCodeAt(b.w) === c)) {
b.w = b.w + (1) >> 0;
return;
}
b.buf = $makeSlice(sliceType, b.s.length);
$copyString(b.buf, $substring(b.s, 0, b.w));
}
(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));
b.w = b.w + (1) >> 0;
};
lazybuf.prototype.append = function(c) { return this.$val.append(c); };
lazybuf.ptr.prototype.string = function() {
var $ptr, b;
b = this;
if (b.buf === sliceType.nil) {
return $substring(b.s, 0, b.w);
}
return ($bytesToString($subslice(b.buf, 0, b.w)));
};
lazybuf.prototype.string = function() { return this.$val.string(); };
Clean = function(path) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, dotdot, n, out, path, r, rooted;
if (path === "") {
return ".";
}
rooted = path.charCodeAt(0) === 47;
n = path.length;
out = new lazybuf.ptr(path, sliceType.nil, 0);
_tmp = 0;
_tmp$1 = 0;
r = _tmp;
dotdot = _tmp$1;
if (rooted) {
out.append(47);
_tmp$2 = 1;
_tmp$3 = 1;
r = _tmp$2;
dotdot = _tmp$3;
}
while (true) {
if (!(r < n)) { break; }
if ((path.charCodeAt(r) === 47)) {
r = r + (1) >> 0;
} else if ((path.charCodeAt(r) === 46) && (((r + 1 >> 0) === n) || (path.charCodeAt((r + 1 >> 0)) === 47))) {
r = r + (1) >> 0;
} else if ((path.charCodeAt(r) === 46) && (path.charCodeAt((r + 1 >> 0)) === 46) && (((r + 2 >> 0) === n) || (path.charCodeAt((r + 2 >> 0)) === 47))) {
r = r + (2) >> 0;
if (out.w > dotdot) {
out.w = out.w - (1) >> 0;
while (true) {
if (!(out.w > dotdot && !((out.index(out.w) === 47)))) { break; }
out.w = out.w - (1) >> 0;
}
} else if (!rooted) {
if (out.w > 0) {
out.append(47);
}
out.append(46);
out.append(46);
dotdot = out.w;
}
} else {
if (rooted && !((out.w === 1)) || !rooted && !((out.w === 0))) {
out.append(47);
}
while (true) {
if (!(r < n && !((path.charCodeAt(r) === 47)))) { break; }
out.append(path.charCodeAt(r));
r = r + (1) >> 0;
}
}
}
if (out.w === 0) {
return ".";
}
return out.string();
};
$pkg.Clean = Clean;
Split = function(path) {
var $ptr, _tmp, _tmp$1, dir, file, i, path;
dir = "";
file = "";
i = strings.LastIndex(path, "/");
_tmp = $substring(path, 0, (i + 1 >> 0));
_tmp$1 = $substring(path, (i + 1 >> 0));
dir = _tmp;
file = _tmp$1;
return [dir, file];
};
$pkg.Split = Split;
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)}];
lazybuf.init("path", [{prop: "s", name: "s", exported: false, typ: $String, tag: ""}, {prop: "buf", name: "buf", exported: false, typ: sliceType, tag: ""}, {prop: "w", name: "w", exported: false, typ: $Int, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strings.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = utf8.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$pkg.ErrBadPattern = errors.New("syntax error in pattern");
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["github.com/StackExchange/dnscontrol/vendor/github.com/pkg/errors"] = (function() {
var $pkg = {}, $init, fmt, io, path, runtime, strings;
fmt = $packages["fmt"];
io = $packages["io"];
path = $packages["path"];
runtime = $packages["runtime"];
strings = $packages["strings"];
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = path.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = runtime.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strings.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["path/filepath"] = (function() {
var $pkg = {}, $init, errors, os, runtime, sort, strings, syscall, utf8, lazybuf, sliceType$1, ptrType$1, Clean, FromSlash, Join, isSlash, volumeNameLen, join, joinNonEmpty, isUNC;
errors = $packages["errors"];
os = $packages["os"];
runtime = $packages["runtime"];
sort = $packages["sort"];
strings = $packages["strings"];
syscall = $packages["syscall"];
utf8 = $packages["unicode/utf8"];
lazybuf = $pkg.lazybuf = $newType(0, $kindStruct, "filepath.lazybuf", true, "path/filepath", false, function(path_, buf_, w_, volAndPath_, volLen_) {
this.$val = this;
if (arguments.length === 0) {
this.path = "";
this.buf = sliceType$1.nil;
this.w = 0;
this.volAndPath = "";
this.volLen = 0;
return;
}
this.path = path_;
this.buf = buf_;
this.w = w_;
this.volAndPath = volAndPath_;
this.volLen = volLen_;
});
sliceType$1 = $sliceType($Uint8);
ptrType$1 = $ptrType(lazybuf);
lazybuf.ptr.prototype.index = function(i) {
var $ptr, b, i, x;
b = this;
if (!(b.buf === sliceType$1.nil)) {
return (x = b.buf, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
}
return b.path.charCodeAt(i);
};
lazybuf.prototype.index = function(i) { return this.$val.index(i); };
lazybuf.ptr.prototype.append = function(c) {
var $ptr, b, c, x, x$1;
b = this;
if (b.buf === sliceType$1.nil) {
if (b.w < b.path.length && (b.path.charCodeAt(b.w) === c)) {
b.w = b.w + (1) >> 0;
return;
}
b.buf = $makeSlice(sliceType$1, b.path.length);
$copyString(b.buf, $substring(b.path, 0, b.w));
}
(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));
b.w = b.w + (1) >> 0;
};
lazybuf.prototype.append = function(c) { return this.$val.append(c); };
lazybuf.ptr.prototype.string = function() {
var $ptr, b;
b = this;
if (b.buf === sliceType$1.nil) {
return $substring(b.volAndPath, 0, (b.volLen + b.w >> 0));
}
return $substring(b.volAndPath, 0, b.volLen) + ($bytesToString($subslice(b.buf, 0, b.w)));
};
lazybuf.prototype.string = function() { return this.$val.string(); };
Clean = function(path) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, dotdot, n, originalPath, out, path, r, rooted, volLen;
originalPath = path;
volLen = volumeNameLen(path);
path = $substring(path, volLen);
if (path === "") {
if (volLen > 1 && !((originalPath.charCodeAt(1) === 58))) {
return FromSlash(originalPath);
}
return originalPath + ".";
}
rooted = os.IsPathSeparator(path.charCodeAt(0));
n = path.length;
out = new lazybuf.ptr(path, sliceType$1.nil, 0, originalPath, volLen);
_tmp = 0;
_tmp$1 = 0;
r = _tmp;
dotdot = _tmp$1;
if (rooted) {
out.append(92);
_tmp$2 = 1;
_tmp$3 = 1;
r = _tmp$2;
dotdot = _tmp$3;
}
while (true) {
if (!(r < n)) { break; }
if (os.IsPathSeparator(path.charCodeAt(r))) {
r = r + (1) >> 0;
} else if ((path.charCodeAt(r) === 46) && (((r + 1 >> 0) === n) || os.IsPathSeparator(path.charCodeAt((r + 1 >> 0))))) {
r = r + (1) >> 0;
} else if ((path.charCodeAt(r) === 46) && (path.charCodeAt((r + 1 >> 0)) === 46) && (((r + 2 >> 0) === n) || os.IsPathSeparator(path.charCodeAt((r + 2 >> 0))))) {
r = r + (2) >> 0;
if (out.w > dotdot) {
out.w = out.w - (1) >> 0;
while (true) {
if (!(out.w > dotdot && !os.IsPathSeparator(out.index(out.w)))) { break; }
out.w = out.w - (1) >> 0;
}
} else if (!rooted) {
if (out.w > 0) {
out.append(92);
}
out.append(46);
out.append(46);
dotdot = out.w;
}
} else {
if (rooted && !((out.w === 1)) || !rooted && !((out.w === 0))) {
out.append(92);
}
while (true) {
if (!(r < n && !os.IsPathSeparator(path.charCodeAt(r)))) { break; }
out.append(path.charCodeAt(r));
r = r + (1) >> 0;
}
}
}
if (out.w === 0) {
out.append(46);
}
return FromSlash(out.string());
};
$pkg.Clean = Clean;
FromSlash = function(path) {
var $ptr, path;
if (false) {
return path;
}
return strings.Replace(path, "/", "\\", -1);
};
$pkg.FromSlash = FromSlash;
Join = function(elem) {
var $ptr, elem;
return join(elem);
};
$pkg.Join = Join;
isSlash = function(c) {
var $ptr, c;
return (c === 92) || (c === 47);
};
volumeNameLen = function(path) {
var $ptr, c, l, n, path;
if (path.length < 2) {
return 0;
}
c = path.charCodeAt(0);
if ((path.charCodeAt(1) === 58) && (97 <= c && c <= 122 || 65 <= c && c <= 90)) {
return 2;
}
l = path.length;
if (l >= 5 && isSlash(path.charCodeAt(0)) && isSlash(path.charCodeAt(1)) && !isSlash(path.charCodeAt(2)) && !((path.charCodeAt(2) === 46))) {
n = 3;
while (true) {
if (!(n < (l - 1 >> 0))) { break; }
if (isSlash(path.charCodeAt(n))) {
n = n + (1) >> 0;
if (!isSlash(path.charCodeAt(n))) {
if (path.charCodeAt(n) === 46) {
break;
}
while (true) {
if (!(n < l)) { break; }
if (isSlash(path.charCodeAt(n))) {
break;
}
n = n + (1) >> 0;
}
return n;
}
break;
}
n = n + (1) >> 0;
}
}
return 0;
};
join = function(elem) {
var $ptr, _i, _ref, e, elem, i;
_ref = elem;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
e = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (!(e === "")) {
return joinNonEmpty($subslice(elem, i));
}
_i++;
}
return "";
};
joinNonEmpty = function(elem) {
var $ptr, elem, head, p, tail;
if (((0 >= elem.$length ? ($throwRuntimeError("index out of range"), undefined) : elem.$array[elem.$offset + 0]).length === 2) && ((0 >= elem.$length ? ($throwRuntimeError("index out of range"), undefined) : elem.$array[elem.$offset + 0]).charCodeAt(1) === 58)) {
return Clean((0 >= elem.$length ? ($throwRuntimeError("index out of range"), undefined) : elem.$array[elem.$offset + 0]) + strings.Join($subslice(elem, 1), "\\"));
}
p = Clean(strings.Join(elem, "\\"));
if (!isUNC(p)) {
return p;
}
head = Clean((0 >= elem.$length ? ($throwRuntimeError("index out of range"), undefined) : elem.$array[elem.$offset + 0]));
if (isUNC(head)) {
return p;
}
tail = Clean(strings.Join($subslice(elem, 1), "\\"));
if (head.charCodeAt((head.length - 1 >> 0)) === 92) {
return head + tail;
}
return head + "\\" + tail;
};
isUNC = function(path) {
var $ptr, path;
return volumeNameLen(path) > 2;
};
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)}];
lazybuf.init("path/filepath", [{prop: "path", name: "path", exported: false, typ: $String, tag: ""}, {prop: "buf", name: "buf", exported: false, typ: sliceType$1, tag: ""}, {prop: "w", name: "w", exported: false, typ: $Int, tag: ""}, {prop: "volAndPath", name: "volAndPath", exported: false, typ: $String, tag: ""}, {prop: "volLen", name: "volLen", exported: false, typ: $Int, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = os.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = runtime.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sort.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strings.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = syscall.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = utf8.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$pkg.ErrBadPattern = errors.New("syntax error in pattern");
$pkg.SkipDir = errors.New("skip this directory");
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["io/ioutil"] = (function() {
var $pkg = {}, $init, bytes, io, os, filepath, sort, strconv, sync, time, nopCloser, devNull, sliceType, sliceType$1, ptrType, ptrType$1, sliceType$3, blackHolePool, rand, randmu, readAll, ReadAll, ReadFile, NopCloser, reseed, nextSuffix, TempFile;
bytes = $packages["bytes"];
io = $packages["io"];
os = $packages["os"];
filepath = $packages["path/filepath"];
sort = $packages["sort"];
strconv = $packages["strconv"];
sync = $packages["sync"];
time = $packages["time"];
nopCloser = $pkg.nopCloser = $newType(0, $kindStruct, "ioutil.nopCloser", true, "io/ioutil", false, function(Reader_) {
this.$val = this;
if (arguments.length === 0) {
this.Reader = $ifaceNil;
return;
}
this.Reader = Reader_;
});
devNull = $pkg.devNull = $newType(4, $kindInt, "ioutil.devNull", true, "io/ioutil", false, null);
sliceType = $sliceType($emptyInterface);
sliceType$1 = $sliceType($Uint8);
ptrType = $ptrType(sliceType$1);
ptrType$1 = $ptrType(os.File);
sliceType$3 = $sliceType($String);
readAll = function(r, capacity) {
var $ptr, _r, _tmp, _tmp$1, _tuple, b, buf, capacity, err, r, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; $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);
err = [err];
b = sliceType$1.nil;
err[0] = $ifaceNil;
buf = bytes.NewBuffer($makeSlice(sliceType$1, 0, $flatten64(capacity)));
$deferred.push([(function(err) { return function() {
var $ptr, _tuple, e, ok, panicErr;
e = $recover();
if ($interfaceIsEqual(e, $ifaceNil)) {
return;
}
_tuple = $assertType(e, $error, true);
panicErr = _tuple[0];
ok = _tuple[1];
if (ok && $interfaceIsEqual(panicErr, bytes.ErrTooLarge)) {
err[0] = panicErr;
} else {
$panic(e);
}
}; })(err), []]);
_r = buf.ReadFrom(r); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
err[0] = _tuple[1];
_tmp = buf.Bytes();
_tmp$1 = err[0];
b = _tmp;
err[0] = _tmp$1;
$s = -1; return [b, err[0]];
/* */ } 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.$ptr = $ptr; $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.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
ReadAll = function(r) {
var $ptr, _r, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: ReadAll }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.ReadAll = ReadAll;
ReadFile = function(filename) {
var $ptr, _r, _r$1, _r$2, _tuple, _tuple$1, err, err$1, f, fi, filename, n, size, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _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; $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);
_tuple = os.Open(filename);
f = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [sliceType$1.nil, err];
}
$deferred.push([$methodVal(f, "Close"), []]);
n = new $Int64(0, 0);
_r = f.Stat(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
fi = _tuple$1[0];
err$1 = _tuple$1[1];
/* */ if ($interfaceIsEqual(err$1, $ifaceNil)) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if ($interfaceIsEqual(err$1, $ifaceNil)) { */ case 2:
_r$1 = fi.Size(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
size = _r$1;
if ((size.$high < 0 || (size.$high === 0 && size.$low < 1000000000))) {
n = size;
}
/* } */ case 3:
_r$2 = readAll(f, new $Int64(n.$high + 0, n.$low + 512)); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$s = -1; return _r$2;
/* */ } 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.$ptr = $ptr; $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.err$1 = err$1; $f.f = f; $f.fi = fi; $f.filename = filename; $f.n = n; $f.size = size; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
$pkg.ReadFile = ReadFile;
nopCloser.ptr.prototype.Close = function() {
var $ptr;
return $ifaceNil;
};
nopCloser.prototype.Close = function() { return this.$val.Close(); };
NopCloser = function(r) {
var $ptr, r, x;
return (x = new nopCloser.ptr(r), new x.constructor.elem(x));
};
$pkg.NopCloser = NopCloser;
devNull.prototype.Write = function(p) {
var $ptr, p;
return [p.$length, $ifaceNil];
};
$ptrType(devNull).prototype.Write = function(p) { return new devNull(this.$get()).Write(p); };
devNull.prototype.WriteString = function(s) {
var $ptr, s;
return [s.length, $ifaceNil];
};
$ptrType(devNull).prototype.WriteString = function(s) { return new devNull(this.$get()).WriteString(s); };
devNull.prototype.ReadFrom = function(r) {
var $ptr, _r, _r$1, _tmp, _tmp$1, _tuple, bufp, err, n, r, readSize, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = new $Int64(0, 0);
err = $ifaceNil;
_r = blackHolePool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
bufp = $assertType(_r, ptrType);
readSize = 0;
/* while (true) { */ case 2:
_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; }
_tuple = _r$1;
readSize = _tuple[0];
err = _tuple[1];
n = (x = (new $Int64(0, readSize)), new $Int64(n.$high + x.$high, n.$low + x.$low));
if (!($interfaceIsEqual(err, $ifaceNil))) {
blackHolePool.Put(bufp);
if ($interfaceIsEqual(err, io.EOF)) {
_tmp = n;
_tmp$1 = $ifaceNil;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
$s = -1; return [n, err];
}
/* } */ $s = 2; continue; case 3:
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: devNull.prototype.ReadFrom }; } $f.$ptr = $ptr; $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;
};
$ptrType(devNull).prototype.ReadFrom = function(r) { return new devNull(this.$get()).ReadFrom(r); };
reseed = function() {
var $ptr, x, x$1;
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));
};
nextSuffix = function() {
var $ptr, _r, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = randmu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
r = rand;
if (r === 0) {
r = reseed();
}
r = ($imul(r, 1664525) >>> 0) + 1013904223 >>> 0;
rand = r;
$r = randmu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return $substring(strconv.Itoa((((1000000000 + (_r = r % 1000000000, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >>> 0) >> 0))), 1);
/* */ } return; } if ($f === undefined) { $f = { $blk: nextSuffix }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
TempFile = function(dir, prefix) {
var $ptr, _arg, _arg$1, _r, _r$1, _tuple, dir, err, f, i, name, nconflict, prefix, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; _r$1 = $f._r$1; _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:
f = ptrType$1.nil;
err = $ifaceNil;
if (dir === "") {
dir = os.TempDir();
}
nconflict = 0;
i = 0;
/* while (true) { */ case 1:
/* if (!(i < 10000)) { break; } */ if(!(i < 10000)) { $s = 2; continue; }
_arg = dir;
_r = nextSuffix(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_arg$1 = prefix + _r;
_r$1 = filepath.Join(new sliceType$3([_arg, _arg$1])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
name = _r$1;
_tuple = os.OpenFile(name, 194, 384);
f = _tuple[0];
err = _tuple[1];
/* */ if (os.IsExist(err)) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (os.IsExist(err)) { */ case 5:
nconflict = nconflict + (1) >> 0;
/* */ if (nconflict > 10) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (nconflict > 10) { */ case 7:
$r = randmu.Lock(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
rand = reseed();
$r = randmu.Unlock(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 8:
i = i + (1) >> 0;
/* continue; */ $s = 1; continue;
/* } */ case 6:
/* break; */ $s = 2; continue;
/* } */ $s = 1; continue; case 2:
$s = -1; return [f, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: TempFile }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f._r$1 = _r$1; $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;
};
$pkg.TempFile = TempFile;
nopCloser.methods = [{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
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)}];
nopCloser.init("", [{prop: "Reader", name: "", exported: true, typ: io.Reader, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = os.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = filepath.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sort.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strconv.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sync.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = time.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
rand = 0;
randmu = new sync.Mutex.ptr(0, 0);
blackHolePool = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
var $ptr, b, b$24ptr;
b = $makeSlice(sliceType$1, 8192);
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); })));
}));
$pkg.Discard = new devNull(0);
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["context"] = (function() {
var $pkg = {}, $init, errors, fmt, reflect, sync, time, Context, deadlineExceededError, emptyCtx, CancelFunc, canceler, cancelCtx, timerCtx, valueCtx, ptrType, ptrType$1, structType, ptrType$2, ptrType$3, ptrType$4, sliceType, ptrType$5, chanType, chanType$1, mapType, background, todo, x, Background, WithCancel, newCancelCtx, propagateCancel, parentCancelCtx, removeChild, WithDeadline, WithValue;
errors = $packages["errors"];
fmt = $packages["fmt"];
reflect = $packages["reflect"];
sync = $packages["sync"];
time = $packages["time"];
Context = $pkg.Context = $newType(8, $kindInterface, "context.Context", true, "context", true, null);
deadlineExceededError = $pkg.deadlineExceededError = $newType(0, $kindStruct, "context.deadlineExceededError", true, "context", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
emptyCtx = $pkg.emptyCtx = $newType(4, $kindInt, "context.emptyCtx", true, "context", false, null);
CancelFunc = $pkg.CancelFunc = $newType(4, $kindFunc, "context.CancelFunc", true, "context", true, null);
canceler = $pkg.canceler = $newType(8, $kindInterface, "context.canceler", true, "context", false, null);
cancelCtx = $pkg.cancelCtx = $newType(0, $kindStruct, "context.cancelCtx", true, "context", false, function(Context_, done_, mu_, children_, err_) {
this.$val = this;
if (arguments.length === 0) {
this.Context = $ifaceNil;
this.done = $chanNil;
this.mu = new sync.Mutex.ptr(0, 0);
this.children = false;
this.err = $ifaceNil;
return;
}
this.Context = Context_;
this.done = done_;
this.mu = mu_;
this.children = children_;
this.err = err_;
});
timerCtx = $pkg.timerCtx = $newType(0, $kindStruct, "context.timerCtx", true, "context", false, function(cancelCtx_, timer_, deadline_) {
this.$val = this;
if (arguments.length === 0) {
this.cancelCtx = new cancelCtx.ptr($ifaceNil, $chanNil, new sync.Mutex.ptr(0, 0), false, $ifaceNil);
this.timer = ptrType$5.nil;
this.deadline = new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil);
return;
}
this.cancelCtx = cancelCtx_;
this.timer = timer_;
this.deadline = deadline_;
});
valueCtx = $pkg.valueCtx = $newType(0, $kindStruct, "context.valueCtx", true, "context", false, function(Context_, key_, val_) {
this.$val = this;
if (arguments.length === 0) {
this.Context = $ifaceNil;
this.key = $ifaceNil;
this.val = $ifaceNil;
return;
}
this.Context = Context_;
this.key = key_;
this.val = val_;
});
ptrType = $ptrType(emptyCtx);
ptrType$1 = $ptrType(time.Location);
structType = $structType("", []);
ptrType$2 = $ptrType(cancelCtx);
ptrType$3 = $ptrType(timerCtx);
ptrType$4 = $ptrType(valueCtx);
sliceType = $sliceType($emptyInterface);
ptrType$5 = $ptrType(time.Timer);
chanType = $chanType(structType, false, true);
chanType$1 = $chanType(structType, false, false);
mapType = $mapType(canceler, structType);
deadlineExceededError.ptr.prototype.Error = function() {
var $ptr;
return "context deadline exceeded";
};
deadlineExceededError.prototype.Error = function() { return this.$val.Error(); };
deadlineExceededError.ptr.prototype.Timeout = function() {
var $ptr;
return true;
};
deadlineExceededError.prototype.Timeout = function() { return this.$val.Timeout(); };
deadlineExceededError.ptr.prototype.Temporary = function() {
var $ptr;
return true;
};
deadlineExceededError.prototype.Temporary = function() { return this.$val.Temporary(); };
$ptrType(emptyCtx).prototype.Deadline = function() {
var $ptr, deadline, ok;
deadline = new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil);
ok = false;
return [deadline, ok];
};
$ptrType(emptyCtx).prototype.Done = function() {
var $ptr;
return $chanNil;
};
$ptrType(emptyCtx).prototype.Err = function() {
var $ptr;
return $ifaceNil;
};
$ptrType(emptyCtx).prototype.Value = function(key) {
var $ptr, key;
return $ifaceNil;
};
$ptrType(emptyCtx).prototype.String = function() {
var $ptr, _1, e;
e = this;
_1 = e;
if (_1 === (background)) {
return "context.Background";
} else if (_1 === (todo)) {
return "context.TODO";
}
return "unknown empty Context";
};
Background = function() {
var $ptr;
return background;
};
$pkg.Background = Background;
WithCancel = function(parent) {
var $ptr, _tmp, _tmp$1, c, cancel, ctx, parent, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
c = [c];
ctx = $ifaceNil;
cancel = $throwNilPointerError;
c[0] = $clone(newCancelCtx(parent), cancelCtx);
$r = propagateCancel(parent, c[0]); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_tmp = c[0];
_tmp$1 = (function(c) { return function $b() {
var $ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
}; })(c);
ctx = _tmp;
cancel = _tmp$1;
$s = -1; return [ctx, cancel];
/* */ } return; } if ($f === undefined) { $f = { $blk: WithCancel }; } $f.$ptr = $ptr; $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;
};
$pkg.WithCancel = WithCancel;
newCancelCtx = function(parent) {
var $ptr, parent;
return new cancelCtx.ptr(parent, new $Chan(structType, 0), new sync.Mutex.ptr(0, 0), false, $ifaceNil);
};
propagateCancel = function(parent, child) {
var $ptr, _key, _r, _tuple, child, ok, p, parent, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
child = [child];
parent = [parent];
_r = parent[0].Done(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (_r === $chanNil) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (_r === $chanNil) { */ case 1:
$s = -1; return;
/* } */ case 2:
_tuple = parentCancelCtx(parent[0]);
p = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (ok) { */ case 4:
$r = p.mu.Lock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (!($interfaceIsEqual(p.err, $ifaceNil))) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (!($interfaceIsEqual(p.err, $ifaceNil))) { */ case 8:
$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; }
$s = 10; continue;
/* } else { */ case 9:
if (p.children === false) {
p.children = {};
}
_key = child[0]; (p.children || $throwRuntimeError("assignment to entry in nil map"))[canceler.keyFor(_key)] = { k: _key, v: new structType.ptr() };
/* } */ case 10:
$r = p.mu.Unlock(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 6; continue;
/* } else { */ case 5:
$go((function(child, parent) { return function $b() {
var $ptr, _arg, _r$1, _r$2, _r$3, _r$4, _selection, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_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; }
_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; }
_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; }
_selection = _r$3;
/* */ if (_selection[0] === 0) { $s = 4; continue; }
/* */ if (_selection[0] === 1) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (_selection[0] === 0) { */ case 4:
_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; }
_arg = _r$4;
$r = child[0].cancel(false, _arg); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 6; continue;
/* } else if (_selection[0] === 1) { */ case 5:
/* } */ case 6:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $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;
}; })(child, parent), []);
/* } */ case 6:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: propagateCancel }; } $f.$ptr = $ptr; $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;
};
parentCancelCtx = function(parent) {
var $ptr, _ref, c, c$1, c$2, c$3, parent;
while (true) {
_ref = parent;
if ($assertType(_ref, ptrType$2, true)[1]) {
c = _ref.$val;
return [c, true];
} else if ($assertType(_ref, ptrType$3, true)[1]) {
c$1 = _ref.$val;
return [c$1.cancelCtx, true];
} else if ($assertType(_ref, ptrType$4, true)[1]) {
c$2 = _ref.$val;
parent = c$2.Context;
} else {
c$3 = _ref;
return [ptrType$2.nil, false];
}
}
};
removeChild = function(parent, child) {
var $ptr, _tuple, child, ok, p, parent, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_tuple = parentCancelCtx(parent);
p = _tuple[0];
ok = _tuple[1];
if (!ok) {
$s = -1; return;
}
$r = p.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (!(p.children === false)) {
delete p.children[canceler.keyFor(child)];
}
$r = p.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: removeChild }; } $f.$ptr = $ptr; $f._tuple = _tuple; $f.child = child; $f.ok = ok; $f.p = p; $f.parent = parent; $f.$s = $s; $f.$r = $r; return $f;
};
cancelCtx.ptr.prototype.Done = function() {
var $ptr, c;
c = this;
return c.done;
};
cancelCtx.prototype.Done = function() { return this.$val.Done(); };
cancelCtx.ptr.prototype.Err = function() {
var $ptr, c, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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);
c = this;
$r = c.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(c.mu, "Unlock"), []]);
$s = -1; return c.err;
/* */ } 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.$ptr = $ptr; $f.c = c; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
cancelCtx.prototype.Err = function() { return this.$val.Err(); };
cancelCtx.ptr.prototype.String = function() {
var $ptr, _r, c, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: cancelCtx.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
};
cancelCtx.prototype.String = function() { return this.$val.String(); };
cancelCtx.ptr.prototype.cancel = function(removeFromParent, err) {
var $ptr, _entry, _i, _keys, _ref, c, child, err, removeFromParent, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
c = this;
if ($interfaceIsEqual(err, $ifaceNil)) {
$panic(new $String("context: internal error: missing cancel error"));
}
$r = c.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (!($interfaceIsEqual(c.err, $ifaceNil))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!($interfaceIsEqual(c.err, $ifaceNil))) { */ case 2:
$r = c.mu.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } */ case 3:
c.err = err;
$close(c.done);
_ref = c.children;
_i = 0;
_keys = $keys(_ref);
/* while (true) { */ case 5:
/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 6; continue; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
/* continue; */ $s = 5; continue;
}
child = _entry.k;
$r = child.cancel(false, err); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_i++;
/* } */ $s = 5; continue; case 6:
c.children = false;
$r = c.mu.Unlock(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (removeFromParent) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (removeFromParent) { */ case 9:
$r = removeChild(c.Context, c); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 10:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: cancelCtx.ptr.prototype.cancel }; } $f.$ptr = $ptr; $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;
};
cancelCtx.prototype.cancel = function(removeFromParent, err) { return this.$val.cancel(removeFromParent, err); };
WithDeadline = function(parent, deadline) {
var $ptr, _r, _r$1, _tuple, c, cur, d, deadline, ok, parent, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; c = $f.c; cur = $f.cur; d = $f.d; deadline = $f.deadline; 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);
c = [c];
_r = parent.Deadline(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
cur = $clone(_tuple[0], time.Time);
ok = _tuple[1];
/* */ if (ok && $clone(cur, time.Time).Before($clone(deadline, time.Time))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (ok && $clone(cur, time.Time).Before($clone(deadline, time.Time))) { */ case 2:
_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; }
$s = -1; return _r$1;
/* } */ case 3:
c[0] = new timerCtx.ptr($clone(newCancelCtx(parent), cancelCtx), ptrType$5.nil, $clone(deadline, time.Time));
$r = propagateCancel(parent, c[0]); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
d = time.Until($clone(deadline, time.Time));
/* */ if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) { */ case 6:
$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; }
$s = -1; return [c[0], (function(c) { return function $b() {
var $ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
}; })(c)];
/* } */ case 7:
$r = c[0].cancelCtx.mu.Lock(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(c[0].cancelCtx.mu, "Unlock"), []]);
if ($interfaceIsEqual(c[0].cancelCtx.err, $ifaceNil)) {
c[0].timer = time.AfterFunc(d, (function(c) { return function $b() {
var $ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
}; })(c));
}
$s = -1; return [c[0], (function(c) { return function $b() {
var $ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
}; })(c)];
/* */ } return; } } catch(err) { $err = err; $s = -1; return [$ifaceNil, $throwNilPointerError]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: WithDeadline }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.c = c; $f.cur = cur; $f.d = d; $f.deadline = deadline; $f.ok = ok; $f.parent = parent; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
$pkg.WithDeadline = WithDeadline;
timerCtx.ptr.prototype.Deadline = function() {
var $ptr, _tmp, _tmp$1, c, deadline, ok;
deadline = new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil);
ok = false;
c = this;
_tmp = $clone(c.deadline, time.Time);
_tmp$1 = true;
time.Time.copy(deadline, _tmp);
ok = _tmp$1;
return [deadline, ok];
};
timerCtx.prototype.Deadline = function() { return this.$val.Deadline(); };
timerCtx.ptr.prototype.String = function() {
var $ptr, _r, c, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: timerCtx.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
};
timerCtx.prototype.String = function() { return this.$val.String(); };
timerCtx.ptr.prototype.cancel = function(removeFromParent, err) {
var $ptr, c, err, removeFromParent, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; c = $f.c; err = $f.err; removeFromParent = $f.removeFromParent; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
$r = c.cancelCtx.cancel(false, err); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (removeFromParent) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (removeFromParent) { */ case 2:
$r = removeChild(c.cancelCtx.Context, c); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 3:
$r = c.cancelCtx.mu.Lock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (!(c.timer === ptrType$5.nil)) {
c.timer.Stop();
c.timer = ptrType$5.nil;
}
$r = c.cancelCtx.mu.Unlock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: timerCtx.ptr.prototype.cancel }; } $f.$ptr = $ptr; $f.c = c; $f.err = err; $f.removeFromParent = removeFromParent; $f.$s = $s; $f.$r = $r; return $f;
};
timerCtx.prototype.cancel = function(removeFromParent, err) { return this.$val.cancel(removeFromParent, err); };
WithValue = function(parent, key, val) {
var $ptr, _r, key, parent, val, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
if ($interfaceIsEqual(key, $ifaceNil)) {
$panic(new $String("nil key"));
}
_r = reflect.TypeOf(key).Comparable(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (!_r) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!_r) { */ case 1:
$panic(new $String("key is not comparable"));
/* } */ case 2:
$s = -1; return new valueCtx.ptr(parent, key, val);
/* */ } return; } if ($f === undefined) { $f = { $blk: WithValue }; } $f.$ptr = $ptr; $f._r = _r; $f.key = key; $f.parent = parent; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.WithValue = WithValue;
valueCtx.ptr.prototype.String = function() {
var $ptr, _r, c, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: valueCtx.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
};
valueCtx.prototype.String = function() { return this.$val.String(); };
valueCtx.ptr.prototype.Value = function(key) {
var $ptr, _r, c, key, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; key = $f.key; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
if ($interfaceIsEqual(c.key, key)) {
$s = -1; return c.val;
}
_r = c.Context.Value(key); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: valueCtx.ptr.prototype.Value }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.key = key; $f.$s = $s; $f.$r = $r; return $f;
};
valueCtx.prototype.Value = function(key) { return this.$val.Value(key); };
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)}];
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)}];
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)}];
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)}];
ptrType$4.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Value", name: "Value", pkg: "", typ: $funcType([$emptyInterface], [$emptyInterface], false)}];
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)}]);
deadlineExceededError.init("", []);
CancelFunc.init([], [], false);
canceler.init([{prop: "Done", name: "Done", pkg: "", typ: $funcType([], [chanType], false)}, {prop: "cancel", name: "cancel", pkg: "context", typ: $funcType([$Bool, $error], [], false)}]);
cancelCtx.init("context", [{prop: "Context", name: "", exported: true, typ: Context, tag: ""}, {prop: "done", name: "done", exported: false, typ: chanType$1, tag: ""}, {prop: "mu", name: "mu", exported: false, typ: sync.Mutex, tag: ""}, {prop: "children", name: "children", exported: false, typ: mapType, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}]);
timerCtx.init("context", [{prop: "cancelCtx", name: "", exported: false, typ: cancelCtx, tag: ""}, {prop: "timer", name: "timer", exported: false, typ: ptrType$5, tag: ""}, {prop: "deadline", name: "deadline", exported: false, typ: time.Time, tag: ""}]);
valueCtx.init("context", [{prop: "Context", name: "", exported: true, typ: Context, tag: ""}, {prop: "key", name: "key", exported: false, typ: $emptyInterface, tag: ""}, {prop: "val", name: "val", exported: false, typ: $emptyInterface, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = reflect.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sync.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = time.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$pkg.Canceled = errors.New("context canceled");
$pkg.DeadlineExceeded = (x = new deadlineExceededError.ptr(), new x.constructor.elem(x));
background = $newDataPointer(0, ptrType);
todo = $newDataPointer(0, ptrType);
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["internal/nettrace"] = (function() {
var $pkg = {}, $init, TraceKey, LookupIPAltResolverKey, Trace, funcType, sliceType, funcType$1, funcType$2, funcType$3;
TraceKey = $pkg.TraceKey = $newType(0, $kindStruct, "nettrace.TraceKey", true, "internal/nettrace", true, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
LookupIPAltResolverKey = $pkg.LookupIPAltResolverKey = $newType(0, $kindStruct, "nettrace.LookupIPAltResolverKey", true, "internal/nettrace", true, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
Trace = $pkg.Trace = $newType(0, $kindStruct, "nettrace.Trace", true, "internal/nettrace", true, function(DNSStart_, DNSDone_, ConnectStart_, ConnectDone_) {
this.$val = this;
if (arguments.length === 0) {
this.DNSStart = $throwNilPointerError;
this.DNSDone = $throwNilPointerError;
this.ConnectStart = $throwNilPointerError;
this.ConnectDone = $throwNilPointerError;
return;
}
this.DNSStart = DNSStart_;
this.DNSDone = DNSDone_;
this.ConnectStart = ConnectStart_;
this.ConnectDone = ConnectDone_;
});
funcType = $funcType([$String], [], false);
sliceType = $sliceType($emptyInterface);
funcType$1 = $funcType([sliceType, $Bool, $error], [], false);
funcType$2 = $funcType([$String, $String], [], false);
funcType$3 = $funcType([$String, $String, $error], [], false);
TraceKey.init("", []);
LookupIPAltResolverKey.init("", []);
Trace.init("", [{prop: "DNSStart", name: "DNSStart", exported: true, typ: funcType, tag: ""}, {prop: "DNSDone", name: "DNSDone", exported: true, typ: funcType$1, tag: ""}, {prop: "ConnectStart", name: "ConnectStart", exported: true, typ: funcType$2, tag: ""}, {prop: "ConnectDone", name: "ConnectDone", exported: true, typ: funcType$3, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["internal/singleflight"] = (function() {
var $pkg = {}, $init, sync, call, Group, Result, ptrType, arrayType, chanType, sliceType, funcType, chanType$1, ptrType$1, mapType;
sync = $packages["sync"];
call = $pkg.call = $newType(0, $kindStruct, "singleflight.call", true, "internal/singleflight", false, function(wg_, val_, err_, dups_, chans_) {
this.$val = this;
if (arguments.length === 0) {
this.wg = new sync.WaitGroup.ptr(0, $chanNil, arrayType.zero(), 0);
this.val = $ifaceNil;
this.err = $ifaceNil;
this.dups = 0;
this.chans = sliceType.nil;
return;
}
this.wg = wg_;
this.val = val_;
this.err = err_;
this.dups = dups_;
this.chans = chans_;
});
Group = $pkg.Group = $newType(0, $kindStruct, "singleflight.Group", true, "internal/singleflight", true, function(mu_, m_) {
this.$val = this;
if (arguments.length === 0) {
this.mu = new sync.Mutex.ptr(0, 0);
this.m = false;
return;
}
this.mu = mu_;
this.m = m_;
});
Result = $pkg.Result = $newType(0, $kindStruct, "singleflight.Result", true, "internal/singleflight", true, function(Val_, Err_, Shared_) {
this.$val = this;
if (arguments.length === 0) {
this.Val = $ifaceNil;
this.Err = $ifaceNil;
this.Shared = false;
return;
}
this.Val = Val_;
this.Err = Err_;
this.Shared = Shared_;
});
ptrType = $ptrType(call);
arrayType = $arrayType($Uint8, 12);
chanType = $chanType(Result, true, false);
sliceType = $sliceType(chanType);
funcType = $funcType([], [$emptyInterface, $error], false);
chanType$1 = $chanType(Result, false, true);
ptrType$1 = $ptrType(Group);
mapType = $mapType($String, ptrType);
Group.ptr.prototype.Do = function(key, fn) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
v = $ifaceNil;
err = $ifaceNil;
shared = false;
g = this;
$r = g.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (g.m === false) {
g.m = {};
}
_tuple = (_entry = g.m[$String.keyFor(key)], _entry !== undefined ? [_entry.v, true] : [ptrType.nil, false]);
c = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (ok) { */ case 2:
c.dups = c.dups + (1) >> 0;
$r = g.mu.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = c.wg.Wait(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_tmp = c.val;
_tmp$1 = c.err;
_tmp$2 = true;
v = _tmp;
err = _tmp$1;
shared = _tmp$2;
$s = -1; return [v, err, shared];
/* } */ case 3:
c$1 = new call.ptr(new sync.WaitGroup.ptr(0, $chanNil, arrayType.zero(), 0), $ifaceNil, $ifaceNil, 0, sliceType.nil);
c$1.wg.Add(1);
_key = key; (g.m || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: c$1 };
$r = g.mu.Unlock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$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; }
_tmp$3 = c$1.val;
_tmp$4 = c$1.err;
_tmp$5 = c$1.dups > 0;
v = _tmp$3;
err = _tmp$4;
shared = _tmp$5;
$s = -1; return [v, err, shared];
/* */ } return; } if ($f === undefined) { $f = { $blk: Group.ptr.prototype.Do }; } $f.$ptr = $ptr; $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;
};
Group.prototype.Do = function(key, fn) { return this.$val.Do(key, fn); };
Group.ptr.prototype.DoChan = function(key, fn) {
var $ptr, _entry, _key, _tuple, c, c$1, ch, fn, g, key, ok, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
g = this;
ch = new $Chan(Result, 1);
$r = g.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (g.m === false) {
g.m = {};
}
_tuple = (_entry = g.m[$String.keyFor(key)], _entry !== undefined ? [_entry.v, true] : [ptrType.nil, false]);
c = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (ok) { */ case 2:
c.dups = c.dups + (1) >> 0;
c.chans = $append(c.chans, ch);
$r = g.mu.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return ch;
/* } */ case 3:
c$1 = new call.ptr(new sync.WaitGroup.ptr(0, $chanNil, arrayType.zero(), 0), $ifaceNil, $ifaceNil, 0, new sliceType([ch]));
c$1.wg.Add(1);
_key = key; (g.m || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: c$1 };
$r = g.mu.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$go($methodVal(g, "doCall"), [c$1, key, fn]);
$s = -1; return ch;
/* */ } return; } if ($f === undefined) { $f = { $blk: Group.ptr.prototype.DoChan }; } $f.$ptr = $ptr; $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;
};
Group.prototype.DoChan = function(key, fn) { return this.$val.DoChan(key, fn); };
Group.ptr.prototype.doCall = function(c, key, fn) {
var $ptr, _i, _r, _ref, _tuple, c, ch, fn, g, key, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
g = this;
_r = fn(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
c.val = _tuple[0];
c.err = _tuple[1];
c.wg.Done();
$r = g.mu.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
delete g.m[$String.keyFor(key)];
_ref = c.chans;
_i = 0;
/* while (true) { */ case 3:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; }
ch = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
$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; }
_i++;
/* } */ $s = 3; continue; case 4:
$r = g.mu.Unlock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Group.ptr.prototype.doCall }; } $f.$ptr = $ptr; $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;
};
Group.prototype.doCall = function(c, key, fn) { return this.$val.doCall(c, key, fn); };
Group.ptr.prototype.Forget = function(key) {
var $ptr, g, key, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; g = $f.g; key = $f.key; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
g = this;
$r = g.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
delete g.m[$String.keyFor(key)];
$r = g.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Group.ptr.prototype.Forget }; } $f.$ptr = $ptr; $f.g = g; $f.key = key; $f.$s = $s; $f.$r = $r; return $f;
};
Group.prototype.Forget = function(key) { return this.$val.Forget(key); };
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], false)}, {prop: "doCall", name: "doCall", pkg: "internal/singleflight", typ: $funcType([ptrType, $String, funcType], [], false)}, {prop: "Forget", name: "Forget", pkg: "", typ: $funcType([$String], [], false)}];
call.init("internal/singleflight", [{prop: "wg", name: "wg", exported: false, typ: sync.WaitGroup, tag: ""}, {prop: "val", name: "val", exported: false, typ: $emptyInterface, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}, {prop: "dups", name: "dups", exported: false, typ: $Int, tag: ""}, {prop: "chans", name: "chans", exported: false, typ: sliceType, tag: ""}]);
Group.init("internal/singleflight", [{prop: "mu", name: "mu", exported: false, typ: sync.Mutex, tag: ""}, {prop: "m", name: "m", exported: false, typ: mapType, tag: ""}]);
Result.init("", [{prop: "Val", name: "Val", exported: true, typ: $emptyInterface, tag: ""}, {prop: "Err", name: "Err", exported: true, typ: $error, tag: ""}, {prop: "Shared", name: "Shared", exported: true, typ: $Bool, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = sync.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["math/rand"] = (function() {
var $pkg = {}, $init, nosync, math, Source, Source64, Rand, lockedSource, rngSource, arrayType, ptrType, ptrType$1, sliceType, ptrType$2, ptrType$3, sliceType$1, ptrType$5, ke, we, fe, kn, wn, fn, globalRand, rng_cooked, absInt32, NewSource, New, read, Intn, seedrand;
nosync = $packages["github.com/gopherjs/gopherjs/nosync"];
math = $packages["math"];
Source = $pkg.Source = $newType(8, $kindInterface, "rand.Source", true, "math/rand", true, null);
Source64 = $pkg.Source64 = $newType(8, $kindInterface, "rand.Source64", true, "math/rand", true, null);
Rand = $pkg.Rand = $newType(0, $kindStruct, "rand.Rand", true, "math/rand", true, function(src_, s64_, readVal_, readPos_) {
this.$val = this;
if (arguments.length === 0) {
this.src = $ifaceNil;
this.s64 = $ifaceNil;
this.readVal = new $Int64(0, 0);
this.readPos = 0;
return;
}
this.src = src_;
this.s64 = s64_;
this.readVal = readVal_;
this.readPos = readPos_;
});
lockedSource = $pkg.lockedSource = $newType(0, $kindStruct, "rand.lockedSource", true, "math/rand", false, function(lk_, src_) {
this.$val = this;
if (arguments.length === 0) {
this.lk = new nosync.Mutex.ptr(false);
this.src = $ifaceNil;
return;
}
this.lk = lk_;
this.src = src_;
});
rngSource = $pkg.rngSource = $newType(0, $kindStruct, "rand.rngSource", true, "math/rand", false, function(tap_, feed_, vec_) {
this.$val = this;
if (arguments.length === 0) {
this.tap = 0;
this.feed = 0;
this.vec = arrayType.zero();
return;
}
this.tap = tap_;
this.feed = feed_;
this.vec = vec_;
});
arrayType = $arrayType($Int64, 607);
ptrType = $ptrType(lockedSource);
ptrType$1 = $ptrType($Int8);
sliceType = $sliceType($Int);
ptrType$2 = $ptrType($Int64);
ptrType$3 = $ptrType(Rand);
sliceType$1 = $sliceType($Uint8);
ptrType$5 = $ptrType(rngSource);
Rand.ptr.prototype.ExpFloat64 = function() {
var $ptr, _r, _r$1, _r$2, _r$3, i, j, r, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
r = this;
/* while (true) { */ case 1:
_r = r.Uint32(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
j = _r;
i = (j & 255) >>> 0;
x = (j) * (((i < 0 || i >= we.length) ? ($throwRuntimeError("index out of range"), undefined) : we[i]));
if (j < ((i < 0 || i >= ke.length) ? ($throwRuntimeError("index out of range"), undefined) : ke[i])) {
$s = -1; return x;
}
/* */ if (i === 0) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (i === 0) { */ case 4:
_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; }
_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; }
$s = -1; return 7.69711747013105 - _r$2;
/* } */ case 5:
_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; }
/* */ 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; }
/* */ $s = 9; continue;
/* 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:
$s = -1; return x;
/* } */ case 9:
/* } */ $s = 1; continue; case 2:
$s = -1; return 0;
/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.ExpFloat64 }; } $f.$ptr = $ptr; $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;
};
Rand.prototype.ExpFloat64 = function() { return this.$val.ExpFloat64(); };
absInt32 = function(i) {
var $ptr, i;
if (i < 0) {
return ((-i >>> 0));
}
return ((i >>> 0));
};
Rand.ptr.prototype.NormFloat64 = function() {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, i, j, r, x, x$1, y, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
r = this;
/* while (true) { */ case 1:
_r = r.Uint32(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
j = ((_r >> 0));
i = j & 127;
x = (j) * (((i < 0 || i >= wn.length) ? ($throwRuntimeError("index out of range"), undefined) : wn[i]));
if (absInt32(j) < ((i < 0 || i >= kn.length) ? ($throwRuntimeError("index out of range"), undefined) : kn[i])) {
$s = -1; return x;
}
/* */ if (i === 0) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (i === 0) { */ case 4:
/* while (true) { */ case 6:
_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; }
_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; }
x = -_r$2 * 0.29047645161474317;
_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; }
_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; }
y = -_r$4;
if (y + y >= x * x) {
/* break; */ $s = 7; continue;
}
/* } */ $s = 6; continue; case 7:
if (j > 0) {
$s = -1; return 3.442619855899 + x;
}
$s = -1; return -3.442619855899 - x;
/* } */ case 5:
_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; }
/* */ 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; }
/* */ $s = 13; continue;
/* 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:
$s = -1; return x;
/* } */ case 13:
/* } */ $s = 1; continue; case 2:
$s = -1; return 0;
/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.NormFloat64 }; } $f.$ptr = $ptr; $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;
};
Rand.prototype.NormFloat64 = function() { return this.$val.NormFloat64(); };
NewSource = function(seed) {
var $ptr, rng, seed;
rng = new rngSource.ptr(0, 0, arrayType.zero());
rng.Seed(seed);
return rng;
};
$pkg.NewSource = NewSource;
New = function(src) {
var $ptr, _tuple, s64, src;
_tuple = $assertType(src, Source64, true);
s64 = _tuple[0];
return new Rand.ptr(src, s64, new $Int64(0, 0), 0);
};
$pkg.New = New;
Rand.ptr.prototype.Seed = function(seed) {
var $ptr, _tuple, lk, ok, r, seed, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
r = this;
_tuple = $assertType(r.src, ptrType, true);
lk = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (ok) { */ case 1:
$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; }
$s = -1; return;
/* } */ case 2:
$r = r.src.Seed(seed); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
r.readPos = 0;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Seed }; } $f.$ptr = $ptr; $f._tuple = _tuple; $f.lk = lk; $f.ok = ok; $f.r = r; $f.seed = seed; $f.$s = $s; $f.$r = $r; return $f;
};
Rand.prototype.Seed = function(seed) { return this.$val.Seed(seed); };
Rand.ptr.prototype.Int63 = function() {
var $ptr, _r, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
_r = r.src.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Int63 }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
Rand.prototype.Int63 = function() { return this.$val.Int63(); };
Rand.ptr.prototype.Uint32 = function() {
var $ptr, _r, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
_r = r.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return (($shiftRightInt64(_r, 31).$low >>> 0));
/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Uint32 }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
Rand.prototype.Uint32 = function() { return this.$val.Uint32(); };
Rand.ptr.prototype.Uint64 = function() {
var $ptr, _r, _r$1, _r$2, r, x, x$1, x$2, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
r = this;
/* */ if (!($interfaceIsEqual(r.s64, $ifaceNil))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!($interfaceIsEqual(r.s64, $ifaceNil))) { */ case 1:
_r = r.s64.Uint64(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 2:
_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; }
_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; }
$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));
/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Uint64 }; } $f.$ptr = $ptr; $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;
};
Rand.prototype.Uint64 = function() { return this.$val.Uint64(); };
Rand.ptr.prototype.Int31 = function() {
var $ptr, _r, r, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
_r = r.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return (((x = $shiftRightInt64(_r, 32), x.$low + ((x.$high >> 31) * 4294967296)) >> 0));
/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Int31 }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
Rand.prototype.Int31 = function() { return this.$val.Int31(); };
Rand.ptr.prototype.Int = function() {
var $ptr, _r, r, u, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; u = $f.u; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
_r = r.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
u = ((_r.$low >>> 0));
$s = -1; return ((((u << 1 >>> 0) >>> 1 >>> 0) >> 0));
/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Int }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.u = u; $f.$s = $s; $f.$r = $r; return $f;
};
Rand.prototype.Int = function() { return this.$val.Int(); };
Rand.ptr.prototype.Int63n = function(n) {
var $ptr, _r, _r$1, _r$2, max, n, r, v, x, x$1, x$2, x$3, x$4, x$5, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
r = this;
if ((n.$high < 0 || (n.$high === 0 && n.$low <= 0))) {
$panic(new $String("invalid argument to Int63n"));
}
/* */ 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; }
/* */ $s = 2; continue;
/* 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:
_r = r.Int63(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$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));
/* } */ case 2:
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)));
_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; }
v = _r$1;
/* while (true) { */ case 5:
/* 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; }
_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; }
v = _r$2;
/* } */ $s = 5; continue; case 6:
$s = -1; return $div64(v, n, true);
/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Int63n }; } $f.$ptr = $ptr; $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;
};
Rand.prototype.Int63n = function(n) { return this.$val.Int63n(n); };
Rand.ptr.prototype.Int31n = function(n) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, max, n, r, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
r = this;
if (n <= 0) {
$panic(new $String("invalid argument to Int31n"));
}
/* */ if ((n & ((n - 1 >> 0))) === 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if ((n & ((n - 1 >> 0))) === 0) { */ case 1:
_r = r.Int31(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r & ((n - 1 >> 0));
/* } */ case 2:
max = (((2147483647 - (_r$1 = 2147483648 % ((n >>> 0)), _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) >>> 0) >> 0));
_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; }
v = _r$2;
/* while (true) { */ case 5:
/* if (!(v > max)) { break; } */ if(!(v > max)) { $s = 6; continue; }
_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; }
v = _r$3;
/* } */ $s = 5; continue; case 6:
$s = -1; return (_r$4 = v % n, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero"));
/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Int31n }; } $f.$ptr = $ptr; $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;
};
Rand.prototype.Int31n = function(n) { return this.$val.Int31n(n); };
Rand.ptr.prototype.Intn = function(n) {
var $ptr, _r, _r$1, n, r, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
r = this;
if (n <= 0) {
$panic(new $String("invalid argument to Intn"));
}
/* */ if (n <= 2147483647) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (n <= 2147483647) { */ case 1:
_r = r.Int31n(((n >> 0))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return ((_r >> 0));
/* } */ case 2:
_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; }
$s = -1; return (((x = _r$1, x.$low + ((x.$high >> 31) * 4294967296)) >> 0));
/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Intn }; } $f.$ptr = $ptr; $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;
};
Rand.prototype.Intn = function(n) { return this.$val.Intn(n); };
Rand.ptr.prototype.Float64 = function() {
var $ptr, _r, f, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; f = $f.f; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
/* again: */ case 1:
_r = r.Int63(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
f = ($flatten64(_r)) / 9.223372036854776e+18;
/* */ if (f === 1) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (f === 1) { */ case 3:
/* goto again */ $s = 1; continue;
/* } */ case 4:
$s = -1; return f;
/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Float64 }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
Rand.prototype.Float64 = function() { return this.$val.Float64(); };
Rand.ptr.prototype.Float32 = function() {
var $ptr, _r, f, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; f = $f.f; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
/* again: */ case 1:
_r = r.Float64(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
f = ($fround(_r));
/* */ if (f === 1) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (f === 1) { */ case 3:
/* goto again */ $s = 1; continue;
/* } */ case 4:
$s = -1; return f;
/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Float32 }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
Rand.prototype.Float32 = function() { return this.$val.Float32(); };
Rand.ptr.prototype.Perm = function(n) {
var $ptr, _r, i, j, m, n, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
r = this;
m = $makeSlice(sliceType, n);
i = 0;
/* while (true) { */ case 1:
/* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 2; continue; }
_r = r.Intn(i + 1 >> 0); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
j = _r;
((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]));
((j < 0 || j >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + j] = i);
i = i + (1) >> 0;
/* } */ $s = 1; continue; case 2:
$s = -1; return m;
/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Perm }; } $f.$ptr = $ptr; $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;
};
Rand.prototype.Perm = function(n) { return this.$val.Perm(n); };
Rand.ptr.prototype.Read = function(p) {
var $ptr, _r, _r$1, _tuple, _tuple$1, _tuple$2, err, lk, n, ok, p, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
r = this;
_tuple = $assertType(r.src, ptrType, true);
lk = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (ok) { */ case 1:
_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; }
_tuple$1 = _r;
n = _tuple$1[0];
err = _tuple$1[1];
$s = -1; return [n, err];
/* } */ case 2:
_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; }
_tuple$2 = _r$1;
n = _tuple$2[0];
err = _tuple$2[1];
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Read }; } $f.$ptr = $ptr; $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;
};
Rand.prototype.Read = function(p) { return this.$val.Read(p); };
read = function(p, int63, readVal, readPos) {
var $ptr, _r, err, int63, n, p, pos, readPos, readVal, val, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
pos = readPos.$get();
val = readVal.$get();
n = 0;
/* while (true) { */ case 1:
/* if (!(n < p.$length)) { break; } */ if(!(n < p.$length)) { $s = 2; continue; }
/* */ if (pos === 0) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (pos === 0) { */ case 3:
_r = int63(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
val = _r;
pos = 7;
/* } */ case 4:
((n < 0 || n >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + n] = ((val.$low << 24 >>> 24)));
val = $shiftRightInt64(val, (8));
pos = pos - (1) << 24 >> 24;
n = n + (1) >> 0;
/* } */ $s = 1; continue; case 2:
readPos.$set(pos);
readVal.$set(val);
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: read }; } $f.$ptr = $ptr; $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;
};
Intn = function(n) {
var $ptr, _r, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = globalRand.Intn(n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Intn }; } $f.$ptr = $ptr; $f._r = _r; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Intn = Intn;
lockedSource.ptr.prototype.Int63 = function() {
var $ptr, _r, n, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
n = new $Int64(0, 0);
r = this;
r.lk.Lock();
_r = r.src.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
n = _r;
r.lk.Unlock();
$s = -1; return n;
/* */ } return; } if ($f === undefined) { $f = { $blk: lockedSource.ptr.prototype.Int63 }; } $f.$ptr = $ptr; $f._r = _r; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
lockedSource.prototype.Int63 = function() { return this.$val.Int63(); };
lockedSource.ptr.prototype.Uint64 = function() {
var $ptr, _r, n, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
n = new $Uint64(0, 0);
r = this;
r.lk.Lock();
_r = r.src.Uint64(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
n = _r;
r.lk.Unlock();
$s = -1; return n;
/* */ } return; } if ($f === undefined) { $f = { $blk: lockedSource.ptr.prototype.Uint64 }; } $f.$ptr = $ptr; $f._r = _r; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
lockedSource.prototype.Uint64 = function() { return this.$val.Uint64(); };
lockedSource.ptr.prototype.Seed = function(seed) {
var $ptr, r, seed, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; r = $f.r; seed = $f.seed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
r.lk.Lock();
$r = r.src.Seed(seed); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
r.lk.Unlock();
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: lockedSource.ptr.prototype.Seed }; } $f.$ptr = $ptr; $f.r = r; $f.seed = seed; $f.$s = $s; $f.$r = $r; return $f;
};
lockedSource.prototype.Seed = function(seed) { return this.$val.Seed(seed); };
lockedSource.ptr.prototype.seedPos = function(seed, readPos) {
var $ptr, r, readPos, seed, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; r = $f.r; readPos = $f.readPos; seed = $f.seed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
r.lk.Lock();
$r = r.src.Seed(seed); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
readPos.$set(0);
r.lk.Unlock();
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: lockedSource.ptr.prototype.seedPos }; } $f.$ptr = $ptr; $f.r = r; $f.readPos = readPos; $f.seed = seed; $f.$s = $s; $f.$r = $r; return $f;
};
lockedSource.prototype.seedPos = function(seed, readPos) { return this.$val.seedPos(seed, readPos); };
lockedSource.ptr.prototype.read = function(p, readVal, readPos) {
var $ptr, _r, _tuple, err, n, p, r, readPos, readVal, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
r = this;
r.lk.Lock();
_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; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
r.lk.Unlock();
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: lockedSource.ptr.prototype.read }; } $f.$ptr = $ptr; $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;
};
lockedSource.prototype.read = function(p, readVal, readPos) { return this.$val.read(p, readVal, readPos); };
seedrand = function(x) {
var $ptr, _q, _r, hi, lo, x;
hi = (_q = x / 44488, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
lo = (_r = x % 44488, _r === _r ? _r : $throwRuntimeError("integer divide by zero"));
x = ($imul(48271, lo)) - ($imul(3399, hi)) >> 0;
if (x < 0) {
x = x + (2147483647) >> 0;
}
return x;
};
rngSource.ptr.prototype.Seed = function(seed) {
var $ptr, i, rng, seed, u, x, x$1, x$2, x$3, x$4, x$5;
rng = this;
rng.tap = 0;
rng.feed = 334;
seed = $div64(seed, new $Int64(0, 2147483647), true);
if ((seed.$high < 0 || (seed.$high === 0 && seed.$low < 0))) {
seed = (x = new $Int64(0, 2147483647), new $Int64(seed.$high + x.$high, seed.$low + x.$low));
}
if ((seed.$high === 0 && seed.$low === 0)) {
seed = new $Int64(0, 89482311);
}
x$1 = (((seed.$low + ((seed.$high >> 31) * 4294967296)) >> 0));
i = -20;
while (true) {
if (!(i < 607)) { break; }
x$1 = seedrand(x$1);
if (i >= 0) {
u = new $Int64(0, 0);
u = $shiftLeft64((new $Int64(0, x$1)), 40);
x$1 = seedrand(x$1);
u = (x$2 = $shiftLeft64((new $Int64(0, x$1)), 20), new $Int64(u.$high ^ x$2.$high, (u.$low ^ x$2.$low) >>> 0));
x$1 = seedrand(x$1);
u = (x$3 = (new $Int64(0, x$1)), new $Int64(u.$high ^ x$3.$high, (u.$low ^ x$3.$low) >>> 0));
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));
(x$5 = rng.vec, ((i < 0 || i >= x$5.length) ? ($throwRuntimeError("index out of range"), undefined) : x$5[i] = u));
}
i = i + (1) >> 0;
}
};
rngSource.prototype.Seed = function(seed) { return this.$val.Seed(seed); };
rngSource.ptr.prototype.Int63 = function() {
var $ptr, rng, x, x$1;
rng = this;
return ((x = (x$1 = rng.Uint64(), new $Uint64(x$1.$high & 2147483647, (x$1.$low & 4294967295) >>> 0)), new $Int64(x.$high, x.$low)));
};
rngSource.prototype.Int63 = function() { return this.$val.Int63(); };
rngSource.ptr.prototype.Uint64 = function() {
var $ptr, rng, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8;
rng = this;
rng.tap = rng.tap - (1) >> 0;
if (rng.tap < 0) {
rng.tap = rng.tap + (607) >> 0;
}
rng.feed = rng.feed - (1) >> 0;
if (rng.feed < 0) {
rng.feed = rng.feed + (607) >> 0;
}
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));
(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));
return (new $Uint64(x$6.$high, x$6.$low));
};
rngSource.prototype.Uint64 = function() { return this.$val.Uint64(); };
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: "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: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}];
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)}];
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)}];
Source.init([{prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}]);
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)}]);
Rand.init("math/rand", [{prop: "src", name: "src", exported: false, typ: Source, tag: ""}, {prop: "s64", name: "s64", exported: false, typ: Source64, tag: ""}, {prop: "readVal", name: "readVal", exported: false, typ: $Int64, tag: ""}, {prop: "readPos", name: "readPos", exported: false, typ: $Int8, tag: ""}]);
lockedSource.init("math/rand", [{prop: "lk", name: "lk", exported: false, typ: nosync.Mutex, tag: ""}, {prop: "src", name: "src", exported: false, typ: Source64, tag: ""}]);
rngSource.init("math/rand", [{prop: "tap", name: "tap", exported: false, typ: $Int, tag: ""}, {prop: "feed", name: "feed", exported: false, typ: $Int, tag: ""}, {prop: "vec", name: "vec", exported: false, typ: arrayType, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = nosync.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = math.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
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]);
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]);
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]);
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]);
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]);
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]);
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)]);
globalRand = New(new lockedSource.ptr(new nosync.Mutex.ptr(false), $assertType(NewSource(new $Int64(0, 1)), Source64)));
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["net"] = (function() {
var $pkg = {}, $init, context, errors, js, nettrace, race, singleflight, windows, io, rand, os, runtime, sort, sync, atomic, syscall, time, Dialer, dialParam, SRV, byPriorityWeight, MX, byPref, NS, dnsRR_Header, dnsRR_CNAME, dnsRR_MX, dnsRR_NS, dnsRR_PTR, dnsRR_SOA, dnsRR_TXT, dnsRR_SRV, dnsRR_A, dnsRR_AAAA, fdMutex, pollDesc, operation, ioSrv, ioSrvReq, netFD, Interface, Flags, ipv6ZoneCache, IP, IPMask, IPNet, IPAddr, IPConn, addrList, Resolver, HardwareAddr, Addr, Conn, conn, Listener, Error, OpError, timeout, temporary, timeoutError, ParseError, AddrError, UnknownNetworkError, DNSError, writerOnly, buffersWriter, Buffers, sockaddr, TCPAddr, TCPConn, TCPListener, UDPAddr, UDPConn, UnixAddr, UnixConn, dialResult, result, ret, ptrType, ptrType$1, sliceType, arrayType, sliceType$1, structType$1, ptrType$2, sliceType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, ptrType$11, ptrType$12, ptrType$13, ptrType$14, ptrType$18, ptrType$19, sliceType$5, ptrType$21, ptrType$22, ptrType$23, funcType, ptrType$24, ptrType$25, arrayType$1, arrayType$2, ptrType$26, arrayType$3, arrayType$4, ptrType$27, arrayType$5, sliceType$6, ptrType$28, ptrType$29, ptrType$30, ptrType$32, sliceType$7, sliceType$8, ptrType$33, sliceType$9, sliceType$10, sliceType$11, ptrType$34, ptrType$35, ptrType$36, ptrType$37, ptrType$38, ptrType$39, arrayType$6, funcType$1, sliceType$13, ptrType$40, sliceType$14, ptrType$41, ptrType$42, ptrType$43, ptrType$44, ptrType$45, ptrType$46, ptrType$47, ptrType$48, sliceType$15, ptrType$49, ptrType$50, sliceType$16, ptrType$51, ptrType$52, sliceType$17, ptrType$53, sliceType$18, ptrType$54, ptrType$55, ptrType$56, ptrType$57, arrayType$7, ptrType$58, ptrType$59, ptrType$60, ptrType$61, ptrType$62, ptrType$64, ptrType$65, chanType, funcType$2, ptrType$68, ptrType$69, ptrType$70, ptrType$71, ptrType$72, ptrType$73, ptrType$74, ptrType$75, ptrType$78, ptrType$79, ptrType$80, chanType$1, funcType$3, chanType$2, funcType$4, ptrType$81, mapType$1, mapType$2, ptrType$82, funcType$5, ptrType$83, ptrType$84, rr_mk, serverInit, initErr, ioSync, ioSync$24ptr, canCancelIO, skipSyncNotif, hasLoadSetFileCompletionNotificationModes, rsrv, wsrv, onceStartServer, testHookDialTCP, testHookLookupIP, testHookSetKeepAlive, testHookDialChannel, socketFunc, closeFunc, connectFunc, connectExFunc, listenFunc, acceptFunc, errInvalidInterface, errInvalidInterfaceIndex, errInvalidInterfaceName, errNoSuchInterface, errNoSuchMulticastInterface, flagNames, zoneCache, supportsVistaIP, v4InV6Prefix, classAMask, classBMask, classCMask, supportsIPv4, supportsIPv6, supportsIPv4map, protocols, services, lookupGroup, netGo, listenerBacklog, errNoSuitableAddress, errMissingAddress, errTimeout, errCanceled, errClosing, aLongTimeAgo, noDeadline, errNoSuchHost, threadLimit, testHookDidWritev, byteIndex, Listen, sysInit, probeIPv4Stack, probeIPv6Stack, probeWindowsIPStack, maxListenerBacklog, init, minNonzeroTime, partialDeadline, parseNetwork, dialParallel, dialSerial, dialSingle, reverseaddr, absDomainName, runtime_Semacquire, runtime_Semrelease, runtimeNano, runtime_pollServerInit, runtime_pollOpen, runtime_pollClose, runtime_pollWait, runtime_pollWaitCanceled, runtime_pollReset, runtime_pollSetDeadline, runtime_pollUnblock, convertErr, setDeadlineImpl, canUseConnectEx, startServer, newFD, zoneToString, zoneToInt, init$1, adapterAddresses, interfaceTable, interfaceAddrTable, addrPrefixTable, addrPrefixLen, interfaceMulticastAddrTable, IPv4, IPv4Mask, CIDRMask, isZeros, allFF, hexString, ipEmptyString, bytesEqual, simpleMaskLength, networkNumberAndMask, parseIPv4, parseIPv6, ParseIP, newIPConn, sockaddrToIP, stripIPv4Header, dialIP, isIPv4, filterAddrList, ipv4only, ipv6only, SplitHostPort, splitHostZone, JoinHostPort, loopbackIP, favoriteAddrFamily, internetSocket, ipToSockaddr, lookupProtocolMap, lookupPortMap, lookupIPReturn, ipAddrsEface, winError, getprotobyname, lookupProtocol, validRecs, resolveCNAME, init$2, mapErr, genericReadFrom, acquireThread, releaseThread, dtoi, xtoi, itoa, uitoa, appendHex, last, lowerASCIIBytes, parsePort, sendFile, socket, sysSocket, boolint, setReadBuffer, setWriteBuffer, setKeepAlive, setLinger, setDefaultSockopts, setDefaultListenerSockopts, setDefaultMulticastSockopts, newTCPConn, sockaddrToTCP, dialTCP, doDialTCP, selfConnect, spuriousENOTAVAIL, setNoDelay, setKeepAlivePeriod, newUDPConn, sockaddrToUDP, dialUDP, ResolveUnixAddr, newUnixConn, unixSocket, sockaddrToUnix, sockaddrToUnixgram, sockaddrToUnixpacket, sotypeToNet, dialUnix;
context = $packages["context"];
errors = $packages["errors"];
js = $packages["github.com/gopherjs/gopherjs/js"];
nettrace = $packages["internal/nettrace"];
race = $packages["internal/race"];
singleflight = $packages["internal/singleflight"];
windows = $packages["internal/syscall/windows"];
io = $packages["io"];
rand = $packages["math/rand"];
os = $packages["os"];
runtime = $packages["runtime"];
sort = $packages["sort"];
sync = $packages["sync"];
atomic = $packages["sync/atomic"];
syscall = $packages["syscall"];
time = $packages["time"];
Dialer = $pkg.Dialer = $newType(0, $kindStruct, "net.Dialer", true, "net", true, function(Timeout_, Deadline_, LocalAddr_, DualStack_, FallbackDelay_, KeepAlive_, Resolver_, Cancel_) {
this.$val = this;
if (arguments.length === 0) {
this.Timeout = new time.Duration(0, 0);
this.Deadline = new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil);
this.LocalAddr = $ifaceNil;
this.DualStack = false;
this.FallbackDelay = new time.Duration(0, 0);
this.KeepAlive = new time.Duration(0, 0);
this.Resolver = ptrType$3.nil;
this.Cancel = $chanNil;
return;
}
this.Timeout = Timeout_;
this.Deadline = Deadline_;
this.LocalAddr = LocalAddr_;
this.DualStack = DualStack_;
this.FallbackDelay = FallbackDelay_;
this.KeepAlive = KeepAlive_;
this.Resolver = Resolver_;
this.Cancel = Cancel_;
});
dialParam = $pkg.dialParam = $newType(0, $kindStruct, "net.dialParam", true, "net", false, function(Dialer_, network_, address_) {
this.$val = this;
if (arguments.length === 0) {
this.Dialer = new Dialer.ptr(new time.Duration(0, 0), new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil), $ifaceNil, false, new time.Duration(0, 0), new time.Duration(0, 0), ptrType$3.nil, $chanNil);
this.network = "";
this.address = "";
return;
}
this.Dialer = Dialer_;
this.network = network_;
this.address = address_;
});
SRV = $pkg.SRV = $newType(0, $kindStruct, "net.SRV", true, "net", true, function(Target_, Port_, Priority_, Weight_) {
this.$val = this;
if (arguments.length === 0) {
this.Target = "";
this.Port = 0;
this.Priority = 0;
this.Weight = 0;
return;
}
this.Target = Target_;
this.Port = Port_;
this.Priority = Priority_;
this.Weight = Weight_;
});
byPriorityWeight = $pkg.byPriorityWeight = $newType(12, $kindSlice, "net.byPriorityWeight", true, "net", false, null);
MX = $pkg.MX = $newType(0, $kindStruct, "net.MX", true, "net", true, function(Host_, Pref_) {
this.$val = this;
if (arguments.length === 0) {
this.Host = "";
this.Pref = 0;
return;
}
this.Host = Host_;
this.Pref = Pref_;
});
byPref = $pkg.byPref = $newType(12, $kindSlice, "net.byPref", true, "net", false, null);
NS = $pkg.NS = $newType(0, $kindStruct, "net.NS", true, "net", true, function(Host_) {
this.$val = this;
if (arguments.length === 0) {
this.Host = "";
return;
}
this.Host = Host_;
});
dnsRR_Header = $pkg.dnsRR_Header = $newType(0, $kindStruct, "net.dnsRR_Header", true, "net", false, function(Name_, Rrtype_, Class_, Ttl_, Rdlength_) {
this.$val = this;
if (arguments.length === 0) {
this.Name = "";
this.Rrtype = 0;
this.Class = 0;
this.Ttl = 0;
this.Rdlength = 0;
return;
}
this.Name = Name_;
this.Rrtype = Rrtype_;
this.Class = Class_;
this.Ttl = Ttl_;
this.Rdlength = Rdlength_;
});
dnsRR_CNAME = $pkg.dnsRR_CNAME = $newType(0, $kindStruct, "net.dnsRR_CNAME", true, "net", false, function(Hdr_, Cname_) {
this.$val = this;
if (arguments.length === 0) {
this.Hdr = new dnsRR_Header.ptr("", 0, 0, 0, 0);
this.Cname = "";
return;
}
this.Hdr = Hdr_;
this.Cname = Cname_;
});
dnsRR_MX = $pkg.dnsRR_MX = $newType(0, $kindStruct, "net.dnsRR_MX", true, "net", false, function(Hdr_, Pref_, Mx_) {
this.$val = this;
if (arguments.length === 0) {
this.Hdr = new dnsRR_Header.ptr("", 0, 0, 0, 0);
this.Pref = 0;
this.Mx = "";
return;
}
this.Hdr = Hdr_;
this.Pref = Pref_;
this.Mx = Mx_;
});
dnsRR_NS = $pkg.dnsRR_NS = $newType(0, $kindStruct, "net.dnsRR_NS", true, "net", false, function(Hdr_, Ns_) {
this.$val = this;
if (arguments.length === 0) {
this.Hdr = new dnsRR_Header.ptr("", 0, 0, 0, 0);
this.Ns = "";
return;
}
this.Hdr = Hdr_;
this.Ns = Ns_;
});
dnsRR_PTR = $pkg.dnsRR_PTR = $newType(0, $kindStruct, "net.dnsRR_PTR", true, "net", false, function(Hdr_, Ptr_) {
this.$val = this;
if (arguments.length === 0) {
this.Hdr = new dnsRR_Header.ptr("", 0, 0, 0, 0);
this.Ptr = "";
return;
}
this.Hdr = Hdr_;
this.Ptr = Ptr_;
});
dnsRR_SOA = $pkg.dnsRR_SOA = $newType(0, $kindStruct, "net.dnsRR_SOA", true, "net", false, function(Hdr_, Ns_, Mbox_, Serial_, Refresh_, Retry_, Expire_, Minttl_) {
this.$val = this;
if (arguments.length === 0) {
this.Hdr = new dnsRR_Header.ptr("", 0, 0, 0, 0);
this.Ns = "";
this.Mbox = "";
this.Serial = 0;
this.Refresh = 0;
this.Retry = 0;
this.Expire = 0;
this.Minttl = 0;
return;
}
this.Hdr = Hdr_;
this.Ns = Ns_;
this.Mbox = Mbox_;
this.Serial = Serial_;
this.Refresh = Refresh_;
this.Retry = Retry_;
this.Expire = Expire_;
this.Minttl = Minttl_;
});
dnsRR_TXT = $pkg.dnsRR_TXT = $newType(0, $kindStruct, "net.dnsRR_TXT", true, "net", false, function(Hdr_, Txt_) {
this.$val = this;
if (arguments.length === 0) {
this.Hdr = new dnsRR_Header.ptr("", 0, 0, 0, 0);
this.Txt = "";
return;
}
this.Hdr = Hdr_;
this.Txt = Txt_;
});
dnsRR_SRV = $pkg.dnsRR_SRV = $newType(0, $kindStruct, "net.dnsRR_SRV", true, "net", false, function(Hdr_, Priority_, Weight_, Port_, Target_) {
this.$val = this;
if (arguments.length === 0) {
this.Hdr = new dnsRR_Header.ptr("", 0, 0, 0, 0);
this.Priority = 0;
this.Weight = 0;
this.Port = 0;
this.Target = "";
return;
}
this.Hdr = Hdr_;
this.Priority = Priority_;
this.Weight = Weight_;
this.Port = Port_;
this.Target = Target_;
});
dnsRR_A = $pkg.dnsRR_A = $newType(0, $kindStruct, "net.dnsRR_A", true, "net", false, function(Hdr_, A_) {
this.$val = this;
if (arguments.length === 0) {
this.Hdr = new dnsRR_Header.ptr("", 0, 0, 0, 0);
this.A = 0;
return;
}
this.Hdr = Hdr_;
this.A = A_;
});
dnsRR_AAAA = $pkg.dnsRR_AAAA = $newType(0, $kindStruct, "net.dnsRR_AAAA", true, "net", false, function(Hdr_, AAAA_) {
this.$val = this;
if (arguments.length === 0) {
this.Hdr = new dnsRR_Header.ptr("", 0, 0, 0, 0);
this.AAAA = arrayType.zero();
return;
}
this.Hdr = Hdr_;
this.AAAA = AAAA_;
});
fdMutex = $pkg.fdMutex = $newType(0, $kindStruct, "net.fdMutex", true, "net", false, function(state_, rsema_, wsema_) {
this.$val = this;
if (arguments.length === 0) {
this.state = new $Uint64(0, 0);
this.rsema = 0;
this.wsema = 0;
return;
}
this.state = state_;
this.rsema = rsema_;
this.wsema = wsema_;
});
pollDesc = $pkg.pollDesc = $newType(0, $kindStruct, "net.pollDesc", true, "net", false, function(runtimeCtx_) {
this.$val = this;
if (arguments.length === 0) {
this.runtimeCtx = 0;
return;
}
this.runtimeCtx = runtimeCtx_;
});
operation = $pkg.operation = $newType(0, $kindStruct, "net.operation", true, "net", false, function(o_, runtimeCtx_, mode_, errno_, qty_, fd_, errc_, buf_, sa_, rsa_, rsan_, handle_, flags_, bufs_) {
this.$val = this;
if (arguments.length === 0) {
this.o = new syscall.Overlapped.ptr(0, 0, 0, 0, 0);
this.runtimeCtx = 0;
this.mode = 0;
this.errno = 0;
this.qty = 0;
this.fd = ptrType$21.nil;
this.errc = $chanNil;
this.buf = new syscall.WSABuf.ptr(0, ptrType$18.nil);
this.sa = $ifaceNil;
this.rsa = ptrType$22.nil;
this.rsan = 0;
this.handle = 0;
this.flags = 0;
this.bufs = sliceType$5.nil;
return;
}
this.o = o_;
this.runtimeCtx = runtimeCtx_;
this.mode = mode_;
this.errno = errno_;
this.qty = qty_;
this.fd = fd_;
this.errc = errc_;
this.buf = buf_;
this.sa = sa_;
this.rsa = rsa_;
this.rsan = rsan_;
this.handle = handle_;
this.flags = flags_;
this.bufs = bufs_;
});
ioSrv = $pkg.ioSrv = $newType(0, $kindStruct, "net.ioSrv", true, "net", false, function(req_) {
this.$val = this;
if (arguments.length === 0) {
this.req = $chanNil;
return;
}
this.req = req_;
});
ioSrvReq = $pkg.ioSrvReq = $newType(0, $kindStruct, "net.ioSrvReq", true, "net", false, function(o_, submit_) {
this.$val = this;
if (arguments.length === 0) {
this.o = ptrType$80.nil;
this.submit = $throwNilPointerError;
return;
}
this.o = o_;
this.submit = submit_;
});
netFD = $pkg.netFD = $newType(0, $kindStruct, "net.netFD", true, "net", false, function(fdmu_, sysfd_, family_, sotype_, isStream_, isConnected_, skipSyncNotif_, net_, laddr_, raddr_, rop_, wop_, pd_) {
this.$val = this;
if (arguments.length === 0) {
this.fdmu = new fdMutex.ptr(new $Uint64(0, 0), 0, 0);
this.sysfd = 0;
this.family = 0;
this.sotype = 0;
this.isStream = false;
this.isConnected = false;
this.skipSyncNotif = false;
this.net = "";
this.laddr = $ifaceNil;
this.raddr = $ifaceNil;
this.rop = new operation.ptr(new syscall.Overlapped.ptr(0, 0, 0, 0, 0), 0, 0, 0, 0, ptrType$21.nil, $chanNil, new syscall.WSABuf.ptr(0, ptrType$18.nil), $ifaceNil, ptrType$22.nil, 0, 0, 0, sliceType$5.nil);
this.wop = new operation.ptr(new syscall.Overlapped.ptr(0, 0, 0, 0, 0), 0, 0, 0, 0, ptrType$21.nil, $chanNil, new syscall.WSABuf.ptr(0, ptrType$18.nil), $ifaceNil, ptrType$22.nil, 0, 0, 0, sliceType$5.nil);
this.pd = new pollDesc.ptr(0);
return;
}
this.fdmu = fdmu_;
this.sysfd = sysfd_;
this.family = family_;
this.sotype = sotype_;
this.isStream = isStream_;
this.isConnected = isConnected_;
this.skipSyncNotif = skipSyncNotif_;
this.net = net_;
this.laddr = laddr_;
this.raddr = raddr_;
this.rop = rop_;
this.wop = wop_;
this.pd = pd_;
});
Interface = $pkg.Interface = $newType(0, $kindStruct, "net.Interface", true, "net", true, function(Index_, MTU_, Name_, HardwareAddr_, Flags_) {
this.$val = this;
if (arguments.length === 0) {
this.Index = 0;
this.MTU = 0;
this.Name = "";
this.HardwareAddr = HardwareAddr.nil;
this.Flags = 0;
return;
}
this.Index = Index_;
this.MTU = MTU_;
this.Name = Name_;
this.HardwareAddr = HardwareAddr_;
this.Flags = Flags_;
});
Flags = $pkg.Flags = $newType(4, $kindUint, "net.Flags", true, "net", true, null);
ipv6ZoneCache = $pkg.ipv6ZoneCache = $newType(0, $kindStruct, "net.ipv6ZoneCache", true, "net", false, function(RWMutex_, lastFetched_, toIndex_, toName_) {
this.$val = this;
if (arguments.length === 0) {
this.RWMutex = new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0);
this.lastFetched = new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil);
this.toIndex = false;
this.toName = false;
return;
}
this.RWMutex = RWMutex_;
this.lastFetched = lastFetched_;
this.toIndex = toIndex_;
this.toName = toName_;
});
IP = $pkg.IP = $newType(12, $kindSlice, "net.IP", true, "net", true, null);
IPMask = $pkg.IPMask = $newType(12, $kindSlice, "net.IPMask", true, "net", true, null);
IPNet = $pkg.IPNet = $newType(0, $kindStruct, "net.IPNet", true, "net", true, function(IP_, Mask_) {
this.$val = this;
if (arguments.length === 0) {
this.IP = IP.nil;
this.Mask = IPMask.nil;
return;
}
this.IP = IP_;
this.Mask = Mask_;
});
IPAddr = $pkg.IPAddr = $newType(0, $kindStruct, "net.IPAddr", true, "net", true, function(IP_, Zone_) {
this.$val = this;
if (arguments.length === 0) {
this.IP = IP.nil;
this.Zone = "";
return;
}
this.IP = IP_;
this.Zone = Zone_;
});
IPConn = $pkg.IPConn = $newType(0, $kindStruct, "net.IPConn", true, "net", true, function(conn_) {
this.$val = this;
if (arguments.length === 0) {
this.conn = new conn.ptr(ptrType$21.nil);
return;
}
this.conn = conn_;
});
addrList = $pkg.addrList = $newType(12, $kindSlice, "net.addrList", true, "net", false, null);
Resolver = $pkg.Resolver = $newType(0, $kindStruct, "net.Resolver", true, "net", true, function(PreferGo_) {
this.$val = this;
if (arguments.length === 0) {
this.PreferGo = false;
return;
}
this.PreferGo = PreferGo_;
});
HardwareAddr = $pkg.HardwareAddr = $newType(12, $kindSlice, "net.HardwareAddr", true, "net", true, null);
Addr = $pkg.Addr = $newType(8, $kindInterface, "net.Addr", true, "net", true, null);
Conn = $pkg.Conn = $newType(8, $kindInterface, "net.Conn", true, "net", true, null);
conn = $pkg.conn = $newType(0, $kindStruct, "net.conn", true, "net", false, function(fd_) {
this.$val = this;
if (arguments.length === 0) {
this.fd = ptrType$21.nil;
return;
}
this.fd = fd_;
});
Listener = $pkg.Listener = $newType(8, $kindInterface, "net.Listener", true, "net", true, null);
Error = $pkg.Error = $newType(8, $kindInterface, "net.Error", true, "net", true, null);
OpError = $pkg.OpError = $newType(0, $kindStruct, "net.OpError", true, "net", true, function(Op_, Net_, Source_, Addr_, Err_) {
this.$val = this;
if (arguments.length === 0) {
this.Op = "";
this.Net = "";
this.Source = $ifaceNil;
this.Addr = $ifaceNil;
this.Err = $ifaceNil;
return;
}
this.Op = Op_;
this.Net = Net_;
this.Source = Source_;
this.Addr = Addr_;
this.Err = Err_;
});
timeout = $pkg.timeout = $newType(8, $kindInterface, "net.timeout", true, "net", false, null);
temporary = $pkg.temporary = $newType(8, $kindInterface, "net.temporary", true, "net", false, null);
timeoutError = $pkg.timeoutError = $newType(0, $kindStruct, "net.timeoutError", true, "net", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
ParseError = $pkg.ParseError = $newType(0, $kindStruct, "net.ParseError", true, "net", true, function(Type_, Text_) {
this.$val = this;
if (arguments.length === 0) {
this.Type = "";
this.Text = "";
return;
}
this.Type = Type_;
this.Text = Text_;
});
AddrError = $pkg.AddrError = $newType(0, $kindStruct, "net.AddrError", true, "net", true, function(Err_, Addr_) {
this.$val = this;
if (arguments.length === 0) {
this.Err = "";
this.Addr = "";
return;
}
this.Err = Err_;
this.Addr = Addr_;
});
UnknownNetworkError = $pkg.UnknownNetworkError = $newType(8, $kindString, "net.UnknownNetworkError", true, "net", true, null);
DNSError = $pkg.DNSError = $newType(0, $kindStruct, "net.DNSError", true, "net", true, function(Err_, Name_, Server_, IsTimeout_, IsTemporary_) {
this.$val = this;
if (arguments.length === 0) {
this.Err = "";
this.Name = "";
this.Server = "";
this.IsTimeout = false;
this.IsTemporary = false;
return;
}
this.Err = Err_;
this.Name = Name_;
this.Server = Server_;
this.IsTimeout = IsTimeout_;
this.IsTemporary = IsTemporary_;
});
writerOnly = $pkg.writerOnly = $newType(0, $kindStruct, "net.writerOnly", true, "net", false, function(Writer_) {
this.$val = this;
if (arguments.length === 0) {
this.Writer = $ifaceNil;
return;
}
this.Writer = Writer_;
});
buffersWriter = $pkg.buffersWriter = $newType(8, $kindInterface, "net.buffersWriter", true, "net", false, null);
Buffers = $pkg.Buffers = $newType(12, $kindSlice, "net.Buffers", true, "net", true, null);
sockaddr = $pkg.sockaddr = $newType(8, $kindInterface, "net.sockaddr", true, "net", false, null);
TCPAddr = $pkg.TCPAddr = $newType(0, $kindStruct, "net.TCPAddr", true, "net", true, function(IP_, Port_, Zone_) {
this.$val = this;
if (arguments.length === 0) {
this.IP = IP.nil;
this.Port = 0;
this.Zone = "";
return;
}
this.IP = IP_;
this.Port = Port_;
this.Zone = Zone_;
});
TCPConn = $pkg.TCPConn = $newType(0, $kindStruct, "net.TCPConn", true, "net", true, function(conn_) {
this.$val = this;
if (arguments.length === 0) {
this.conn = new conn.ptr(ptrType$21.nil);
return;
}
this.conn = conn_;
});
TCPListener = $pkg.TCPListener = $newType(0, $kindStruct, "net.TCPListener", true, "net", true, function(fd_) {
this.$val = this;
if (arguments.length === 0) {
this.fd = ptrType$21.nil;
return;
}
this.fd = fd_;
});
UDPAddr = $pkg.UDPAddr = $newType(0, $kindStruct, "net.UDPAddr", true, "net", true, function(IP_, Port_, Zone_) {
this.$val = this;
if (arguments.length === 0) {
this.IP = IP.nil;
this.Port = 0;
this.Zone = "";
return;
}
this.IP = IP_;
this.Port = Port_;
this.Zone = Zone_;
});
UDPConn = $pkg.UDPConn = $newType(0, $kindStruct, "net.UDPConn", true, "net", true, function(conn_) {
this.$val = this;
if (arguments.length === 0) {
this.conn = new conn.ptr(ptrType$21.nil);
return;
}
this.conn = conn_;
});
UnixAddr = $pkg.UnixAddr = $newType(0, $kindStruct, "net.UnixAddr", true, "net", true, function(Name_, Net_) {
this.$val = this;
if (arguments.length === 0) {
this.Name = "";
this.Net = "";
return;
}
this.Name = Name_;
this.Net = Net_;
});
UnixConn = $pkg.UnixConn = $newType(0, $kindStruct, "net.UnixConn", true, "net", true, function(conn_) {
this.$val = this;
if (arguments.length === 0) {
this.conn = new conn.ptr(ptrType$21.nil);
return;
}
this.conn = conn_;
});
dialResult = $newType(0, $kindStruct, "net.dialResult", true, "net", false, function(Conn_, error_, primary_, done_) {
this.$val = this;
if (arguments.length === 0) {
this.Conn = $ifaceNil;
this.error = $ifaceNil;
this.primary = false;
this.done = false;
return;
}
this.Conn = Conn_;
this.error = error_;
this.primary = primary_;
this.done = done_;
});
result = $newType(0, $kindStruct, "net.result", true, "net", false, function(proto_, err_) {
this.$val = this;
if (arguments.length === 0) {
this.proto = 0;
this.err = $ifaceNil;
return;
}
this.proto = proto_;
this.err = err_;
});
ret = $newType(0, $kindStruct, "net.ret", true, "net", false, function(addrs_, err_) {
this.$val = this;
if (arguments.length === 0) {
this.addrs = sliceType$2.nil;
this.err = $ifaceNil;
return;
}
this.addrs = addrs_;
this.err = err_;
});
ptrType = $ptrType(ioSrv);
ptrType$1 = $ptrType(time.Location);
sliceType = $sliceType($String);
arrayType = $arrayType($Uint8, 16);
sliceType$1 = $sliceType($Uint8);
structType$1 = $structType("", []);
ptrType$2 = $ptrType(Buffers);
sliceType$2 = $sliceType(IPAddr);
ptrType$3 = $ptrType(Resolver);
ptrType$4 = $ptrType(TCPAddr);
ptrType$5 = $ptrType(UDPAddr);
ptrType$6 = $ptrType(IPAddr);
ptrType$7 = $ptrType(nettrace.Trace);
ptrType$8 = $ptrType(TCPConn);
ptrType$9 = $ptrType(UnixAddr);
ptrType$10 = $ptrType(dnsRR_Header);
ptrType$11 = $ptrType(dnsRR_CNAME);
ptrType$12 = $ptrType($Uint16);
ptrType$13 = $ptrType($String);
ptrType$14 = $ptrType($Uint32);
ptrType$18 = $ptrType($Uint8);
ptrType$19 = $ptrType($Uint64);
sliceType$5 = $sliceType(syscall.WSABuf);
ptrType$21 = $ptrType(netFD);
ptrType$22 = $ptrType(syscall.RawSockaddrAny);
ptrType$23 = $ptrType(syscall.Overlapped);
funcType = $funcType([ptrType$21], [$error], false);
ptrType$24 = $ptrType(syscall.SockaddrInet4);
ptrType$25 = $ptrType(syscall.SockaddrInet6);
arrayType$1 = $arrayType($Uint8, 4);
arrayType$2 = $arrayType($Uint8, 8);
ptrType$26 = $ptrType(syscall.Handle);
arrayType$3 = $arrayType($Int8, 14);
arrayType$4 = $arrayType($Int8, 96);
ptrType$27 = $ptrType($Int32);
arrayType$5 = $arrayType(syscall.RawSockaddrAny, 2);
sliceType$6 = $sliceType(syscall.RawSockaddrAny);
ptrType$28 = $ptrType(os.SyscallError);
ptrType$29 = $ptrType(ptrType$22);
ptrType$30 = $ptrType(os.File);
ptrType$32 = $ptrType(Interface);
sliceType$7 = $sliceType(Addr);
sliceType$8 = $sliceType(Interface);
ptrType$33 = $ptrType(windows.IpAdapterAddresses);
sliceType$9 = $sliceType(ptrType$33);
sliceType$10 = $sliceType($Uint16);
sliceType$11 = $sliceType(IPNet);
ptrType$34 = $ptrType(windows.IpAdapterUnicastAddress);
ptrType$35 = $ptrType(windows.IpAdapterAnycastAddress);
ptrType$36 = $ptrType(windows.IpAdapterPrefix);
ptrType$37 = $ptrType(IPNet);
ptrType$38 = $ptrType(windows.IpAdapterMulticastAddress);
ptrType$39 = $ptrType(IPConn);
arrayType$6 = $arrayType($Uint8, 25);
funcType$1 = $funcType([context.Context, $String], [sliceType$2, $error], false);
sliceType$13 = $sliceType($emptyInterface);
ptrType$40 = $ptrType(SRV);
sliceType$14 = $sliceType(ptrType$40);
ptrType$41 = $ptrType(syscall.AddrinfoW);
ptrType$42 = $ptrType(ptrType$41);
ptrType$43 = $ptrType(syscall.RawSockaddrInet4);
ptrType$44 = $ptrType(syscall.RawSockaddrInet6);
ptrType$45 = $ptrType(syscall.DNSRecord);
ptrType$46 = $ptrType(ptrType$45);
ptrType$47 = $ptrType(syscall.DNSSRVData);
ptrType$48 = $ptrType(MX);
sliceType$15 = $sliceType(ptrType$48);
ptrType$49 = $ptrType(syscall.DNSMXData);
ptrType$50 = $ptrType(NS);
sliceType$16 = $sliceType(ptrType$50);
ptrType$51 = $ptrType(syscall.DNSPTRData);
ptrType$52 = $ptrType(syscall.DNSTXTData);
sliceType$17 = $sliceType(ptrType$12);
ptrType$53 = $ptrType(ptrType$12);
sliceType$18 = $sliceType(ptrType$45);
ptrType$54 = $ptrType(conn);
ptrType$55 = $ptrType(OpError);
ptrType$56 = $ptrType(AddrError);
ptrType$57 = $ptrType(DNSError);
arrayType$7 = $arrayType($Uint8, 20);
ptrType$58 = $ptrType(io.LimitedReader);
ptrType$59 = $ptrType(syscall.TransmitFileBuffers);
ptrType$60 = $ptrType(TCPListener);
ptrType$61 = $ptrType(UDPConn);
ptrType$62 = $ptrType(UnixConn);
ptrType$64 = $ptrType(syscall.SockaddrUnix);
ptrType$65 = $ptrType(Dialer);
chanType = $chanType(structType$1, false, true);
funcType$2 = $funcType([$emptyInterface, $String, $String], [$Bool], false);
ptrType$68 = $ptrType(dnsRR_MX);
ptrType$69 = $ptrType(dnsRR_NS);
ptrType$70 = $ptrType(dnsRR_PTR);
ptrType$71 = $ptrType(dnsRR_SOA);
ptrType$72 = $ptrType(dnsRR_TXT);
ptrType$73 = $ptrType(dnsRR_SRV);
ptrType$74 = $ptrType(dnsRR_A);
ptrType$75 = $ptrType(dnsRR_AAAA);
ptrType$78 = $ptrType(fdMutex);
ptrType$79 = $ptrType(pollDesc);
ptrType$80 = $ptrType(operation);
chanType$1 = $chanType($error, false, false);
funcType$3 = $funcType([ptrType$80], [$error], false);
chanType$2 = $chanType(ioSrvReq, false, false);
funcType$4 = $funcType([syscall.Sockaddr], [Addr], false);
ptrType$81 = $ptrType(ipv6ZoneCache);
mapType$1 = $mapType($String, $Int);
mapType$2 = $mapType($Int, $String);
ptrType$82 = $ptrType(IP);
funcType$5 = $funcType([Addr], [$Bool], false);
ptrType$83 = $ptrType(timeoutError);
ptrType$84 = $ptrType(ParseError);
byteIndex = function(s, c) {
var $ptr, c, s;
return $parseInt(s.indexOf($global.String.fromCharCode(c))) >> 0;
};
Listen = function(net, laddr) {
var $ptr, laddr, net;
$panic(errors.New("network access is not supported by GopherJS"));
};
$pkg.Listen = Listen;
Dialer.ptr.prototype.Dial = function(network, address) {
var $ptr, address, d, network;
d = this;
$panic(errors.New("network access is not supported by GopherJS"));
};
Dialer.prototype.Dial = function(network, address) { return this.$val.Dial(network, address); };
sysInit = function() {
var $ptr;
};
probeIPv4Stack = function() {
var $ptr;
return false;
};
probeIPv6Stack = function() {
var $ptr, _tmp, _tmp$1, supportsIPv4map$1, supportsIPv6$1;
supportsIPv6$1 = false;
supportsIPv4map$1 = false;
_tmp = false;
_tmp$1 = false;
supportsIPv6$1 = _tmp;
supportsIPv4map$1 = _tmp$1;
return [supportsIPv6$1, supportsIPv4map$1];
};
probeWindowsIPStack = function() {
var $ptr, supportsVistaIP$1;
supportsVistaIP$1 = false;
supportsVistaIP$1 = false;
return supportsVistaIP$1;
};
maxListenerBacklog = function() {
var $ptr;
return 2147483647;
};
init = function() {
var $ptr;
netGo = true;
};
minNonzeroTime = function(a, b) {
var $ptr, a, b;
if ($clone(a, time.Time).IsZero()) {
return b;
}
if ($clone(b, time.Time).IsZero() || $clone(a, time.Time).Before($clone(b, time.Time))) {
return a;
}
return b;
};
Dialer.ptr.prototype.deadline = function(ctx, now) {
var $ptr, _r, _tuple, ctx, d, d$1, earliest, now, ok, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
earliest = new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil);
d = this;
if (!((x = d.Timeout, (x.$high === 0 && x.$low === 0)))) {
time.Time.copy(earliest, $clone(now, time.Time).Add(d.Timeout));
}
_r = ctx.Deadline(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
d$1 = $clone(_tuple[0], time.Time);
ok = _tuple[1];
if (ok) {
time.Time.copy(earliest, minNonzeroTime($clone(earliest, time.Time), $clone(d$1, time.Time)));
}
time.Time.copy(earliest, minNonzeroTime($clone(earliest, time.Time), $clone(d.Deadline, time.Time)));
$s = -1; return earliest;
/* */ } return; } if ($f === undefined) { $f = { $blk: Dialer.ptr.prototype.deadline }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
Dialer.prototype.deadline = function(ctx, now) { return this.$val.deadline(ctx, now); };
Dialer.ptr.prototype.resolver = function() {
var $ptr, d;
d = this;
if (!(d.Resolver === ptrType$3.nil)) {
return d.Resolver;
}
return $pkg.DefaultResolver;
};
Dialer.prototype.resolver = function() { return this.$val.resolver(); };
partialDeadline = function(now, deadline, addrsRemaining) {
var $ptr, addrsRemaining, deadline, now, timeRemaining, timeout$1;
if ($clone(deadline, time.Time).IsZero()) {
return [deadline, $ifaceNil];
}
timeRemaining = $clone(deadline, time.Time).Sub($clone(now, time.Time));
if ((timeRemaining.$high < 0 || (timeRemaining.$high === 0 && timeRemaining.$low <= 0))) {
return [new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil), errTimeout];
}
timeout$1 = $div64(timeRemaining, (new time.Duration(0, addrsRemaining)), false);
if ((timeout$1.$high < 0 || (timeout$1.$high === 0 && timeout$1.$low < 2000000000))) {
if ((timeRemaining.$high < 0 || (timeRemaining.$high === 0 && timeRemaining.$low < 2000000000))) {
timeout$1 = timeRemaining;
} else {
timeout$1 = new time.Duration(0, 2000000000);
}
}
return [$clone(now, time.Time).Add(timeout$1), $ifaceNil];
};
Dialer.ptr.prototype.fallbackDelay = function() {
var $ptr, d, x;
d = this;
if ((x = d.FallbackDelay, (x.$high > 0 || (x.$high === 0 && x.$low > 0)))) {
return d.FallbackDelay;
} else {
return new time.Duration(0, 300000000);
}
};
Dialer.prototype.fallbackDelay = function() { return this.$val.fallbackDelay(); };
parseNetwork = function(ctx, net) {
var $ptr, _1, _2, _r, _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, afnet, ctx, err, i, i$1, net, ok, proto, proto$1, protostr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _2 = $f._2; _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$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; net = $f.net; 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:
afnet = "";
proto = 0;
err = $ifaceNil;
i = last(net, 58);
if (i < 0) {
_1 = net;
if (_1 === ("tcp") || _1 === ("tcp4") || _1 === ("tcp6")) {
} else if (_1 === ("udp") || _1 === ("udp4") || _1 === ("udp6")) {
} else if (_1 === ("ip") || _1 === ("ip4") || _1 === ("ip6")) {
} else if (_1 === ("unix") || _1 === ("unixgram") || _1 === ("unixpacket")) {
} else {
_tmp = "";
_tmp$1 = 0;
_tmp$2 = new UnknownNetworkError((net));
afnet = _tmp;
proto = _tmp$1;
err = _tmp$2;
$s = -1; return [afnet, proto, err];
}
_tmp$3 = net;
_tmp$4 = 0;
_tmp$5 = $ifaceNil;
afnet = _tmp$3;
proto = _tmp$4;
err = _tmp$5;
$s = -1; return [afnet, proto, err];
}
afnet = $substring(net, 0, i);
_2 = afnet;
/* */ if (_2 === ("ip") || _2 === ("ip4") || _2 === ("ip6")) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (_2 === ("ip") || _2 === ("ip4") || _2 === ("ip6")) { */ case 2:
protostr = $substring(net, (i + 1 >> 0));
_tuple = dtoi(protostr);
proto$1 = _tuple[0];
i$1 = _tuple[1];
ok = _tuple[2];
/* */ if (!ok || !((i$1 === protostr.length))) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!ok || !((i$1 === protostr.length))) { */ case 4:
_r = lookupProtocol(ctx, protostr); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
proto$1 = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$6 = "";
_tmp$7 = 0;
_tmp$8 = err;
afnet = _tmp$6;
proto = _tmp$7;
err = _tmp$8;
$s = -1; return [afnet, proto, err];
}
/* } */ case 5:
_tmp$9 = afnet;
_tmp$10 = proto$1;
_tmp$11 = $ifaceNil;
afnet = _tmp$9;
proto = _tmp$10;
err = _tmp$11;
$s = -1; return [afnet, proto, err];
/* } */ case 3:
case 1:
_tmp$12 = "";
_tmp$13 = 0;
_tmp$14 = new UnknownNetworkError((net));
afnet = _tmp$12;
proto = _tmp$13;
err = _tmp$14;
$s = -1; return [afnet, proto, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: parseNetwork }; } $f.$ptr = $ptr; $f._1 = _1; $f._2 = _2; $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$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.net = net; $f.ok = ok; $f.proto = proto; $f.proto$1 = proto$1; $f.protostr = protostr; $f.$s = $s; $f.$r = $r; return $f;
};
Resolver.ptr.prototype.resolveAddrList = function(ctx, op, network, addr, hint) {
var $ptr, _1, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
r = this;
_r = parseNetwork(ctx, network); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
afnet = _tuple[0];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [addrList.nil, err];
}
if (op === "dial" && addr === "") {
$s = -1; return [addrList.nil, errMissingAddress];
}
_1 = afnet;
/* */ if (_1 === ("unix") || _1 === ("unixgram") || _1 === ("unixpacket")) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (_1 === ("unix") || _1 === ("unixgram") || _1 === ("unixpacket")) { */ case 3:
_tuple$1 = ResolveUnixAddr(afnet, addr);
addr$1 = _tuple$1[0];
err$1 = _tuple$1[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return [addrList.nil, err$1];
}
if (!(op === "dial" && !($interfaceIsEqual(hint, $ifaceNil)))) { _v = false; $s = 7; continue s; }
_r$1 = hint.Network(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_v = !(addr$1.Network() === _r$1); case 7:
/* */ if (_v) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (_v) { */ case 5:
_r$2 = hint.String(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$s = -1; return [addrList.nil, new AddrError.ptr("mismatched local address type", _r$2)];
/* } */ case 6:
$s = -1; return [new addrList([addr$1]), $ifaceNil];
/* } */ case 4:
case 2:
_r$3 = r.internetAddrList(ctx, afnet, addr); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$2 = _r$3;
addrs = _tuple$2[0];
err = _tuple$2[1];
if (!($interfaceIsEqual(err, $ifaceNil)) || !(op === "dial") || $interfaceIsEqual(hint, $ifaceNil)) {
$s = -1; return [addrs, err];
}
tcp = ptrType$4.nil;
udp = ptrType$5.nil;
ip = ptrType$6.nil;
wildcard = false;
_ref = hint;
if ($assertType(_ref, ptrType$4, true)[1]) {
hint$1 = _ref.$val;
tcp = hint$1;
wildcard = tcp.isWildcard();
} else if ($assertType(_ref, ptrType$5, true)[1]) {
hint$2 = _ref.$val;
udp = hint$2;
wildcard = udp.isWildcard();
} else if ($assertType(_ref, ptrType$6, true)[1]) {
hint$3 = _ref.$val;
ip = hint$3;
wildcard = ip.isWildcard();
}
naddrs = $subslice(addrs, 0, 0);
_ref$1 = addrs;
_i = 0;
/* while (true) { */ case 11:
/* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 12; continue; }
addr$2 = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]);
_r$4 = addr$2.Network(); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_r$5 = hint.Network(); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
/* */ if (!(_r$4 === _r$5)) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (!(_r$4 === _r$5)) { */ case 13:
_r$6 = hint.String(); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
$s = -1; return [addrList.nil, new AddrError.ptr("mismatched local address type", _r$6)];
/* } */ case 14:
_ref$2 = addr$2;
/* */ if ($assertType(_ref$2, ptrType$4, true)[1]) { $s = 18; continue; }
/* */ if ($assertType(_ref$2, ptrType$5, true)[1]) { $s = 19; continue; }
/* */ if ($assertType(_ref$2, ptrType$6, true)[1]) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if ($assertType(_ref$2, ptrType$4, true)[1]) { */ case 18:
addr$3 = _ref$2.$val;
if (!wildcard && !addr$3.isWildcard() && !addr$3.IP.matchAddrFamily(tcp.IP)) {
_i++;
/* continue; */ $s = 11; continue;
}
naddrs = $append(naddrs, addr$3);
$s = 21; continue;
/* } else if ($assertType(_ref$2, ptrType$5, true)[1]) { */ case 19:
addr$4 = _ref$2.$val;
if (!wildcard && !addr$4.isWildcard() && !addr$4.IP.matchAddrFamily(udp.IP)) {
_i++;
/* continue; */ $s = 11; continue;
}
naddrs = $append(naddrs, addr$4);
$s = 21; continue;
/* } else if ($assertType(_ref$2, ptrType$6, true)[1]) { */ case 20:
addr$5 = _ref$2.$val;
if (!wildcard && !addr$5.isWildcard() && !addr$5.IP.matchAddrFamily(ip.IP)) {
_i++;
/* continue; */ $s = 11; continue;
}
naddrs = $append(naddrs, addr$5);
/* } */ case 21:
_i++;
/* } */ $s = 11; continue; case 12:
/* */ if (naddrs.$length === 0) { $s = 22; continue; }
/* */ $s = 23; continue;
/* if (naddrs.$length === 0) { */ case 22:
_r$7 = errNoSuitableAddress.Error(); /* */ $s = 24; case 24: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_r$8 = hint.String(); /* */ $s = 25; case 25: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
$s = -1; return [addrList.nil, new AddrError.ptr(_r$7, _r$8)];
/* } */ case 23:
$s = -1; return [naddrs, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.resolveAddrList }; } $f.$ptr = $ptr; $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._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;
};
Resolver.prototype.resolveAddrList = function(ctx, op, network, addr, hint) { return this.$val.resolveAddrList(ctx, op, network, addr, hint); };
Dialer.ptr.prototype.DialContext = function(ctx, network, address) {
var $ptr, _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, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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);
cancel = [cancel];
oldCancel = [oldCancel];
shadow = [shadow];
subCtx = [subCtx];
d = this;
if ($interfaceIsEqual(ctx, $ifaceNil)) {
$panic(new $String("nil context"));
}
_r = d.deadline(ctx, $clone(time.Now(), time.Time)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
deadline = $clone(_r, time.Time);
/* */ if (!$clone(deadline, time.Time).IsZero()) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!$clone(deadline, time.Time).IsZero()) { */ case 2:
_r$1 = ctx.Deadline(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
d$1 = $clone(_tuple[0], time.Time);
ok = _tuple[1];
/* */ if (!ok || $clone(deadline, time.Time).Before($clone(d$1, time.Time))) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (!ok || $clone(deadline, time.Time).Before($clone(d$1, time.Time))) { */ case 5:
_r$2 = context.WithDeadline(ctx, $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; }
_tuple$1 = _r$2;
subCtx$1 = _tuple$1[0];
cancel$1 = _tuple$1[1];
$deferred.push([cancel$1, []]);
ctx = subCtx$1;
/* } */ case 6:
/* } */ case 3:
oldCancel[0] = d.Cancel;
/* */ if (!(oldCancel[0] === $chanNil)) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (!(oldCancel[0] === $chanNil)) { */ case 8:
_r$3 = context.WithCancel(ctx); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$2 = _r$3;
subCtx[0] = _tuple$2[0];
cancel[0] = _tuple$2[1];
$deferred.push([cancel[0], []]);
$go((function(cancel, oldCancel, shadow, subCtx) { return function $b() {
var $ptr, _r$4, _r$5, _selection, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$4 = $f._r$4; _r$5 = $f._r$5; _selection = $f._selection; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r$4 = subCtx[0].Done(); /* */ $s = 1; case 1: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_r$5 = $select([[oldCancel[0]], [_r$4]]); /* */ $s = 2; case 2: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_selection = _r$5;
/* */ if (_selection[0] === 0) { $s = 3; continue; }
/* */ if (_selection[0] === 1) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (_selection[0] === 0) { */ case 3:
$r = cancel[0](); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 5; continue;
/* } else if (_selection[0] === 1) { */ case 4:
/* } */ case 5:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._selection = _selection; $f.$s = $s; $f.$r = $r; return $f;
}; })(cancel, oldCancel, shadow, subCtx), []);
ctx = subCtx[0];
/* } */ case 9:
resolveCtx = ctx;
_r$4 = ctx.Value((x = new nettrace.TraceKey.ptr(), new x.constructor.elem(x))); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_tuple$3 = $assertType(_r$4, ptrType$7, true);
trace = _tuple$3[0];
/* */ if (!(trace === ptrType$7.nil)) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (!(trace === ptrType$7.nil)) { */ case 12:
shadow[0] = $clone(trace, nettrace.Trace);
shadow[0].ConnectStart = $throwNilPointerError;
shadow[0].ConnectDone = $throwNilPointerError;
_r$5 = 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$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
resolveCtx = _r$5;
/* } */ case 13:
_r$6 = d.resolver().resolveAddrList(resolveCtx, "dial", network, address, d.LocalAddr); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_tuple$4 = _r$6;
addrs = _tuple$4[0];
err = _tuple$4[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [$ifaceNil, new OpError.ptr("dial", network, $ifaceNil, $ifaceNil, err)];
}
dp = new dialParam.ptr($clone(d, Dialer), network, address);
_tmp = addrList.nil;
_tmp$1 = addrList.nil;
primaries = _tmp;
fallbacks = _tmp$1;
/* */ if (d.DualStack && network === "tcp") { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (d.DualStack && network === "tcp") { */ case 16:
_r$7 = addrs.partition(isIPv4); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_tuple$5 = _r$7;
primaries = _tuple$5[0];
fallbacks = _tuple$5[1];
$s = 18; continue;
/* } else { */ case 17:
primaries = addrs;
/* } */ case 18:
c = $ifaceNil;
/* */ if (fallbacks.$length > 0) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if (fallbacks.$length > 0) { */ case 20:
_r$8 = dialParallel(ctx, dp, primaries, fallbacks); /* */ $s = 23; case 23: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_tuple$6 = _r$8;
c = _tuple$6[0];
err = _tuple$6[1];
$s = 22; continue;
/* } else { */ case 21:
_r$9 = dialSerial(ctx, dp, primaries); /* */ $s = 24; case 24: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
_tuple$7 = _r$9;
c = _tuple$7[0];
err = _tuple$7[1];
/* } */ case 22:
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [$ifaceNil, err];
}
_tuple$8 = $assertType(c, ptrType$8, true);
tc = _tuple$8[0];
ok$1 = _tuple$8[1];
/* */ if (ok$1 && (x$2 = d.KeepAlive, (x$2.$high > 0 || (x$2.$high === 0 && x$2.$low > 0)))) { $s = 25; continue; }
/* */ $s = 26; continue;
/* if (ok$1 && (x$2 = d.KeepAlive, (x$2.$high > 0 || (x$2.$high === 0 && x$2.$low > 0)))) { */ case 25:
_r$10 = setKeepAlive(tc.conn.fd, true); /* */ $s = 27; case 27: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
_r$10;
_r$11 = setKeepAlivePeriod(tc.conn.fd, d.KeepAlive); /* */ $s = 28; case 28: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
_r$11;
$r = testHookSetKeepAlive(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 26:
$s = -1; return [c, $ifaceNil];
/* */ } 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.$ptr = $ptr; $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._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; } }
};
Dialer.prototype.DialContext = function(ctx, network, address) { return this.$val.DialContext(ctx, network, address); };
dialParallel = function(ctx, dp, primaries, fallbacks) {
var $ptr, _arg, _r, _r$1, _r$2, _r$3, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _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);
dp = [dp];
fallbacks = [fallbacks];
primaries = [primaries];
results = [results];
returned = [returned];
/* */ if (fallbacks[0].$length === 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (fallbacks[0].$length === 0) { */ case 1:
_r = dialSerial(ctx, dp[0], primaries[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 2:
returned[0] = new $Chan(structType$1, 0);
$deferred.push([function(_arg) { $close(_arg); }, [returned[0]]]);
results[0] = new $Chan(dialResult, 0);
startRacer = (function(dp, fallbacks, primaries, results, returned) { return function $b(ctx$1, primary) {
var $ptr, _r$1, _r$2, _r$3, _selection, _tuple, c, ctx$1, err, primary, ras, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _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:
ras = primaries[0];
if (!primary) {
ras = fallbacks[0];
}
_r$1 = dialSerial(ctx$1, dp[0], ras); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
c = _tuple[0];
err = _tuple[1];
_r$2 = $select([[results[0], new dialResult.ptr(c, err, primary, true)], [returned[0]]]); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_selection = _r$2;
/* */ if (_selection[0] === 0) { $s = 3; continue; }
/* */ if (_selection[0] === 1) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (_selection[0] === 0) { */ case 3:
$s = 5; continue;
/* } else if (_selection[0] === 1) { */ case 4:
/* */ if (!($interfaceIsEqual(c, $ifaceNil))) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!($interfaceIsEqual(c, $ifaceNil))) { */ case 6:
_r$3 = c.Close(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$3;
/* } */ case 7:
/* } */ case 5:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $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;
}; })(dp, fallbacks, primaries, results, returned);
_tmp = new dialResult.ptr($ifaceNil, $ifaceNil, false, false);
_tmp$1 = new dialResult.ptr($ifaceNil, $ifaceNil, false, false);
primary = $clone(_tmp, dialResult);
fallback = $clone(_tmp$1, dialResult);
_r$1 = context.WithCancel(ctx); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
primaryCtx = _tuple[0];
primaryCancel = _tuple[1];
$deferred.push([primaryCancel, []]);
$go(startRacer, [primaryCtx, true]);
fallbackTimer = time.NewTimer(dp[0].Dialer.fallbackDelay());
$deferred.push([$methodVal(fallbackTimer, "Stop"), []]);
/* while (true) { */ case 5:
_r$2 = $select([[fallbackTimer.C], [results[0]]]); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_selection = _r$2;
/* */ if (_selection[0] === 0) { $s = 8; continue; }
/* */ if (_selection[0] === 1) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (_selection[0] === 0) { */ case 8:
_r$3 = context.WithCancel(ctx); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$1 = _r$3;
fallbackCtx = _tuple$1[0];
fallbackCancel = _tuple$1[1];
$deferred.push([fallbackCancel, []]);
$go(startRacer, [fallbackCtx, false]);
$s = 10; continue;
/* } else if (_selection[0] === 1) { */ case 9:
res = $clone(_selection[1][0], dialResult);
if ($interfaceIsEqual(res.error, $ifaceNil)) {
$s = -1; return [res.Conn, $ifaceNil];
}
if (res.primary) {
dialResult.copy(primary, res);
} else {
dialResult.copy(fallback, res);
}
if (primary.done && fallback.done) {
$s = -1; return [$ifaceNil, primary.error];
}
if (res.primary && fallbackTimer.Stop()) {
fallbackTimer.Reset(new time.Duration(0, 0));
}
/* } */ case 10:
/* } */ $s = 5; continue; case 6:
$s = -1; return [$ifaceNil, $ifaceNil];
/* */ } return; } } catch(err) { $err = err; $s = -1; return [$ifaceNil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: dialParallel }; } $f.$ptr = $ptr; $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $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; } }
};
dialSerial = function(ctx, dp, ras) {
var $ptr, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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);
firstErr = $ifaceNil;
_ref = ras;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
i = _i;
ra = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_r = ctx.Done(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_selection = $select([[_r], []]);
/* */ if (_selection[0] === 0) { $s = 4; continue; }
/* */ if (_selection[0] === 1) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (_selection[0] === 0) { */ case 4:
_r$1 = ctx.Err(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$2 = mapErr(_r$1); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$s = -1; return [$ifaceNil, new OpError.ptr("dial", dp.network, dp.Dialer.LocalAddr, ra, _r$2)];
/* } else if (_selection[0] === 1) { */ case 5:
/* } */ case 6:
_r$3 = ctx.Deadline(); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple = _r$3;
deadline = $clone(_tuple[0], time.Time);
_tuple$1 = partialDeadline($clone(time.Now(), time.Time), $clone(deadline, time.Time), ras.$length - i >> 0);
partialDeadline$1 = $clone(_tuple$1[0], time.Time);
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
if ($interfaceIsEqual(firstErr, $ifaceNil)) {
firstErr = new OpError.ptr("dial", dp.network, dp.Dialer.LocalAddr, ra, err);
}
/* break; */ $s = 2; continue;
}
dialCtx = ctx;
/* */ if ($clone(partialDeadline$1, time.Time).Before($clone(deadline, time.Time))) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if ($clone(partialDeadline$1, time.Time).Before($clone(deadline, time.Time))) { */ case 10:
cancel = $throwNilPointerError;
_r$4 = context.WithDeadline(ctx, $clone(partialDeadline$1, time.Time)); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_tuple$2 = _r$4;
dialCtx = _tuple$2[0];
cancel = _tuple$2[1];
$deferred.push([cancel, []]);
/* } */ case 11:
_r$5 = dialSingle(dialCtx, dp, ra); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_tuple$3 = _r$5;
c = _tuple$3[0];
err = _tuple$3[1];
if ($interfaceIsEqual(err, $ifaceNil)) {
$s = -1; return [c, $ifaceNil];
}
if ($interfaceIsEqual(firstErr, $ifaceNil)) {
firstErr = err;
}
_i++;
/* } */ $s = 1; continue; case 2:
if ($interfaceIsEqual(firstErr, $ifaceNil)) {
firstErr = new OpError.ptr("dial", dp.network, $ifaceNil, $ifaceNil, errMissingAddress);
}
$s = -1; return [$ifaceNil, firstErr];
/* */ } return; } } catch(err) { $err = err; $s = -1; return [$ifaceNil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: dialSerial }; } $f.$ptr = $ptr; $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._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; } }
};
dialSingle = function(ctx, dp, ra) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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);
dp = [dp];
err = [err];
raStr = [raStr];
trace = [trace];
c = $ifaceNil;
err[0] = $ifaceNil;
_r = ctx.Value((x = new nettrace.TraceKey.ptr(), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = $assertType(_r, ptrType$7, true);
trace[0] = _tuple[0];
/* */ if (!(trace[0] === ptrType$7.nil)) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!(trace[0] === ptrType$7.nil)) { */ case 2:
_r$1 = ra.String(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
raStr[0] = _r$1;
/* */ if (!(trace[0].ConnectStart === $throwNilPointerError)) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (!(trace[0].ConnectStart === $throwNilPointerError)) { */ case 5:
$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; }
/* } */ case 6:
/* */ if (!(trace[0].ConnectDone === $throwNilPointerError)) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (!(trace[0].ConnectDone === $throwNilPointerError)) { */ case 8:
$deferred.push([(function(dp, err, raStr, trace) { return function $b() {
var $ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
}; })(dp, err, raStr, trace), []]);
/* } */ case 9:
/* } */ case 3:
la = dp[0].Dialer.LocalAddr;
_ref = ra;
/* */ if ($assertType(_ref, ptrType$4, true)[1]) { $s = 10; continue; }
/* */ if ($assertType(_ref, ptrType$5, true)[1]) { $s = 11; continue; }
/* */ if ($assertType(_ref, ptrType$6, true)[1]) { $s = 12; continue; }
/* */ if ($assertType(_ref, ptrType$9, true)[1]) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if ($assertType(_ref, ptrType$4, true)[1]) { */ case 10:
ra$1 = _ref.$val;
_tuple$1 = $assertType(la, ptrType$4, true);
la$1 = _tuple$1[0];
_r$2 = dialTCP(ctx, dp[0].network, la$1, ra$1); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$2 = _r$2;
c = _tuple$2[0];
err[0] = _tuple$2[1];
$s = 15; continue;
/* } else if ($assertType(_ref, ptrType$5, true)[1]) { */ case 11:
ra$2 = _ref.$val;
_tuple$3 = $assertType(la, ptrType$5, true);
la$2 = _tuple$3[0];
_r$3 = dialUDP(ctx, dp[0].network, la$2, ra$2); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$4 = _r$3;
c = _tuple$4[0];
err[0] = _tuple$4[1];
$s = 15; continue;
/* } else if ($assertType(_ref, ptrType$6, true)[1]) { */ case 12:
ra$3 = _ref.$val;
_tuple$5 = $assertType(la, ptrType$6, true);
la$3 = _tuple$5[0];
_r$4 = dialIP(ctx, dp[0].network, la$3, ra$3); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_tuple$6 = _r$4;
c = _tuple$6[0];
err[0] = _tuple$6[1];
$s = 15; continue;
/* } else if ($assertType(_ref, ptrType$9, true)[1]) { */ case 13:
ra$4 = _ref.$val;
_tuple$7 = $assertType(la, ptrType$9, true);
la$4 = _tuple$7[0];
_r$5 = dialUnix(ctx, dp[0].network, la$4, ra$4); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_tuple$8 = _r$5;
c = _tuple$8[0];
err[0] = _tuple$8[1];
$s = 15; continue;
/* } else { */ case 14:
ra$5 = _ref;
_tmp = $ifaceNil;
_tmp$1 = new OpError.ptr("dial", dp[0].network, la, ra$5, new AddrError.ptr("unexpected address type", dp[0].address));
c = _tmp;
err[0] = _tmp$1;
$s = -1; return [c, err[0]];
/* } */ case 15:
if (!($interfaceIsEqual(err[0], $ifaceNil))) {
_tmp$2 = $ifaceNil;
_tmp$3 = new OpError.ptr("dial", dp[0].network, la, ra, err[0]);
c = _tmp$2;
err[0] = _tmp$3;
$s = -1; return [c, err[0]];
}
_tmp$4 = c;
_tmp$5 = $ifaceNil;
c = _tmp$4;
err[0] = _tmp$5;
$s = -1; return [c, err[0]];
/* */ } 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.$ptr = $ptr; $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._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; } }
};
reverseaddr = function(addr) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, addr, arpa, buf, err, i, ip, v;
arpa = "";
err = $ifaceNil;
ip = ParseIP(addr);
if (ip === IP.nil) {
_tmp = "";
_tmp$1 = new DNSError.ptr("unrecognized address", addr, "", false, false);
arpa = _tmp;
err = _tmp$1;
return [arpa, err];
}
if (!(ip.To4() === IP.nil)) {
_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.";
_tmp$3 = $ifaceNil;
arpa = _tmp$2;
err = _tmp$3;
return [arpa, err];
}
buf = $makeSlice(sliceType$1, 0, (($imul(ip.$length, 4)) + 9 >> 0));
i = ip.$length - 1 >> 0;
while (true) {
if (!(i >= 0)) { break; }
v = ((i < 0 || i >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + i]);
buf = $append(buf, "0123456789abcdef".charCodeAt(((v & 15) >>> 0)));
buf = $append(buf, 46);
buf = $append(buf, "0123456789abcdef".charCodeAt((v >>> 4 << 24 >>> 24)));
buf = $append(buf, 46);
i = i - (1) >> 0;
}
buf = $appendSlice(buf, "ip6.arpa.");
_tmp$4 = ($bytesToString(buf));
_tmp$5 = $ifaceNil;
arpa = _tmp$4;
err = _tmp$5;
return [arpa, err];
};
absDomainName = function(b) {
var $ptr, _i, _ref, b, hasDots, x, x$1;
hasDots = false;
_ref = b;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (x === 46) {
hasDots = true;
break;
}
_i++;
}
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))) {
b = $append(b, 46);
}
return ($bytesToString(b));
};
byPriorityWeight.prototype.Len = function() {
var $ptr, s;
s = this;
return s.$length;
};
$ptrType(byPriorityWeight).prototype.Len = function() { return this.$get().Len(); };
byPriorityWeight.prototype.Less = function(i, j) {
var $ptr, i, j, s;
s = this;
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);
};
$ptrType(byPriorityWeight).prototype.Less = function(i, j) { return this.$get().Less(i, j); };
byPriorityWeight.prototype.Swap = function(i, j) {
var $ptr, _tmp, _tmp$1, i, j, s;
s = this;
_tmp = ((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]);
_tmp$1 = ((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] = _tmp);
((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j] = _tmp$1);
};
$ptrType(byPriorityWeight).prototype.Swap = function(i, j) { return this.$get().Swap(i, j); };
byPriorityWeight.prototype.shuffleByWeight = function() {
var $ptr, _i, _i$1, _r, _ref, _ref$1, _tmp, _tmp$1, addr, addrs, i, n, s, sum, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _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:
addrs = this;
sum = 0;
_ref = addrs;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
addr = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
sum = sum + (((addr.Weight >> 0))) >> 0;
_i++;
}
/* while (true) { */ case 1:
/* if (!(sum > 0 && addrs.$length > 1)) { break; } */ if(!(sum > 0 && addrs.$length > 1)) { $s = 2; continue; }
s = 0;
_r = rand.Intn(sum); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
n = _r;
_ref$1 = addrs;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
i = _i$1;
s = s + (((((i < 0 || i >= addrs.$length) ? ($throwRuntimeError("index out of range"), undefined) : addrs.$array[addrs.$offset + i]).Weight >> 0))) >> 0;
if (s > n) {
if (i > 0) {
_tmp = ((i < 0 || i >= addrs.$length) ? ($throwRuntimeError("index out of range"), undefined) : addrs.$array[addrs.$offset + i]);
_tmp$1 = (0 >= addrs.$length ? ($throwRuntimeError("index out of range"), undefined) : addrs.$array[addrs.$offset + 0]);
(0 >= addrs.$length ? ($throwRuntimeError("index out of range"), undefined) : addrs.$array[addrs.$offset + 0] = _tmp);
((i < 0 || i >= addrs.$length) ? ($throwRuntimeError("index out of range"), undefined) : addrs.$array[addrs.$offset + i] = _tmp$1);
}
break;
}
_i$1++;
}
sum = sum - ((((0 >= addrs.$length ? ($throwRuntimeError("index out of range"), undefined) : addrs.$array[addrs.$offset + 0]).Weight >> 0))) >> 0;
addrs = $subslice(addrs, 1);
/* } */ $s = 1; continue; case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: byPriorityWeight.prototype.shuffleByWeight }; } $f.$ptr = $ptr; $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $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;
};
$ptrType(byPriorityWeight).prototype.shuffleByWeight = function() { return this.$get().shuffleByWeight(); };
byPriorityWeight.prototype.sort = function() {
var $ptr, addrs, i, j, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; addrs = $f.addrs; i = $f.i; j = $f.j; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
addrs = this;
$r = sort.Sort(addrs); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
i = 0;
j = 1;
/* while (true) { */ case 2:
/* if (!(j < addrs.$length)) { break; } */ if(!(j < addrs.$length)) { $s = 3; continue; }
/* */ 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; }
/* */ $s = 5; continue;
/* 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:
$r = $subslice(addrs, i, j).shuffleByWeight(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
i = j;
/* } */ case 5:
j = j + (1) >> 0;
/* } */ $s = 2; continue; case 3:
$r = $subslice(addrs, i).shuffleByWeight(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: byPriorityWeight.prototype.sort }; } $f.$ptr = $ptr; $f.addrs = addrs; $f.i = i; $f.j = j; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(byPriorityWeight).prototype.sort = function() { return this.$get().sort(); };
byPref.prototype.Len = function() {
var $ptr, s;
s = this;
return s.$length;
};
$ptrType(byPref).prototype.Len = function() { return this.$get().Len(); };
byPref.prototype.Less = function(i, j) {
var $ptr, i, j, s;
s = this;
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;
};
$ptrType(byPref).prototype.Less = function(i, j) { return this.$get().Less(i, j); };
byPref.prototype.Swap = function(i, j) {
var $ptr, _tmp, _tmp$1, i, j, s;
s = this;
_tmp = ((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]);
_tmp$1 = ((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] = _tmp);
((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j] = _tmp$1);
};
$ptrType(byPref).prototype.Swap = function(i, j) { return this.$get().Swap(i, j); };
byPref.prototype.sort = function() {
var $ptr, _i, _r, _ref, _tmp, _tmp$1, i, j, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _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:
s = this;
_ref = s;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
i = _i;
_r = rand.Intn(i + 1 >> 0); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
j = _r;
_tmp = ((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]);
_tmp$1 = ((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] = _tmp);
((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j] = _tmp$1);
_i++;
/* } */ $s = 1; continue; case 2:
$r = sort.Sort(s); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: byPref.prototype.sort }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $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;
};
$ptrType(byPref).prototype.sort = function() { return this.$get().sort(); };
dnsRR_Header.ptr.prototype.Header = function() {
var $ptr, h;
h = this;
return h;
};
dnsRR_Header.prototype.Header = function() { return this.$val.Header(); };
dnsRR_Header.ptr.prototype.Walk = function(f) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _v, _v$1, _v$2, _v$3, f, h, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _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:
h = this;
_r = f((h.$ptr_Name || (h.$ptr_Name = new ptrType$13(function() { return this.$target.Name; }, function($v) { this.$target.Name = $v; }, h))), "Name", "domain"); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
if (!(_r)) { _v$3 = false; $s = 4; continue s; }
_r$1 = f((h.$ptr_Rrtype || (h.$ptr_Rrtype = new ptrType$12(function() { return this.$target.Rrtype; }, function($v) { this.$target.Rrtype = $v; }, h))), "Rrtype", ""); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_v$3 = _r$1; case 4:
if (!(_v$3)) { _v$2 = false; $s = 3; continue s; }
_r$2 = f((h.$ptr_Class || (h.$ptr_Class = new ptrType$12(function() { return this.$target.Class; }, function($v) { this.$target.Class = $v; }, h))), "Class", ""); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_v$2 = _r$2; case 3:
if (!(_v$2)) { _v$1 = false; $s = 2; continue s; }
_r$3 = f((h.$ptr_Ttl || (h.$ptr_Ttl = new ptrType$14(function() { return this.$target.Ttl; }, function($v) { this.$target.Ttl = $v; }, h))), "Ttl", ""); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_v$1 = _r$3; case 2:
if (!(_v$1)) { _v = false; $s = 1; continue s; }
_r$4 = f((h.$ptr_Rdlength || (h.$ptr_Rdlength = new ptrType$12(function() { return this.$target.Rdlength; }, function($v) { this.$target.Rdlength = $v; }, h))), "Rdlength", ""); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_v = _r$4; case 1:
$s = -1; return _v;
/* */ } return; } if ($f === undefined) { $f = { $blk: dnsRR_Header.ptr.prototype.Walk }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $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;
};
dnsRR_Header.prototype.Walk = function(f) { return this.$val.Walk(f); };
dnsRR_CNAME.ptr.prototype.Header = function() {
var $ptr, rr;
rr = this;
return rr.Hdr;
};
dnsRR_CNAME.prototype.Header = function() { return this.$val.Header(); };
dnsRR_CNAME.ptr.prototype.Walk = function(f) {
var $ptr, _r, _r$1, _v, f, rr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _v = $f._v; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
rr = this;
_r = rr.Hdr.Walk(f); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
if (!(_r)) { _v = false; $s = 1; continue s; }
_r$1 = f((rr.$ptr_Cname || (rr.$ptr_Cname = new ptrType$13(function() { return this.$target.Cname; }, function($v) { this.$target.Cname = $v; }, rr))), "Cname", "domain"); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_v = _r$1; case 1:
$s = -1; return _v;
/* */ } return; } if ($f === undefined) { $f = { $blk: dnsRR_CNAME.ptr.prototype.Walk }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._v = _v; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
};
dnsRR_CNAME.prototype.Walk = function(f) { return this.$val.Walk(f); };
dnsRR_MX.ptr.prototype.Header = function() {
var $ptr, rr;
rr = this;
return rr.Hdr;
};
dnsRR_MX.prototype.Header = function() { return this.$val.Header(); };
dnsRR_MX.ptr.prototype.Walk = function(f) {
var $ptr, _r, _r$1, _r$2, _v, _v$1, f, rr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _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:
rr = this;
_r = rr.Hdr.Walk(f); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
if (!(_r)) { _v$1 = false; $s = 2; continue s; }
_r$1 = f((rr.$ptr_Pref || (rr.$ptr_Pref = new ptrType$12(function() { return this.$target.Pref; }, function($v) { this.$target.Pref = $v; }, rr))), "Pref", ""); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_v$1 = _r$1; case 2:
if (!(_v$1)) { _v = false; $s = 1; continue s; }
_r$2 = f((rr.$ptr_Mx || (rr.$ptr_Mx = new ptrType$13(function() { return this.$target.Mx; }, function($v) { this.$target.Mx = $v; }, rr))), "Mx", "domain"); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_v = _r$2; case 1:
$s = -1; return _v;
/* */ } return; } if ($f === undefined) { $f = { $blk: dnsRR_MX.ptr.prototype.Walk }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._v = _v; $f._v$1 = _v$1; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
};
dnsRR_MX.prototype.Walk = function(f) { return this.$val.Walk(f); };
dnsRR_NS.ptr.prototype.Header = function() {
var $ptr, rr;
rr = this;
return rr.Hdr;
};
dnsRR_NS.prototype.Header = function() { return this.$val.Header(); };
dnsRR_NS.ptr.prototype.Walk = function(f) {
var $ptr, _r, _r$1, _v, f, rr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _v = $f._v; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
rr = this;
_r = rr.Hdr.Walk(f); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
if (!(_r)) { _v = false; $s = 1; continue s; }
_r$1 = f((rr.$ptr_Ns || (rr.$ptr_Ns = new ptrType$13(function() { return this.$target.Ns; }, function($v) { this.$target.Ns = $v; }, rr))), "Ns", "domain"); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_v = _r$1; case 1:
$s = -1; return _v;
/* */ } return; } if ($f === undefined) { $f = { $blk: dnsRR_NS.ptr.prototype.Walk }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._v = _v; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
};
dnsRR_NS.prototype.Walk = function(f) { return this.$val.Walk(f); };
dnsRR_PTR.ptr.prototype.Header = function() {
var $ptr, rr;
rr = this;
return rr.Hdr;
};
dnsRR_PTR.prototype.Header = function() { return this.$val.Header(); };
dnsRR_PTR.ptr.prototype.Walk = function(f) {
var $ptr, _r, _r$1, _v, f, rr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _v = $f._v; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
rr = this;
_r = rr.Hdr.Walk(f); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
if (!(_r)) { _v = false; $s = 1; continue s; }
_r$1 = f((rr.$ptr_Ptr || (rr.$ptr_Ptr = new ptrType$13(function() { return this.$target.Ptr; }, function($v) { this.$target.Ptr = $v; }, rr))), "Ptr", "domain"); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_v = _r$1; case 1:
$s = -1; return _v;
/* */ } return; } if ($f === undefined) { $f = { $blk: dnsRR_PTR.ptr.prototype.Walk }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._v = _v; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
};
dnsRR_PTR.prototype.Walk = function(f) { return this.$val.Walk(f); };
dnsRR_SOA.ptr.prototype.Header = function() {
var $ptr, rr;
rr = this;
return rr.Hdr;
};
dnsRR_SOA.prototype.Header = function() { return this.$val.Header(); };
dnsRR_SOA.ptr.prototype.Walk = function(f) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _v, _v$1, _v$2, _v$3, _v$4, _v$5, _v$6, f, rr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
rr = this;
_r = rr.Hdr.Walk(f); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
if (!(_r)) { _v$6 = false; $s = 7; continue s; }
_r$1 = f((rr.$ptr_Ns || (rr.$ptr_Ns = new ptrType$13(function() { return this.$target.Ns; }, function($v) { this.$target.Ns = $v; }, rr))), "Ns", "domain"); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_v$6 = _r$1; case 7:
if (!(_v$6)) { _v$5 = false; $s = 6; continue s; }
_r$2 = f((rr.$ptr_Mbox || (rr.$ptr_Mbox = new ptrType$13(function() { return this.$target.Mbox; }, function($v) { this.$target.Mbox = $v; }, rr))), "Mbox", "domain"); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_v$5 = _r$2; case 6:
if (!(_v$5)) { _v$4 = false; $s = 5; continue s; }
_r$3 = f((rr.$ptr_Serial || (rr.$ptr_Serial = new ptrType$14(function() { return this.$target.Serial; }, function($v) { this.$target.Serial = $v; }, rr))), "Serial", ""); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_v$4 = _r$3; case 5:
if (!(_v$4)) { _v$3 = false; $s = 4; continue s; }
_r$4 = f((rr.$ptr_Refresh || (rr.$ptr_Refresh = new ptrType$14(function() { return this.$target.Refresh; }, function($v) { this.$target.Refresh = $v; }, rr))), "Refresh", ""); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_v$3 = _r$4; case 4:
if (!(_v$3)) { _v$2 = false; $s = 3; continue s; }
_r$5 = f((rr.$ptr_Retry || (rr.$ptr_Retry = new ptrType$14(function() { return this.$target.Retry; }, function($v) { this.$target.Retry = $v; }, rr))), "Retry", ""); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_v$2 = _r$5; case 3:
if (!(_v$2)) { _v$1 = false; $s = 2; continue s; }
_r$6 = f((rr.$ptr_Expire || (rr.$ptr_Expire = new ptrType$14(function() { return this.$target.Expire; }, function($v) { this.$target.Expire = $v; }, rr))), "Expire", ""); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_v$1 = _r$6; case 2:
if (!(_v$1)) { _v = false; $s = 1; continue s; }
_r$7 = f((rr.$ptr_Minttl || (rr.$ptr_Minttl = new ptrType$14(function() { return this.$target.Minttl; }, function($v) { this.$target.Minttl = $v; }, rr))), "Minttl", ""); /* */ $s = 15; case 15: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_v = _r$7; case 1:
$s = -1; return _v;
/* */ } return; } if ($f === undefined) { $f = { $blk: dnsRR_SOA.ptr.prototype.Walk }; } $f.$ptr = $ptr; $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._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;
};
dnsRR_SOA.prototype.Walk = function(f) { return this.$val.Walk(f); };
dnsRR_TXT.ptr.prototype.Header = function() {
var $ptr, rr;
rr = this;
return rr.Hdr;
};
dnsRR_TXT.prototype.Header = function() { return this.$val.Header(); };
dnsRR_TXT.ptr.prototype.Walk = function(f) {
var $ptr, _r, _r$1, f, n, rr, txt, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; 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:
rr = this;
_r = rr.Hdr.Walk(f); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (!_r) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!_r) { */ case 1:
$s = -1; return false;
/* } */ case 2:
n = 0;
/* while (true) { */ case 4:
/* if (!(n < rr.Hdr.Rdlength)) { break; } */ if(!(n < rr.Hdr.Rdlength)) { $s = 5; continue; }
txt = [txt];
txt[0] = "";
_r$1 = f((txt.$ptr || (txt.$ptr = new ptrType$13(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, txt))), "Txt", ""); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
/* */ if (!_r$1) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!_r$1) { */ case 6:
$s = -1; return false;
/* } */ case 7:
if ((rr.Hdr.Rdlength - n << 16 >>> 16) < (((txt[0].length << 16 >>> 16)) + 1 << 16 >>> 16)) {
$s = -1; return false;
}
n = n + ((((txt[0].length << 16 >>> 16)) + 1 << 16 >>> 16)) << 16 >>> 16;
rr.Txt = rr.Txt + (txt[0]);
/* } */ $s = 4; continue; case 5:
$s = -1; return true;
/* */ } return; } if ($f === undefined) { $f = { $blk: dnsRR_TXT.ptr.prototype.Walk }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.f = f; $f.n = n; $f.rr = rr; $f.txt = txt; $f.$s = $s; $f.$r = $r; return $f;
};
dnsRR_TXT.prototype.Walk = function(f) { return this.$val.Walk(f); };
dnsRR_SRV.ptr.prototype.Header = function() {
var $ptr, rr;
rr = this;
return rr.Hdr;
};
dnsRR_SRV.prototype.Header = function() { return this.$val.Header(); };
dnsRR_SRV.ptr.prototype.Walk = function(f) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _v, _v$1, _v$2, _v$3, f, rr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _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:
rr = this;
_r = rr.Hdr.Walk(f); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
if (!(_r)) { _v$3 = false; $s = 4; continue s; }
_r$1 = f((rr.$ptr_Priority || (rr.$ptr_Priority = new ptrType$12(function() { return this.$target.Priority; }, function($v) { this.$target.Priority = $v; }, rr))), "Priority", ""); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_v$3 = _r$1; case 4:
if (!(_v$3)) { _v$2 = false; $s = 3; continue s; }
_r$2 = f((rr.$ptr_Weight || (rr.$ptr_Weight = new ptrType$12(function() { return this.$target.Weight; }, function($v) { this.$target.Weight = $v; }, rr))), "Weight", ""); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_v$2 = _r$2; case 3:
if (!(_v$2)) { _v$1 = false; $s = 2; continue s; }
_r$3 = f((rr.$ptr_Port || (rr.$ptr_Port = new ptrType$12(function() { return this.$target.Port; }, function($v) { this.$target.Port = $v; }, rr))), "Port", ""); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_v$1 = _r$3; case 2:
if (!(_v$1)) { _v = false; $s = 1; continue s; }
_r$4 = f((rr.$ptr_Target || (rr.$ptr_Target = new ptrType$13(function() { return this.$target.Target; }, function($v) { this.$target.Target = $v; }, rr))), "Target", "domain"); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_v = _r$4; case 1:
$s = -1; return _v;
/* */ } return; } if ($f === undefined) { $f = { $blk: dnsRR_SRV.ptr.prototype.Walk }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $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;
};
dnsRR_SRV.prototype.Walk = function(f) { return this.$val.Walk(f); };
dnsRR_A.ptr.prototype.Header = function() {
var $ptr, rr;
rr = this;
return rr.Hdr;
};
dnsRR_A.prototype.Header = function() { return this.$val.Header(); };
dnsRR_A.ptr.prototype.Walk = function(f) {
var $ptr, _r, _r$1, _v, f, rr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _v = $f._v; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
rr = this;
_r = rr.Hdr.Walk(f); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
if (!(_r)) { _v = false; $s = 1; continue s; }
_r$1 = f((rr.$ptr_A || (rr.$ptr_A = new ptrType$14(function() { return this.$target.A; }, function($v) { this.$target.A = $v; }, rr))), "A", "ipv4"); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_v = _r$1; case 1:
$s = -1; return _v;
/* */ } return; } if ($f === undefined) { $f = { $blk: dnsRR_A.ptr.prototype.Walk }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._v = _v; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
};
dnsRR_A.prototype.Walk = function(f) { return this.$val.Walk(f); };
dnsRR_AAAA.ptr.prototype.Header = function() {
var $ptr, rr;
rr = this;
return rr.Hdr;
};
dnsRR_AAAA.prototype.Header = function() { return this.$val.Header(); };
dnsRR_AAAA.ptr.prototype.Walk = function(f) {
var $ptr, _r, _r$1, _v, f, rr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _v = $f._v; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
rr = this;
_r = rr.Hdr.Walk(f); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
if (!(_r)) { _v = false; $s = 1; continue s; }
_r$1 = f(new sliceType$1(rr.AAAA), "AAAA", "ipv6"); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_v = _r$1; case 1:
$s = -1; return _v;
/* */ } return; } if ($f === undefined) { $f = { $blk: dnsRR_AAAA.ptr.prototype.Walk }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._v = _v; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
};
dnsRR_AAAA.prototype.Walk = function(f) { return this.$val.Walk(f); };
fdMutex.ptr.prototype.incref = function() {
var $ptr, mu, new$1, old, x, x$1;
mu = this;
while (true) {
old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$19(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))));
if (!((x = new $Uint64(old.$high & 0, (old.$low & 1) >>> 0), (x.$high === 0 && x.$low === 0)))) {
return false;
}
new$1 = new $Uint64(old.$high + 0, old.$low + 8);
if ((x$1 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388600) >>> 0), (x$1.$high === 0 && x$1.$low === 0))) {
$panic(new $String("net: inconsistent fdMutex"));
}
if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$19(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) {
return true;
}
}
};
fdMutex.prototype.incref = function() { return this.$val.incref(); };
fdMutex.ptr.prototype.increfAndClose = function() {
var $ptr, mu, new$1, old, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7;
mu = this;
while (true) {
old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$19(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))));
if (!((x = new $Uint64(old.$high & 0, (old.$low & 1) >>> 0), (x.$high === 0 && x.$low === 0)))) {
return false;
}
new$1 = (x$1 = new $Uint64(old.$high | 0, (old.$low | 1) >>> 0), new $Uint64(x$1.$high + 0, x$1.$low + 8));
if ((x$2 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388600) >>> 0), (x$2.$high === 0 && x$2.$low === 0))) {
$panic(new $String("net: inconsistent fdMutex"));
}
new$1 = (x$3 = new $Uint64(2147483647, 4286578688), new $Uint64(new$1.$high & ~x$3.$high, (new$1.$low & ~x$3.$low) >>> 0));
if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$19(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) {
while (true) {
if (!(!((x$4 = new $Uint64(old.$high & 2047, (old.$low & 4286578688) >>> 0), (x$4.$high === 0 && x$4.$low === 0))))) { break; }
old = (x$5 = new $Uint64(0, 8388608), new $Uint64(old.$high - x$5.$high, old.$low - x$5.$low));
runtime_Semrelease((mu.$ptr_rsema || (mu.$ptr_rsema = new ptrType$14(function() { return this.$target.rsema; }, function($v) { this.$target.rsema = $v; }, mu))));
}
while (true) {
if (!(!((x$6 = new $Uint64(old.$high & 2147481600, (old.$low & 0) >>> 0), (x$6.$high === 0 && x$6.$low === 0))))) { break; }
old = (x$7 = new $Uint64(2048, 0), new $Uint64(old.$high - x$7.$high, old.$low - x$7.$low));
runtime_Semrelease((mu.$ptr_wsema || (mu.$ptr_wsema = new ptrType$14(function() { return this.$target.wsema; }, function($v) { this.$target.wsema = $v; }, mu))));
}
return true;
}
}
};
fdMutex.prototype.increfAndClose = function() { return this.$val.increfAndClose(); };
fdMutex.ptr.prototype.decref = function() {
var $ptr, mu, new$1, old, x, x$1;
mu = this;
while (true) {
old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$19(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))));
if ((x = new $Uint64(old.$high & 0, (old.$low & 8388600) >>> 0), (x.$high === 0 && x.$low === 0))) {
$panic(new $String("net: inconsistent fdMutex"));
}
new$1 = new $Uint64(old.$high - 0, old.$low - 8);
if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$19(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) {
return (x$1 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388601) >>> 0), (x$1.$high === 0 && x$1.$low === 1));
}
}
};
fdMutex.prototype.decref = function() { return this.$val.decref(); };
fdMutex.ptr.prototype.rwlock = function(read) {
var $ptr, _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;
mu = this;
_tmp = new $Uint64(0, 0);
_tmp$1 = new $Uint64(0, 0);
_tmp$2 = new $Uint64(0, 0);
mutexBit = _tmp;
mutexWait = _tmp$1;
mutexMask = _tmp$2;
mutexSema = ptrType$14.nil;
if (read) {
mutexBit = new $Uint64(0, 2);
mutexWait = new $Uint64(0, 8388608);
mutexMask = new $Uint64(2047, 4286578688);
mutexSema = (mu.$ptr_rsema || (mu.$ptr_rsema = new ptrType$14(function() { return this.$target.rsema; }, function($v) { this.$target.rsema = $v; }, mu)));
} else {
mutexBit = new $Uint64(0, 4);
mutexWait = new $Uint64(2048, 0);
mutexMask = new $Uint64(2147481600, 0);
mutexSema = (mu.$ptr_wsema || (mu.$ptr_wsema = new ptrType$14(function() { return this.$target.wsema; }, function($v) { this.$target.wsema = $v; }, mu)));
}
while (true) {
old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$19(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))));
if (!((x = new $Uint64(old.$high & 0, (old.$low & 1) >>> 0), (x.$high === 0 && x.$low === 0)))) {
return false;
}
new$1 = new $Uint64(0, 0);
if ((x$1 = new $Uint64(old.$high & mutexBit.$high, (old.$low & mutexBit.$low) >>> 0), (x$1.$high === 0 && x$1.$low === 0))) {
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));
if ((x$3 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388600) >>> 0), (x$3.$high === 0 && x$3.$low === 0))) {
$panic(new $String("net: inconsistent fdMutex"));
}
} else {
new$1 = new $Uint64(old.$high + mutexWait.$high, old.$low + mutexWait.$low);
if ((x$4 = new $Uint64(new$1.$high & mutexMask.$high, (new$1.$low & mutexMask.$low) >>> 0), (x$4.$high === 0 && x$4.$low === 0))) {
$panic(new $String("net: inconsistent fdMutex"));
}
}
if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$19(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) {
if ((x$5 = new $Uint64(old.$high & mutexBit.$high, (old.$low & mutexBit.$low) >>> 0), (x$5.$high === 0 && x$5.$low === 0))) {
return true;
}
runtime_Semacquire(mutexSema);
}
}
};
fdMutex.prototype.rwlock = function(read) { return this.$val.rwlock(read); };
fdMutex.ptr.prototype.rwunlock = function(read) {
var $ptr, _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;
mu = this;
_tmp = new $Uint64(0, 0);
_tmp$1 = new $Uint64(0, 0);
_tmp$2 = new $Uint64(0, 0);
mutexBit = _tmp;
mutexWait = _tmp$1;
mutexMask = _tmp$2;
mutexSema = ptrType$14.nil;
if (read) {
mutexBit = new $Uint64(0, 2);
mutexWait = new $Uint64(0, 8388608);
mutexMask = new $Uint64(2047, 4286578688);
mutexSema = (mu.$ptr_rsema || (mu.$ptr_rsema = new ptrType$14(function() { return this.$target.rsema; }, function($v) { this.$target.rsema = $v; }, mu)));
} else {
mutexBit = new $Uint64(0, 4);
mutexWait = new $Uint64(2048, 0);
mutexMask = new $Uint64(2147481600, 0);
mutexSema = (mu.$ptr_wsema || (mu.$ptr_wsema = new ptrType$14(function() { return this.$target.wsema; }, function($v) { this.$target.wsema = $v; }, mu)));
}
while (true) {
old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$19(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))));
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))) {
$panic(new $String("net: inconsistent fdMutex"));
}
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));
if (!((x$3 = new $Uint64(old.$high & mutexMask.$high, (old.$low & mutexMask.$low) >>> 0), (x$3.$high === 0 && x$3.$low === 0)))) {
new$1 = (x$4 = mutexWait, new $Uint64(new$1.$high - x$4.$high, new$1.$low - x$4.$low));
}
if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$19(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) {
if (!((x$5 = new $Uint64(old.$high & mutexMask.$high, (old.$low & mutexMask.$low) >>> 0), (x$5.$high === 0 && x$5.$low === 0)))) {
runtime_Semrelease(mutexSema);
}
return (x$6 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388601) >>> 0), (x$6.$high === 0 && x$6.$low === 1));
}
}
};
fdMutex.prototype.rwunlock = function(read) { return this.$val.rwunlock(read); };
runtime_Semacquire = function() {
$throwRuntimeError("native function not implemented: net.runtime_Semacquire");
};
runtime_Semrelease = function() {
$throwRuntimeError("native function not implemented: net.runtime_Semrelease");
};
netFD.ptr.prototype.incref = function() {
var $ptr, fd;
fd = this;
if (!fd.fdmu.incref()) {
return errClosing;
}
return $ifaceNil;
};
netFD.prototype.incref = function() { return this.$val.incref(); };
netFD.ptr.prototype.decref = function() {
var $ptr, fd, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
fd = this;
/* */ if (fd.fdmu.decref()) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (fd.fdmu.decref()) { */ case 1:
$r = fd.destroy(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.decref }; } $f.$ptr = $ptr; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f;
};
netFD.prototype.decref = function() { return this.$val.decref(); };
netFD.ptr.prototype.readLock = function() {
var $ptr, fd;
fd = this;
if (!fd.fdmu.rwlock(true)) {
return errClosing;
}
return $ifaceNil;
};
netFD.prototype.readLock = function() { return this.$val.readLock(); };
netFD.ptr.prototype.readUnlock = function() {
var $ptr, fd, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
fd = this;
/* */ if (fd.fdmu.rwunlock(true)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (fd.fdmu.rwunlock(true)) { */ case 1:
$r = fd.destroy(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.readUnlock }; } $f.$ptr = $ptr; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f;
};
netFD.prototype.readUnlock = function() { return this.$val.readUnlock(); };
netFD.ptr.prototype.writeLock = function() {
var $ptr, fd;
fd = this;
if (!fd.fdmu.rwlock(false)) {
return errClosing;
}
return $ifaceNil;
};
netFD.prototype.writeLock = function() { return this.$val.writeLock(); };
netFD.ptr.prototype.writeUnlock = function() {
var $ptr, fd, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
fd = this;
/* */ if (fd.fdmu.rwunlock(false)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (fd.fdmu.rwunlock(false)) { */ case 1:
$r = fd.destroy(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.writeUnlock }; } $f.$ptr = $ptr; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f;
};
netFD.prototype.writeUnlock = function() { return this.$val.writeUnlock(); };
runtimeNano = function() {
$throwRuntimeError("native function not implemented: net.runtimeNano");
};
runtime_pollServerInit = function() {
$throwRuntimeError("native function not implemented: net.runtime_pollServerInit");
};
runtime_pollOpen = function() {
$throwRuntimeError("native function not implemented: net.runtime_pollOpen");
};
runtime_pollClose = function() {
$throwRuntimeError("native function not implemented: net.runtime_pollClose");
};
runtime_pollWait = function() {
$throwRuntimeError("native function not implemented: net.runtime_pollWait");
};
runtime_pollWaitCanceled = function() {
$throwRuntimeError("native function not implemented: net.runtime_pollWaitCanceled");
};
runtime_pollReset = function() {
$throwRuntimeError("native function not implemented: net.runtime_pollReset");
};
runtime_pollSetDeadline = function() {
$throwRuntimeError("native function not implemented: net.runtime_pollSetDeadline");
};
runtime_pollUnblock = function() {
$throwRuntimeError("native function not implemented: net.runtime_pollUnblock");
};
pollDesc.ptr.prototype.init = function(fd) {
var $ptr, _tuple, ctx, errno, fd, pd, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _tuple = $f._tuple; ctx = $f.ctx; errno = $f.errno; fd = $f.fd; pd = $f.pd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
pd = this;
$r = serverInit.Do(runtime_pollServerInit); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_tuple = runtime_pollOpen(((fd.sysfd >>> 0)));
ctx = _tuple[0];
errno = _tuple[1];
runtime.KeepAlive(fd);
if (!((errno === 0))) {
$s = -1; return new syscall.Errno(((errno >>> 0)));
}
pd.runtimeCtx = ctx;
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: pollDesc.ptr.prototype.init }; } $f.$ptr = $ptr; $f._tuple = _tuple; $f.ctx = ctx; $f.errno = errno; $f.fd = fd; $f.pd = pd; $f.$s = $s; $f.$r = $r; return $f;
};
pollDesc.prototype.init = function(fd) { return this.$val.init(fd); };
pollDesc.ptr.prototype.close = function() {
var $ptr, pd;
pd = this;
if (pd.runtimeCtx === 0) {
return;
}
runtime_pollClose(pd.runtimeCtx);
pd.runtimeCtx = 0;
};
pollDesc.prototype.close = function() { return this.$val.close(); };
pollDesc.ptr.prototype.evict = function() {
var $ptr, pd;
pd = this;
if (pd.runtimeCtx === 0) {
return;
}
runtime_pollUnblock(pd.runtimeCtx);
};
pollDesc.prototype.evict = function() { return this.$val.evict(); };
pollDesc.ptr.prototype.prepare = function(mode) {
var $ptr, mode, pd, res;
pd = this;
res = runtime_pollReset(pd.runtimeCtx, mode);
return convertErr(res);
};
pollDesc.prototype.prepare = function(mode) { return this.$val.prepare(mode); };
pollDesc.ptr.prototype.wait = function(mode) {
var $ptr, mode, pd, res;
pd = this;
res = runtime_pollWait(pd.runtimeCtx, mode);
return convertErr(res);
};
pollDesc.prototype.wait = function(mode) { return this.$val.wait(mode); };
pollDesc.ptr.prototype.waitCanceled = function(mode) {
var $ptr, mode, pd;
pd = this;
runtime_pollWaitCanceled(pd.runtimeCtx, mode);
};
pollDesc.prototype.waitCanceled = function(mode) { return this.$val.waitCanceled(mode); };
convertErr = function(res) {
var $ptr, _1, res;
_1 = res;
if (_1 === (0)) {
return $ifaceNil;
} else if (_1 === (1)) {
return errClosing;
} else if (_1 === (2)) {
return errTimeout;
}
console.log("unreachable: ", res);
$panic(new $String("unreachable"));
};
netFD.ptr.prototype.setDeadline = function(t) {
var $ptr, _r, fd, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; fd = $f.fd; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
fd = this;
_r = setDeadlineImpl(fd, $clone(t, time.Time), 233); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.setDeadline }; } $f.$ptr = $ptr; $f._r = _r; $f.fd = fd; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
netFD.prototype.setDeadline = function(t) { return this.$val.setDeadline(t); };
netFD.ptr.prototype.setReadDeadline = function(t) {
var $ptr, _r, fd, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; fd = $f.fd; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
fd = this;
_r = setDeadlineImpl(fd, $clone(t, time.Time), 114); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.setReadDeadline }; } $f.$ptr = $ptr; $f._r = _r; $f.fd = fd; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
netFD.prototype.setReadDeadline = function(t) { return this.$val.setReadDeadline(t); };
netFD.ptr.prototype.setWriteDeadline = function(t) {
var $ptr, _r, fd, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; fd = $f.fd; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
fd = this;
_r = setDeadlineImpl(fd, $clone(t, time.Time), 119); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.setWriteDeadline }; } $f.$ptr = $ptr; $f._r = _r; $f.fd = fd; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
netFD.prototype.setWriteDeadline = function(t) { return this.$val.setWriteDeadline(t); };
setDeadlineImpl = function(fd, t, mode) {
var $ptr, d, diff, err, fd, mode, t, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; d = $f.d; diff = $f.diff; err = $f.err; fd = $f.fd; mode = $f.mode; t = $f.t; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
diff = ((x = time.Until($clone(t, time.Time)), new $Int64(x.$high, x.$low)));
d = (x$1 = runtimeNano(), new $Int64(x$1.$high + diff.$high, x$1.$low + diff.$low));
if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0)) && (diff.$high > 0 || (diff.$high === 0 && diff.$low > 0))) {
d = new $Int64(2147483647, 4294967295);
}
if ($clone(t, time.Time).IsZero()) {
d = new $Int64(0, 0);
}
err = fd.incref();
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
runtime_pollSetDeadline(fd.pd.runtimeCtx, d, mode);
$r = fd.decref(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: setDeadlineImpl }; } $f.$ptr = $ptr; $f.d = d; $f.diff = diff; $f.err = err; $f.fd = fd; $f.mode = mode; $f.t = t; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
};
netFD.ptr.prototype.eofError = function(n, err) {
var $ptr, err, fd, n;
fd = this;
if ((n === 0) && $interfaceIsEqual(err, $ifaceNil) && !((fd.sotype === 2)) && !((fd.sotype === 3))) {
return io.EOF;
}
return err;
};
netFD.prototype.eofError = function(n, err) { return this.$val.eofError(n, err); };
canUseConnectEx = function(net) {
var $ptr, _1, net;
_1 = net;
if (_1 === ("tcp") || _1 === ("tcp4") || _1 === ("tcp6")) {
return true;
}
return false;
};
operation.ptr.prototype.InitBuf = function(buf) {
var $ptr, buf, o;
o = this;
o.buf.Len = ((buf.$length >>> 0));
o.buf.Buf = ptrType$18.nil;
if (!((buf.$length === 0))) {
o.buf.Buf = $indexPtr(buf.$array, buf.$offset + 0, ptrType$18);
}
};
operation.prototype.InitBuf = function(buf) { return this.$val.InitBuf(buf); };
operation.ptr.prototype.InitBufs = function(buf) {
var $ptr, _i, _ref, b, buf, o, p;
o = this;
if (o.bufs === sliceType$5.nil) {
o.bufs = $makeSlice(sliceType$5, 0, buf.$get().$length);
} else {
o.bufs = $subslice(o.bufs, 0, 0);
}
_ref = buf.$get();
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
p = ptrType$18.nil;
if (b.$length > 0) {
p = $indexPtr(b.$array, b.$offset + 0, ptrType$18);
}
o.bufs = $append(o.bufs, new syscall.WSABuf.ptr(((b.$length >>> 0)), p));
_i++;
}
};
operation.prototype.InitBufs = function(buf) { return this.$val.InitBufs(buf); };
operation.ptr.prototype.ClearBufs = function() {
var $ptr, _i, _ref, i, o, x;
o = this;
_ref = o.bufs;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
(x = o.bufs, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])).Buf = ptrType$18.nil;
_i++;
}
o.bufs = $subslice(o.bufs, 0, 0);
};
operation.prototype.ClearBufs = function() { return this.$val.ClearBufs(); };
ioSrv.ptr.prototype.ProcessRemoteIO = function() {
var $ptr, _1, _2, _r, _r$1, _tuple, r, s, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _2 = $f._2; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; r = $f.r; 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);
s = this;
runtime.LockOSThread();
$deferred.push([runtime.UnlockOSThread, []]);
_2 = s.req;
/* while (true) { */ case 1:
_r = $recv(_2); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
r = $clone(_tuple[0], ioSrvReq);
_1 = _tuple[1];
if (!_1) {
/* break; */ $s = 2; continue;
}
/* */ if (!(r.submit === $throwNilPointerError)) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!(r.submit === $throwNilPointerError)) { */ case 4:
_r$1 = r.submit(r.o); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$r = $send(r.o.errc, _r$1); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 6; continue;
/* } else { */ case 5:
$r = $send(r.o.errc, syscall.CancelIo(r.o.fd.sysfd)); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 6:
/* } */ $s = 1; continue; case 2:
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: ioSrv.ptr.prototype.ProcessRemoteIO }; } $f.$ptr = $ptr; $f._1 = _1; $f._2 = _2; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.r = r; $f.s = s; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
ioSrv.prototype.ProcessRemoteIO = function() { return this.$val.ProcessRemoteIO(); };
ioSrv.ptr.prototype.ExecIO = function(o, name, submit) {
var $ptr, _1, _2, _r, _r$1, _r$2, _r$3, err, err$1, fd, name, netpollErr, o, s, submit, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _2 = $f._2; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; err = $f.err; err$1 = $f.err$1; fd = $f.fd; name = $f.name; netpollErr = $f.netpollErr; o = $f.o; s = $f.s; submit = $f.submit; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
s = this;
fd = o.fd;
err = fd.pd.prepare(((o.mode >> 0)));
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [0, err];
}
/* */ if (canCancelIO) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (canCancelIO) { */ case 1:
_r = submit(o); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
$s = 3; continue;
/* } else { */ case 2:
$r = $send(s.req, $clone(new ioSrvReq.ptr(o, submit), ioSrvReq)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$1 = $recv(o.errc); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
err = _r$1[0];
/* } */ case 3:
_1 = err;
if ($interfaceIsEqual(_1, $ifaceNil)) {
if (o.fd.skipSyncNotif) {
$s = -1; return [((o.qty >> 0)), $ifaceNil];
}
} else if ($interfaceIsEqual(_1, new syscall.Errno((997)))) {
err = $ifaceNil;
} else {
$s = -1; return [0, err];
}
err = fd.pd.wait(((o.mode >> 0)));
if ($interfaceIsEqual(err, $ifaceNil)) {
if (!((o.errno === 0))) {
err = new syscall.Errno(((o.errno >>> 0)));
$s = -1; return [0, err];
}
$s = -1; return [((o.qty >> 0)), $ifaceNil];
}
netpollErr = err;
_2 = netpollErr;
/* */ if ($interfaceIsEqual(_2, (errClosing)) || $interfaceIsEqual(_2, (errTimeout))) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if ($interfaceIsEqual(_2, (errClosing)) || $interfaceIsEqual(_2, (errTimeout))) { */ case 8:
$s = 10; continue;
/* } else { */ case 9:
_r$2 = netpollErr.Error(); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$panic(new $String("net: unexpected runtime.netpoll error: " + _r$2));
/* } */ case 10:
case 7:
/* */ if (canCancelIO) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (canCancelIO) { */ case 12:
err$1 = syscall.CancelIoEx(fd.sysfd, o.o);
if (!($interfaceIsEqual(err$1, $ifaceNil)) && !($interfaceIsEqual(err$1, new syscall.Errno(1168)))) {
$panic(err$1);
}
$s = 14; continue;
/* } else { */ case 13:
$r = $send(s.req, $clone(new ioSrvReq.ptr(o, $throwNilPointerError), ioSrvReq)); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$3 = $recv(o.errc); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$3[0];
/* } */ case 14:
fd.pd.waitCanceled(((o.mode >> 0)));
if (!((o.errno === 0))) {
err = new syscall.Errno(((o.errno >>> 0)));
if ($interfaceIsEqual(err, new syscall.Errno(995))) {
err = netpollErr;
}
$s = -1; return [0, err];
}
$s = -1; return [((o.qty >> 0)), $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: ioSrv.ptr.prototype.ExecIO }; } $f.$ptr = $ptr; $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.err = err; $f.err$1 = err$1; $f.fd = fd; $f.name = name; $f.netpollErr = netpollErr; $f.o = o; $f.s = s; $f.submit = submit; $f.$s = $s; $f.$r = $r; return $f;
};
ioSrv.prototype.ExecIO = function(o, name, submit) { return this.$val.ExecIO(o, name, submit); };
startServer = function() {
var $ptr;
rsrv = new ioSrv.ptr($chanNil);
wsrv = new ioSrv.ptr($chanNil);
if (!canCancelIO) {
rsrv.req = new $Chan(ioSrvReq, 0);
$go($methodVal(rsrv, "ProcessRemoteIO"), []);
wsrv.req = new $Chan(ioSrvReq, 0);
$go($methodVal(wsrv, "ProcessRemoteIO"), []);
}
};
newFD = function(sysfd, family, sotype, net) {
var $ptr, family, net, sotype, sysfd, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; family = $f.family; net = $f.net; sotype = $f.sotype; sysfd = $f.sysfd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
if (!($interfaceIsEqual(initErr, $ifaceNil))) {
$s = -1; return [ptrType$21.nil, initErr];
}
$r = onceStartServer.Do(startServer); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return [new netFD.ptr(new fdMutex.ptr(new $Uint64(0, 0), 0, 0), sysfd, family, sotype, sotype === 1, false, false, net, $ifaceNil, $ifaceNil, new operation.ptr(new syscall.Overlapped.ptr(0, 0, 0, 0, 0), 0, 0, 0, 0, ptrType$21.nil, $chanNil, new syscall.WSABuf.ptr(0, ptrType$18.nil), $ifaceNil, ptrType$22.nil, 0, 0, 0, sliceType$5.nil), new operation.ptr(new syscall.Overlapped.ptr(0, 0, 0, 0, 0), 0, 0, 0, 0, ptrType$21.nil, $chanNil, new syscall.WSABuf.ptr(0, ptrType$18.nil), $ifaceNil, ptrType$22.nil, 0, 0, 0, sliceType$5.nil), new pollDesc.ptr(0)), $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: newFD }; } $f.$ptr = $ptr; $f.family = family; $f.net = net; $f.sotype = sotype; $f.sysfd = sysfd; $f.$s = $s; $f.$r = $r; return $f;
};
netFD.ptr.prototype.init = function() {
var $ptr, _1, _r, err, err$1, err$2, fd, flag, flags, ret, size, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _r = $f._r; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fd = $f.fd; flag = $f.flag; flags = $f.flags; ret = $f.ret; size = $f.size; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
flag = [flag];
ret = [ret];
fd = this;
_r = fd.pd.init(fd); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
if (hasLoadSetFileCompletionNotificationModes) {
flags = 2;
if (skipSyncNotif && fd.net === "tcp") {
flags = (flags | (1)) >>> 0;
}
err$1 = syscall.SetFileCompletionNotificationModes(fd.sysfd, flags);
if ($interfaceIsEqual(err$1, $ifaceNil) && !((((flags & 1) >>> 0) === 0))) {
fd.skipSyncNotif = true;
}
}
_1 = fd.net;
if (_1 === ("udp") || _1 === ("udp4") || _1 === ("udp6")) {
ret[0] = 0;
flag[0] = 0;
size = 4;
err$2 = syscall.WSAIoctl(fd.sysfd, 2550136844, (((flag.$ptr || (flag.$ptr = new ptrType$14(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, flag))))), size, ptrType$18.nil, 0, (ret.$ptr || (ret.$ptr = new ptrType$14(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, ret))), ptrType$23.nil, 0);
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return os.NewSyscallError("wsaioctl", err$2);
}
}
fd.rop.mode = 114;
fd.wop.mode = 119;
fd.rop.fd = fd;
fd.wop.fd = fd;
fd.rop.runtimeCtx = fd.pd.runtimeCtx;
fd.wop.runtimeCtx = fd.pd.runtimeCtx;
if (!canCancelIO) {
fd.rop.errc = new $Chan($error, 0);
fd.wop.errc = new $Chan($error, 0);
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.init }; } $f.$ptr = $ptr; $f._1 = _1; $f._r = _r; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fd = fd; $f.flag = flag; $f.flags = flags; $f.ret = ret; $f.size = size; $f.$s = $s; $f.$r = $r; return $f;
};
netFD.prototype.init = function() { return this.$val.init(); };
netFD.ptr.prototype.setAddr = function(laddr, raddr) {
var $ptr, fd, laddr, raddr;
fd = this;
fd.laddr = laddr;
fd.raddr = raddr;
runtime.SetFinalizer(fd, new funcType($methodExpr(ptrType$21, "Close")));
};
netFD.prototype.setAddr = function(laddr, raddr) { return this.$val.setAddr(laddr, raddr); };
netFD.ptr.prototype.connect = function(ctx, la, ra) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, _selection, _tuple, _tuple$1, _tuple$2, ctx, deadline, done, err, err$1, err$2, err$3, fd, la, o, ok, ok$1, ra, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _selection = $f._selection; _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; fd = $f.fd; la = $f.la; o = $f.o; ok = $f.ok; ok$1 = $f.ok$1; ra = $f.ra; $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);
ctx = [ctx];
done = [done];
fd = [fd];
fd[0] = this;
_r = fd[0].init(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
_r$1 = ctx[0].Deadline(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
deadline = $clone(_tuple[0], time.Time);
ok = _tuple[1];
/* */ if (ok && !$clone(deadline, time.Time).IsZero()) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (ok && !$clone(deadline, time.Time).IsZero()) { */ case 3:
_r$2 = fd[0].setWriteDeadline($clone(deadline, time.Time)); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
$deferred.push([$methodVal(fd[0], "setWriteDeadline"), [$clone(noDeadline, time.Time)]]);
/* } */ case 4:
/* */ if (!canUseConnectEx(fd[0].net)) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!canUseConnectEx(fd[0].net)) { */ case 6:
_r$3 = connectFunc(fd[0].sysfd, ra); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
err$1 = _r$3;
$s = -1; return os.NewSyscallError("connect", err$1);
/* } */ case 7:
/* */ if ($interfaceIsEqual(la, $ifaceNil)) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if ($interfaceIsEqual(la, $ifaceNil)) { */ case 9:
_ref = ra;
if ($assertType(_ref, ptrType$24, true)[1]) {
la = new syscall.SockaddrInet4.ptr(0, arrayType$1.zero(), new syscall.RawSockaddrInet4.ptr(0, 0, arrayType$1.zero(), arrayType$2.zero()));
} else if ($assertType(_ref, ptrType$25, true)[1]) {
la = new syscall.SockaddrInet6.ptr(0, 0, arrayType.zero(), new syscall.RawSockaddrInet6.ptr(0, 0, 0, arrayType.zero(), 0));
} else {
$panic(new $String("unexpected type in connect"));
}
_r$4 = syscall.Bind(fd[0].sysfd, la); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
err$2 = _r$4;
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return os.NewSyscallError("bind", err$2);
}
/* } */ case 10:
o = fd[0].wop;
o.sa = ra;
done[0] = new $Chan($Bool, 0);
$deferred.push([(function(ctx, done, fd) { return function $b() {
var $ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = $send(done[0], true); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
}; })(ctx, done, fd), []]);
$go((function(ctx, done, fd) { return function $b() {
var $ptr, _r$5, _r$6, _r$7, _r$8, _selection, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _selection = $f._selection; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r$5 = ctx[0].Done(); /* */ $s = 1; case 1: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_r$6 = $select([[_r$5], [done[0]]]); /* */ $s = 2; case 2: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_selection = _r$6;
/* */ if (_selection[0] === 0) { $s = 3; continue; }
/* */ if (_selection[0] === 1) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (_selection[0] === 0) { */ case 3:
_r$7 = fd[0].setWriteDeadline($clone(aLongTimeAgo, time.Time)); /* */ $s = 6; case 6: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_r$7;
_r$8 = $recv(done[0]); /* */ $s = 7; case 7: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_r$8[0];
$s = 5; continue;
/* } else if (_selection[0] === 1) { */ case 4:
/* } */ case 5:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._selection = _selection; $f.$s = $s; $f.$r = $r; return $f;
}; })(ctx, done, fd), []);
_r$5 = wsrv.ExecIO(o, "ConnectEx", (function(ctx, done, fd) { return function $b(o$1) {
var $ptr, _r$5, o$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$5 = $f._r$5; o$1 = $f.o$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r$5 = connectExFunc(o$1.fd.sysfd, o$1.sa, ptrType$18.nil, 0, ptrType$14.nil, o$1.o); /* */ $s = 1; case 1: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
$s = -1; return _r$5;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r$5 = _r$5; $f.o$1 = o$1; $f.$s = $s; $f.$r = $r; return $f;
}; })(ctx, done, fd)); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_tuple$1 = _r$5;
err$3 = _tuple$1[1];
/* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 13:
_r$6 = ctx[0].Done(); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_selection = $select([[_r$6], []]);
/* */ if (_selection[0] === 0) { $s = 16; continue; }
/* */ if (_selection[0] === 1) { $s = 17; continue; }
/* */ $s = 18; continue;
/* if (_selection[0] === 0) { */ case 16:
_r$7 = ctx[0].Err(); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_r$8 = mapErr(_r$7); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
$s = -1; return _r$8;
/* } else if (_selection[0] === 1) { */ case 17:
_tuple$2 = $assertType(err$3, syscall.Errno, true);
ok$1 = _tuple$2[1];
if (ok$1) {
err$3 = os.NewSyscallError("connectex", err$3);
}
$s = -1; return err$3;
/* } */ case 18:
/* } */ case 14:
$s = -1; return os.NewSyscallError("setsockopt", syscall.Setsockopt(fd[0].sysfd, 65535, 28688, (((fd[0].$ptr_sysfd || (fd[0].$ptr_sysfd = new ptrType$26(function() { return this.$target.sysfd; }, function($v) { this.$target.sysfd = $v; }, fd[0]))))), 4));
/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.connect }; } $f.$ptr = $ptr; $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._selection = _selection; $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.fd = fd; $f.la = la; $f.o = o; $f.ok = ok; $f.ok$1 = ok$1; $f.ra = ra; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
netFD.prototype.connect = function(ctx, la, ra) { return this.$val.connect(ctx, la, ra); };
netFD.ptr.prototype.destroy = function() {
var $ptr, _r, fd, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
fd = this;
if (fd.sysfd === 4294967295) {
$s = -1; return;
}
fd.pd.close();
_r = closeFunc(fd.sysfd); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
fd.sysfd = 4294967295;
runtime.SetFinalizer(fd, $ifaceNil);
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.destroy }; } $f.$ptr = $ptr; $f._r = _r; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f;
};
netFD.prototype.destroy = function() { return this.$val.destroy(); };
netFD.ptr.prototype.Close = function() {
var $ptr, fd, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
fd = this;
if (!fd.fdmu.increfAndClose()) {
$s = -1; return errClosing;
}
fd.pd.evict();
$r = fd.decref(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.Close }; } $f.$ptr = $ptr; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f;
};
netFD.prototype.Close = function() { return this.$val.Close(); };
netFD.ptr.prototype.shutdown = function(how) {
var $ptr, err, fd, how, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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);
fd = this;
err = fd.incref();
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
$deferred.push([$methodVal(fd, "decref"), []]);
$s = -1; return syscall.Shutdown(fd.sysfd, how);
/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.shutdown }; } $f.$ptr = $ptr; $f.err = err; $f.fd = fd; $f.how = how; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
netFD.prototype.shutdown = function(how) { return this.$val.shutdown(how); };
netFD.ptr.prototype.closeRead = function() {
var $ptr, _r, fd, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
fd = this;
_r = fd.shutdown(0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.closeRead }; } $f.$ptr = $ptr; $f._r = _r; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f;
};
netFD.prototype.closeRead = function() { return this.$val.closeRead(); };
netFD.ptr.prototype.closeWrite = function() {
var $ptr, _r, fd, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
fd = this;
_r = fd.shutdown(1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.closeWrite }; } $f.$ptr = $ptr; $f._r = _r; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f;
};
netFD.prototype.closeWrite = function() { return this.$val.closeWrite(); };
netFD.ptr.prototype.Read = function(buf) {
var $ptr, _r, _tuple, _tuple$1, buf, err, err$1, fd, n, o, ok, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; buf = $f.buf; err = $f.err; err$1 = $f.err$1; fd = $f.fd; n = $f.n; o = $f.o; 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);
fd = this;
err = fd.readLock();
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [0, err];
}
$deferred.push([$methodVal(fd, "readUnlock"), []]);
o = fd.rop;
o.InitBuf(buf);
_r = rsrv.ExecIO(o, "WSARecv", (function(o$1) {
var $ptr, o$1;
return syscall.WSARecv(o$1.fd.sysfd, o$1.buf, 1, (o$1.$ptr_qty || (o$1.$ptr_qty = new ptrType$14(function() { return this.$target.qty; }, function($v) { this.$target.qty = $v; }, o$1))), (o$1.$ptr_flags || (o$1.$ptr_flags = new ptrType$14(function() { return this.$target.flags; }, function($v) { this.$target.flags = $v; }, o$1))), o$1.o, ptrType$18.nil);
})); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err$1 = _tuple[1];
if (false) {
race.Acquire(((ioSync$24ptr || (ioSync$24ptr = new ptrType$19(function() { return ioSync; }, function($v) { ioSync = $v; })))));
}
if (!((buf.$length === 0))) {
err$1 = fd.eofError(n, err$1);
}
_tuple$1 = $assertType(err$1, syscall.Errno, true);
ok = _tuple$1[1];
if (ok) {
err$1 = os.NewSyscallError("wsarecv", err$1);
}
$s = -1; return [n, err$1];
/* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.buf = buf; $f.err = err; $f.err$1 = err$1; $f.fd = fd; $f.n = n; $f.o = o; $f.ok = ok; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
netFD.prototype.Read = function(buf) { return this.$val.Read(buf); };
netFD.ptr.prototype.readFrom = function(buf) {
var $ptr, _r, _tuple, _tuple$1, _tuple$2, buf, err, err$1, fd, n, o, ok, sa, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; buf = $f.buf; err = $f.err; err$1 = $f.err$1; fd = $f.fd; n = $f.n; o = $f.o; ok = $f.ok; 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);
fd = this;
if (buf.$length === 0) {
$s = -1; return [0, $ifaceNil, $ifaceNil];
}
err = fd.readLock();
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [0, $ifaceNil, err];
}
$deferred.push([$methodVal(fd, "readUnlock"), []]);
o = fd.rop;
o.InitBuf(buf);
_r = rsrv.ExecIO(o, "WSARecvFrom", (function(o$1) {
var $ptr, o$1;
if (o$1.rsa === ptrType$22.nil) {
o$1.rsa = new syscall.RawSockaddrAny.ptr(new syscall.RawSockaddr.ptr(0, arrayType$3.zero()), arrayType$4.zero());
}
o$1.rsan = 112;
return syscall.WSARecvFrom(o$1.fd.sysfd, o$1.buf, 1, (o$1.$ptr_qty || (o$1.$ptr_qty = new ptrType$14(function() { return this.$target.qty; }, function($v) { this.$target.qty = $v; }, o$1))), (o$1.$ptr_flags || (o$1.$ptr_flags = new ptrType$14(function() { return this.$target.flags; }, function($v) { this.$target.flags = $v; }, o$1))), o$1.rsa, (o$1.$ptr_rsan || (o$1.$ptr_rsan = new ptrType$27(function() { return this.$target.rsan; }, function($v) { this.$target.rsan = $v; }, o$1))), o$1.o, ptrType$18.nil);
})); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err$1 = _tuple[1];
err$1 = fd.eofError(n, err$1);
_tuple$1 = $assertType(err$1, syscall.Errno, true);
ok = _tuple$1[1];
if (ok) {
err$1 = os.NewSyscallError("wsarecvfrom", err$1);
}
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return [n, $ifaceNil, err$1];
}
_tuple$2 = o.rsa.Sockaddr();
sa = _tuple$2[0];
$s = -1; return [n, sa, $ifaceNil];
/* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.readFrom }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.buf = buf; $f.err = err; $f.err$1 = err$1; $f.fd = fd; $f.n = n; $f.o = o; $f.ok = ok; $f.sa = sa; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
netFD.prototype.readFrom = function(buf) { return this.$val.readFrom(buf); };
netFD.ptr.prototype.Write = function(buf) {
var $ptr, _r, _tuple, _tuple$1, buf, err, err$1, fd, n, o, ok, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; buf = $f.buf; err = $f.err; err$1 = $f.err$1; fd = $f.fd; n = $f.n; o = $f.o; 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);
fd = this;
err = fd.writeLock();
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [0, err];
}
$deferred.push([$methodVal(fd, "writeUnlock"), []]);
if (false) {
race.ReleaseMerge(((ioSync$24ptr || (ioSync$24ptr = new ptrType$19(function() { return ioSync; }, function($v) { ioSync = $v; })))));
}
o = fd.wop;
o.InitBuf(buf);
_r = wsrv.ExecIO(o, "WSASend", (function(o$1) {
var $ptr, o$1;
return syscall.WSASend(o$1.fd.sysfd, o$1.buf, 1, (o$1.$ptr_qty || (o$1.$ptr_qty = new ptrType$14(function() { return this.$target.qty; }, function($v) { this.$target.qty = $v; }, o$1))), 0, o$1.o, ptrType$18.nil);
})); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err$1 = _tuple[1];
_tuple$1 = $assertType(err$1, syscall.Errno, true);
ok = _tuple$1[1];
if (ok) {
err$1 = os.NewSyscallError("wsasend", err$1);
}
$s = -1; return [n, err$1];
/* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.buf = buf; $f.err = err; $f.err$1 = err$1; $f.fd = fd; $f.n = n; $f.o = o; $f.ok = ok; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
netFD.prototype.Write = function(buf) { return this.$val.Write(buf); };
conn.ptr.prototype.writeBuffers = function(v) {
var $ptr, _r, _tuple, c, err, n, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
c = this;
if (!c.ok()) {
$s = -1; return [new $Int64(0, 0), new syscall.Errno(536870951)];
}
_r = c.fd.writeBuffers(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [n, new OpError.ptr("WSASend", c.fd.net, c.fd.laddr, c.fd.raddr, err)];
}
$s = -1; return [n, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.writeBuffers }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.n = n; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
conn.prototype.writeBuffers = function(v) { return this.$val.writeBuffers(v); };
netFD.ptr.prototype.writeBuffers = function(buf) {
var $ptr, _r, _tuple, _tuple$1, buf, err, err$1, fd, n, o, ok, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; buf = $f.buf; err = $f.err; err$1 = $f.err$1; fd = $f.fd; n = $f.n; o = $f.o; 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);
buf = [buf];
fd = this;
if (buf[0].$get().$length === 0) {
$s = -1; return [new $Int64(0, 0), $ifaceNil];
}
err = fd.writeLock();
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [new $Int64(0, 0), err];
}
$deferred.push([$methodVal(fd, "writeUnlock"), []]);
if (false) {
race.ReleaseMerge(((ioSync$24ptr || (ioSync$24ptr = new ptrType$19(function() { return ioSync; }, function($v) { ioSync = $v; })))));
}
o = fd.wop;
o.InitBufs(buf[0]);
_r = wsrv.ExecIO(o, "WSASend", (function(buf) { return function(o$1) {
var $ptr, o$1, x;
return syscall.WSASend(o$1.fd.sysfd, (x = o$1.bufs, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])), ((buf[0].$get().$length >>> 0)), (o$1.$ptr_qty || (o$1.$ptr_qty = new ptrType$14(function() { return this.$target.qty; }, function($v) { this.$target.qty = $v; }, o$1))), 0, o$1.o, ptrType$18.nil);
}; })(buf)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err$1 = _tuple[1];
o.ClearBufs();
_tuple$1 = $assertType(err$1, syscall.Errno, true);
ok = _tuple$1[1];
if (ok) {
err$1 = os.NewSyscallError("wsasend", err$1);
}
$r = testHookDidWritev(n); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
buf[0].consume((new $Int64(0, n)));
$s = -1; return [(new $Int64(0, n)), err$1];
/* */ } 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: netFD.ptr.prototype.writeBuffers }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.buf = buf; $f.err = err; $f.err$1 = err$1; $f.fd = fd; $f.n = n; $f.o = o; $f.ok = ok; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
netFD.prototype.writeBuffers = function(buf) { return this.$val.writeBuffers(buf); };
netFD.ptr.prototype.writeTo = function(buf, sa) {
var $ptr, _r, _tuple, _tuple$1, buf, err, err$1, fd, n, o, ok, sa, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; buf = $f.buf; err = $f.err; err$1 = $f.err$1; fd = $f.fd; n = $f.n; o = $f.o; ok = $f.ok; 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);
fd = this;
if (buf.$length === 0) {
$s = -1; return [0, $ifaceNil];
}
err = fd.writeLock();
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [0, err];
}
$deferred.push([$methodVal(fd, "writeUnlock"), []]);
o = fd.wop;
o.InitBuf(buf);
o.sa = sa;
_r = wsrv.ExecIO(o, "WSASendto", (function $b(o$1) {
var $ptr, _r, o$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; o$1 = $f.o$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = syscall.WSASendto(o$1.fd.sysfd, o$1.buf, 1, (o$1.$ptr_qty || (o$1.$ptr_qty = new ptrType$14(function() { return this.$target.qty; }, function($v) { this.$target.qty = $v; }, o$1))), 0, o$1.sa, o$1.o, ptrType$18.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f.o$1 = o$1; $f.$s = $s; $f.$r = $r; return $f;
})); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err$1 = _tuple[1];
_tuple$1 = $assertType(err$1, syscall.Errno, true);
ok = _tuple$1[1];
if (ok) {
err$1 = os.NewSyscallError("wsasendto", err$1);
}
$s = -1; return [n, err$1];
/* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.writeTo }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.buf = buf; $f.err = err; $f.err$1 = err$1; $f.fd = fd; $f.n = n; $f.o = o; $f.ok = ok; $f.sa = sa; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
netFD.prototype.writeTo = function(buf, sa) { return this.$val.writeTo(buf, sa); };
netFD.ptr.prototype.acceptOne = function(rawsa, o) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, _tuple$1, _tuple$2, _tuple$3, err, err$1, fd, netfd, o, ok, rawsa, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; err = $f.err; err$1 = $f.err$1; fd = $f.fd; netfd = $f.netfd; o = $f.o; ok = $f.ok; rawsa = $f.rawsa; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
rawsa = [rawsa];
fd = this;
_r = sysSocket(fd.family, fd.sotype, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
s = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$21.nil, err];
}
_r$1 = newFD(s, fd.family, fd.sotype, fd.net); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple$1 = _r$1;
netfd = _tuple$1[0];
err = _tuple$1[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 3:
_r$2 = closeFunc(s); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
$s = -1; return [ptrType$21.nil, err];
/* } */ case 4:
_r$3 = netfd.init(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
err$1 = _r$3;
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 7:
_r$4 = fd.Close(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_r$4;
$s = -1; return [ptrType$21.nil, err$1];
/* } */ case 8:
o.handle = s;
o.rsan = 112;
_r$5 = rsrv.ExecIO(o, "AcceptEx", (function(rawsa) { return function $b(o$1) {
var $ptr, _r$5, o$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$5 = $f._r$5; o$1 = $f.o$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r$5 = acceptFunc(o$1.fd.sysfd, o$1.handle, (($sliceToArray(rawsa[0]))), 0, ((o$1.rsan >>> 0)), ((o$1.rsan >>> 0)), (o$1.$ptr_qty || (o$1.$ptr_qty = new ptrType$14(function() { return this.$target.qty; }, function($v) { this.$target.qty = $v; }, o$1))), o$1.o); /* */ $s = 1; case 1: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
$s = -1; return _r$5;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r$5 = _r$5; $f.o$1 = o$1; $f.$s = $s; $f.$r = $r; return $f;
}; })(rawsa)); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_tuple$2 = _r$5;
err = _tuple$2[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 11:
_r$6 = netfd.Close(); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_r$6;
_tuple$3 = $assertType(err, syscall.Errno, true);
ok = _tuple$3[1];
if (ok) {
err = os.NewSyscallError("acceptex", err);
}
$s = -1; return [ptrType$21.nil, err];
/* } */ case 12:
err = syscall.Setsockopt(s, 65535, 28683, (((fd.$ptr_sysfd || (fd.$ptr_sysfd = new ptrType$26(function() { return this.$target.sysfd; }, function($v) { this.$target.sysfd = $v; }, fd))))), 4);
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 14:
_r$7 = netfd.Close(); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_r$7;
$s = -1; return [ptrType$21.nil, os.NewSyscallError("setsockopt", err)];
/* } */ case 15:
runtime.KeepAlive(fd);
$s = -1; return [netfd, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.acceptOne }; } $f.$ptr = $ptr; $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._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.err = err; $f.err$1 = err$1; $f.fd = fd; $f.netfd = netfd; $f.o = o; $f.ok = ok; $f.rawsa = rawsa; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
netFD.prototype.acceptOne = function(rawsa, o) { return this.$val.acceptOne(rawsa, o); };
netFD.ptr.prototype.accept = function() {
var $ptr, _1, _arg, _arg$1, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, err, err$1, errno, fd, llen, lrsa, lsa, nerr, netfd, o, ok, rawsa, rlen, rrsa, rsa, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _arg = $f._arg; _arg$1 = $f._arg$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; _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; err = $f.err; err$1 = $f.err$1; errno = $f.errno; fd = $f.fd; llen = $f.llen; lrsa = $f.lrsa; lsa = $f.lsa; nerr = $f.nerr; netfd = $f.netfd; o = $f.o; ok = $f.ok; rawsa = $f.rawsa; rlen = $f.rlen; rrsa = $f.rrsa; rsa = $f.rsa; $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);
llen = [llen];
lrsa = [lrsa];
rlen = [rlen];
rrsa = [rrsa];
fd = this;
err = fd.readLock();
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$21.nil, err];
}
$deferred.push([$methodVal(fd, "readUnlock"), []]);
o = fd.rop;
netfd = ptrType$21.nil;
err$1 = $ifaceNil;
rawsa = arrayType$5.zero();
/* while (true) { */ case 1:
_r = fd.acceptOne(new sliceType$6(rawsa), o); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
netfd = _tuple[0];
err$1 = _tuple[1];
if ($interfaceIsEqual(err$1, $ifaceNil)) {
/* break; */ $s = 2; continue;
}
_tuple$1 = $assertType(err$1, ptrType$28, true);
nerr = _tuple$1[0];
ok = _tuple$1[1];
if (!ok) {
$s = -1; return [ptrType$21.nil, err$1];
}
_tuple$2 = $assertType(nerr.Err, syscall.Errno, true);
errno = _tuple$2[0];
ok = _tuple$2[1];
if (!ok) {
$s = -1; return [ptrType$21.nil, err$1];
}
_1 = errno;
if ((_1 === (64)) || (_1 === (10054))) {
} else {
$s = -1; return [ptrType$21.nil, err$1];
}
/* } */ $s = 1; continue; case 2:
_tmp = ptrType$22.nil;
_tmp$1 = ptrType$22.nil;
lrsa[0] = _tmp;
rrsa[0] = _tmp$1;
_tmp$2 = 0;
_tmp$3 = 0;
llen[0] = _tmp$2;
rlen[0] = _tmp$3;
syscall.GetAcceptExSockaddrs((($sliceToArray(new sliceType$1(rawsa)))), 0, ((o.rsan >>> 0)), ((o.rsan >>> 0)), (lrsa.$ptr || (lrsa.$ptr = new ptrType$29(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, lrsa))), (llen.$ptr || (llen.$ptr = new ptrType$27(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, llen))), (rrsa.$ptr || (rrsa.$ptr = new ptrType$29(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, rrsa))), (rlen.$ptr || (rlen.$ptr = new ptrType$27(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, rlen))));
_tuple$3 = lrsa[0].Sockaddr();
lsa = _tuple$3[0];
_tuple$4 = rrsa[0].Sockaddr();
rsa = _tuple$4[0];
_r$1 = netfd.addrFunc()(lsa); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_arg = _r$1;
_r$2 = netfd.addrFunc()(rsa); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_arg$1 = _r$2;
$r = netfd.setAddr(_arg, _arg$1); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return [netfd, $ifaceNil];
/* */ } return; } } catch(err) { $err = err; $s = -1; return [ptrType$21.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.accept }; } $f.$ptr = $ptr; $f._1 = _1; $f._arg = _arg; $f._arg$1 = _arg$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._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.err = err; $f.err$1 = err$1; $f.errno = errno; $f.fd = fd; $f.llen = llen; $f.lrsa = lrsa; $f.lsa = lsa; $f.nerr = nerr; $f.netfd = netfd; $f.o = o; $f.ok = ok; $f.rawsa = rawsa; $f.rlen = rlen; $f.rrsa = rrsa; $f.rsa = rsa; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
netFD.prototype.accept = function() { return this.$val.accept(); };
netFD.ptr.prototype.dup = function() {
var $ptr, fd;
fd = this;
return [ptrType$30.nil, new syscall.Errno(536871042)];
};
netFD.prototype.dup = function() { return this.$val.dup(); };
netFD.ptr.prototype.readMsg = function(p, oob) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, err, fd, flags, n, oob, oobn, p, sa;
n = 0;
oobn = 0;
flags = 0;
sa = $ifaceNil;
err = $ifaceNil;
fd = this;
_tmp = 0;
_tmp$1 = 0;
_tmp$2 = 0;
_tmp$3 = $ifaceNil;
_tmp$4 = new syscall.Errno(536871042);
n = _tmp;
oobn = _tmp$1;
flags = _tmp$2;
sa = _tmp$3;
err = _tmp$4;
return [n, oobn, flags, sa, err];
};
netFD.prototype.readMsg = function(p, oob) { return this.$val.readMsg(p, oob); };
netFD.ptr.prototype.writeMsg = function(p, oob, sa) {
var $ptr, _tmp, _tmp$1, _tmp$2, err, fd, n, oob, oobn, p, sa;
n = 0;
oobn = 0;
err = $ifaceNil;
fd = this;
_tmp = 0;
_tmp$1 = 0;
_tmp$2 = new syscall.Errno(536871042);
n = _tmp;
oobn = _tmp$1;
err = _tmp$2;
return [n, oobn, err];
};
netFD.prototype.writeMsg = function(p, oob, sa) { return this.$val.writeMsg(p, oob, sa); };
Flags.prototype.String = function() {
var $ptr, _i, _ref, f, i, name, s, y;
f = this.$val;
s = "";
_ref = flagNames;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
name = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (!((((f & (((y = ((i >>> 0)), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0) === 0))) {
if (!(s === "")) {
s = s + ("|");
}
s = s + (name);
}
_i++;
}
if (s === "") {
s = "0";
}
return s;
};
$ptrType(Flags).prototype.String = function() { return new Flags(this.$get()).String(); };
Interface.ptr.prototype.Addrs = function() {
var $ptr, _tuple, err, ifat, ifi;
ifi = this;
if (ifi === ptrType$32.nil) {
return [sliceType$7.nil, new OpError.ptr("route", "ip+net", $ifaceNil, $ifaceNil, errInvalidInterface)];
}
_tuple = interfaceAddrTable(ifi);
ifat = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = new OpError.ptr("route", "ip+net", $ifaceNil, $ifaceNil, err);
}
return [ifat, err];
};
Interface.prototype.Addrs = function() { return this.$val.Addrs(); };
Interface.ptr.prototype.MulticastAddrs = function() {
var $ptr, _tuple, err, ifat, ifi;
ifi = this;
if (ifi === ptrType$32.nil) {
return [sliceType$7.nil, new OpError.ptr("route", "ip+net", $ifaceNil, $ifaceNil, errInvalidInterface)];
}
_tuple = interfaceMulticastAddrTable(ifi);
ifat = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = new OpError.ptr("route", "ip+net", $ifaceNil, $ifaceNil, err);
}
return [ifat, err];
};
Interface.prototype.MulticastAddrs = function() { return this.$val.MulticastAddrs(); };
ipv6ZoneCache.ptr.prototype.update = function(ift) {
var $ptr, _entry, _i, _key, _key$1, _ref, _tuple, _tuple$1, err, ifi, ift, now, ok, x, x$1, zc, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _i = $f._i; _key = $f._key; _key$1 = $f._key$1; _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);
zc = this;
$r = zc.RWMutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(zc.RWMutex, "Unlock"), []]);
now = $clone(time.Now(), time.Time);
if ($clone(zc.lastFetched, time.Time).After($clone($clone(now, time.Time).Add(new time.Duration(-14, 129542144)), time.Time))) {
$s = -1; return;
}
time.Time.copy(zc.lastFetched, now);
if (ift.$length === 0) {
err = $ifaceNil;
_tuple = interfaceTable(0);
ift = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return;
}
}
zc.toIndex = (x = ift.$length, ((x < 0 || x > 2147483647) ? $throwRuntimeError("makemap: size out of range") : {}));
zc.toName = (x$1 = ift.$length, ((x$1 < 0 || x$1 > 2147483647) ? $throwRuntimeError("makemap: size out of range") : {}));
_ref = ift;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
ifi = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), Interface);
_key = ifi.Name; (zc.toIndex || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: ifi.Index };
_tuple$1 = (_entry = zc.toName[$Int.keyFor(ifi.Index)], _entry !== undefined ? [_entry.v, true] : ["", false]);
ok = _tuple$1[1];
if (!ok) {
_key$1 = ifi.Index; (zc.toName || $throwRuntimeError("assignment to entry in nil map"))[$Int.keyFor(_key$1)] = { k: _key$1, v: ifi.Name };
}
_i++;
}
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: ipv6ZoneCache.ptr.prototype.update }; } $f.$ptr = $ptr; $f._entry = _entry; $f._i = _i; $f._key = _key; $f._key$1 = _key$1; $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; } }
};
ipv6ZoneCache.prototype.update = function(ift) { return this.$val.update(ift); };
zoneToString = function(zone) {
var $ptr, _entry, _tuple, name, ok, zone, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _tuple = $f._tuple; name = $f.name; ok = $f.ok; zone = $f.zone; $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);
if (zone === 0) {
$s = -1; return "";
}
$r = zoneCache.update(sliceType$8.nil); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = zoneCache.RWMutex.RLock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(zoneCache.RWMutex, "RUnlock"), []]);
_tuple = (_entry = zoneCache.toName[$Int.keyFor(zone)], _entry !== undefined ? [_entry.v, true] : ["", false]);
name = _tuple[0];
ok = _tuple[1];
if (!ok) {
name = uitoa(((zone >>> 0)));
}
$s = -1; return name;
/* */ } return; } } catch(err) { $err = err; $s = -1; return ""; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: zoneToString }; } $f.$ptr = $ptr; $f._entry = _entry; $f._tuple = _tuple; $f.name = name; $f.ok = ok; $f.zone = zone; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
zoneToInt = function(zone) {
var $ptr, _entry, _tuple, _tuple$1, index, ok, zone, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; index = $f.index; ok = $f.ok; zone = $f.zone; $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);
if (zone === "") {
$s = -1; return 0;
}
$r = zoneCache.update(sliceType$8.nil); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = zoneCache.RWMutex.RLock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(zoneCache.RWMutex, "RUnlock"), []]);
_tuple = (_entry = zoneCache.toIndex[$String.keyFor(zone)], _entry !== undefined ? [_entry.v, true] : [0, false]);
index = _tuple[0];
ok = _tuple[1];
if (!ok) {
_tuple$1 = dtoi(zone);
index = _tuple$1[0];
}
$s = -1; return index;
/* */ } return; } } catch(err) { $err = err; $s = -1; return 0; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: zoneToInt }; } $f.$ptr = $ptr; $f._entry = _entry; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.index = index; $f.ok = ok; $f.zone = zone; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
init$1 = function() {
var $ptr;
supportsVistaIP = probeWindowsIPStack();
};
adapterAddresses = function() {
var $ptr, aa, aas, b, err, l, l$24ptr;
b = sliceType$1.nil;
l = 15000;
while (true) {
b = $makeSlice(sliceType$1, l);
err = windows.GetAdaptersAddresses(0, 16, 0, ($pointerOfStructConversion(($sliceToArray(b)), ptrType$33)), (l$24ptr || (l$24ptr = new ptrType$14(function() { return l; }, function($v) { l = $v; }))));
if ($interfaceIsEqual(err, $ifaceNil)) {
if (l === 0) {
return [sliceType$9.nil, $ifaceNil];
}
break;
}
if (!(($assertType(err, syscall.Errno) === 111))) {
return [sliceType$9.nil, os.NewSyscallError("getadaptersaddresses", err)];
}
if (l <= ((b.$length >>> 0))) {
return [sliceType$9.nil, os.NewSyscallError("getadaptersaddresses", err)];
}
}
aas = sliceType$9.nil;
aa = ($pointerOfStructConversion(($sliceToArray(b)), ptrType$33));
while (true) {
if (!(!(aa === ptrType$33.nil))) { break; }
aas = $append(aas, aa);
aa = aa.Next;
}
return [aas, $ifaceNil];
};
interfaceTable = function(ifindex) {
var $ptr, _1, _i, _ref, _tuple, aa, aas, err, ifi, ifindex, ift, index;
_tuple = adapterAddresses();
aas = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [sliceType$8.nil, err];
}
ift = sliceType$8.nil;
_ref = aas;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
aa = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
index = aa.IfIndex;
if (index === 0) {
index = aa.Ipv6IfIndex;
}
if ((ifindex === 0) || (ifindex === ((index >> 0)))) {
ifi = new Interface.ptr(((index >> 0)), 0, syscall.UTF16ToString(new sliceType$10((((aa.FriendlyName))))), HardwareAddr.nil, 0);
if (aa.OperStatus === 1) {
ifi.Flags = (ifi.Flags | (1)) >>> 0;
}
_1 = aa.IfType;
if ((_1 === (6)) || (_1 === (9)) || (_1 === (71)) || (_1 === (144))) {
ifi.Flags = (ifi.Flags | (18)) >>> 0;
} else if ((_1 === (23)) || (_1 === (131))) {
ifi.Flags = (ifi.Flags | (24)) >>> 0;
} else if (_1 === (24)) {
ifi.Flags = (ifi.Flags | (20)) >>> 0;
} else if (_1 === (37)) {
ifi.Flags = (ifi.Flags | (26)) >>> 0;
}
if (aa.Mtu === 4294967295) {
ifi.MTU = -1;
} else {
ifi.MTU = ((aa.Mtu >> 0));
}
if (aa.PhysicalAddressLength > 0) {
ifi.HardwareAddr = $makeSlice(HardwareAddr, aa.PhysicalAddressLength);
$copySlice(ifi.HardwareAddr, new sliceType$1(aa.PhysicalAddress));
}
ift = $append(ift, ifi);
if (ifindex === ifi.Index) {
break;
}
}
_i++;
}
return [ift, $ifaceNil];
};
interfaceAddrTable = function(ifi) {
var $ptr, _i, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, aa, aas, err, err$1, err$2, ifa, ifa$1, ifat, ifi, index, l, pany, pfx4, pfx6, puni, sa, sa$1, sa$2, sa$3, sa$4, sa$5, x, x$1;
_tuple = adapterAddresses();
aas = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [sliceType$7.nil, err];
}
ifat = sliceType$7.nil;
_ref = aas;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
aa = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
index = aa.IfIndex;
if (index === 0) {
index = aa.Ipv6IfIndex;
}
_tmp = sliceType$11.nil;
_tmp$1 = sliceType$11.nil;
pfx4 = _tmp;
pfx6 = _tmp$1;
if (!supportsVistaIP) {
_tuple$1 = addrPrefixTable(aa);
pfx4 = _tuple$1[0];
pfx6 = _tuple$1[1];
err = _tuple$1[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [sliceType$7.nil, err];
}
}
if (ifi === ptrType$32.nil || (ifi.Index === ((index >> 0)))) {
puni = aa.FirstUnicastAddress;
while (true) {
if (!(!(puni === ptrType$34.nil))) { break; }
_tuple$2 = puni.Address.Sockaddr.Sockaddr();
sa = _tuple$2[0];
err$1 = _tuple$2[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
return [sliceType$7.nil, os.NewSyscallError("sockaddr", err$1)];
}
l = 0;
_ref$1 = sa;
if ($assertType(_ref$1, ptrType$24, true)[1]) {
sa$1 = _ref$1.$val;
if (supportsVistaIP) {
l = ((puni.OnLinkPrefixLength >> 0));
} else {
l = addrPrefixLen(pfx4, ((x = new sliceType$1(sa$1.Addr), $subslice(new IP(x.$array), x.$offset, x.$offset + x.$length))));
}
ifat = $append(ifat, new IPNet.ptr(IPv4(sa$1.Addr[0], sa$1.Addr[1], sa$1.Addr[2], sa$1.Addr[3]), CIDRMask(l, 32)));
} else if ($assertType(_ref$1, ptrType$25, true)[1]) {
sa$2 = _ref$1.$val;
if (supportsVistaIP) {
l = ((puni.OnLinkPrefixLength >> 0));
} else {
l = addrPrefixLen(pfx6, ((x$1 = new sliceType$1(sa$2.Addr), $subslice(new IP(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length))));
}
ifa = new IPNet.ptr($makeSlice(IP, 16), CIDRMask(l, 128));
$copySlice(ifa.IP, new sliceType$1(sa$2.Addr));
ifat = $append(ifat, ifa);
}
puni = puni.Next;
}
pany = aa.FirstAnycastAddress;
while (true) {
if (!(!(pany === ptrType$35.nil))) { break; }
_tuple$3 = pany.Address.Sockaddr.Sockaddr();
sa$3 = _tuple$3[0];
err$2 = _tuple$3[1];
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
return [sliceType$7.nil, os.NewSyscallError("sockaddr", err$2)];
}
_ref$2 = sa$3;
if ($assertType(_ref$2, ptrType$24, true)[1]) {
sa$4 = _ref$2.$val;
ifat = $append(ifat, new IPAddr.ptr(IPv4(sa$4.Addr[0], sa$4.Addr[1], sa$4.Addr[2], sa$4.Addr[3]), ""));
} else if ($assertType(_ref$2, ptrType$25, true)[1]) {
sa$5 = _ref$2.$val;
ifa$1 = new IPAddr.ptr($makeSlice(IP, 16), "");
$copySlice(ifa$1.IP, new sliceType$1(sa$5.Addr));
ifat = $append(ifat, ifa$1);
}
pany = pany.Next;
}
}
_i++;
}
return [ifat, $ifaceNil];
};
addrPrefixTable = function(aa) {
var $ptr, _ref, _tmp, _tmp$1, _tmp$2, _tuple, aa, err, err$1, p, pfx, pfx$1, pfx4, pfx6, sa, sa$1, sa$2, x, x$1;
pfx4 = sliceType$11.nil;
pfx6 = sliceType$11.nil;
err = $ifaceNil;
p = aa.FirstPrefix;
while (true) {
if (!(!(p === ptrType$36.nil))) { break; }
_tuple = p.Address.Sockaddr.Sockaddr();
sa = _tuple[0];
err$1 = _tuple[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
_tmp = sliceType$11.nil;
_tmp$1 = sliceType$11.nil;
_tmp$2 = os.NewSyscallError("sockaddr", err$1);
pfx4 = _tmp;
pfx6 = _tmp$1;
err = _tmp$2;
return [pfx4, pfx6, err];
}
_ref = sa;
if ($assertType(_ref, ptrType$24, true)[1]) {
sa$1 = _ref.$val;
pfx = new IPNet.ptr(((x = new sliceType$1(sa$1.Addr), $subslice(new IP(x.$array), x.$offset, x.$offset + x.$length))), CIDRMask(((p.PrefixLength >> 0)), 32));
pfx4 = $append(pfx4, pfx);
} else if ($assertType(_ref, ptrType$25, true)[1]) {
sa$2 = _ref.$val;
pfx$1 = new IPNet.ptr(((x$1 = new sliceType$1(sa$2.Addr), $subslice(new IP(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length))), CIDRMask(((p.PrefixLength >> 0)), 128));
pfx6 = $append(pfx6, pfx$1);
}
p = p.Next;
}
return [pfx4, pfx6, err];
};
addrPrefixLen = function(pfxs, ip) {
var $ptr, _i, _ref, _tuple, _tuple$1, cand, i, ip, l, m, pfxs;
l = 0;
cand = ptrType$37.nil;
_ref = pfxs;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
if (!((i < 0 || i >= pfxs.$length) ? ($throwRuntimeError("index out of range"), undefined) : pfxs.$array[pfxs.$offset + i]).Contains(ip)) {
_i++;
continue;
}
if (cand === ptrType$37.nil) {
_tuple = ((i < 0 || i >= pfxs.$length) ? ($throwRuntimeError("index out of range"), undefined) : pfxs.$array[pfxs.$offset + i]).Mask.Size();
l = _tuple[0];
cand = ((i < 0 || i >= pfxs.$length) ? ($throwRuntimeError("index out of range"), undefined) : pfxs.$array[pfxs.$offset + i]);
_i++;
continue;
}
_tuple$1 = ((i < 0 || i >= pfxs.$length) ? ($throwRuntimeError("index out of range"), undefined) : pfxs.$array[pfxs.$offset + i]).Mask.Size();
m = _tuple$1[0];
if (m > l) {
l = m;
cand = ((i < 0 || i >= pfxs.$length) ? ($throwRuntimeError("index out of range"), undefined) : pfxs.$array[pfxs.$offset + i]);
_i++;
continue;
}
_i++;
}
if (l > 0) {
return l;
}
if (!(ip.To4() === IP.nil)) {
return 32;
}
return 128;
};
interfaceMulticastAddrTable = function(ifi) {
var $ptr, _i, _ref, _ref$1, _tuple, _tuple$1, aa, aas, err, err$1, ifa, ifat, ifi, index, pmul, sa, sa$1, sa$2;
_tuple = adapterAddresses();
aas = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [sliceType$7.nil, err];
}
ifat = sliceType$7.nil;
_ref = aas;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
aa = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
index = aa.IfIndex;
if (index === 0) {
index = aa.Ipv6IfIndex;
}
if (ifi === ptrType$32.nil || (ifi.Index === ((index >> 0)))) {
pmul = aa.FirstMulticastAddress;
while (true) {
if (!(!(pmul === ptrType$38.nil))) { break; }
_tuple$1 = pmul.Address.Sockaddr.Sockaddr();
sa = _tuple$1[0];
err$1 = _tuple$1[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
return [sliceType$7.nil, os.NewSyscallError("sockaddr", err$1)];
}
_ref$1 = sa;
if ($assertType(_ref$1, ptrType$24, true)[1]) {
sa$1 = _ref$1.$val;
ifat = $append(ifat, new IPAddr.ptr(IPv4(sa$1.Addr[0], sa$1.Addr[1], sa$1.Addr[2], sa$1.Addr[3]), ""));
} else if ($assertType(_ref$1, ptrType$25, true)[1]) {
sa$2 = _ref$1.$val;
ifa = new IPAddr.ptr($makeSlice(IP, 16), "");
$copySlice(ifa.IP, new sliceType$1(sa$2.Addr));
ifat = $append(ifat, ifa);
}
pmul = pmul.Next;
}
}
_i++;
}
return [ifat, $ifaceNil];
};
IPv4 = function(a, b, c, d) {
var $ptr, a, b, c, d, p;
p = $makeSlice(IP, 16);
$copySlice(p, v4InV6Prefix);
(12 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 12] = a);
(13 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 13] = b);
(14 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 14] = c);
(15 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 15] = d);
return p;
};
$pkg.IPv4 = IPv4;
IPv4Mask = function(a, b, c, d) {
var $ptr, a, b, c, d, p;
p = $makeSlice(IPMask, 4);
(0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = a);
(1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = b);
(2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2] = c);
(3 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 3] = d);
return p;
};
$pkg.IPv4Mask = IPv4Mask;
CIDRMask = function(ones, bits) {
var $ptr, _q, bits, i, l, m, n, ones, y;
if (!((bits === 32)) && !((bits === 128))) {
return IPMask.nil;
}
if (ones < 0 || ones > bits) {
return IPMask.nil;
}
l = (_q = bits / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
m = $makeSlice(IPMask, l);
n = ((ones >>> 0));
i = 0;
while (true) {
if (!(i < l)) { break; }
if (n >= 8) {
((i < 0 || i >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + i] = 255);
n = n - (8) >>> 0;
i = i + (1) >> 0;
continue;
}
((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));
n = 0;
i = i + (1) >> 0;
}
return m;
};
$pkg.CIDRMask = CIDRMask;
IP.prototype.IsUnspecified = function() {
var $ptr, ip;
ip = this;
return ip.Equal($pkg.IPv4zero) || ip.Equal($pkg.IPv6unspecified);
};
$ptrType(IP).prototype.IsUnspecified = function() { return this.$get().IsUnspecified(); };
IP.prototype.IsLoopback = function() {
var $ptr, ip, ip4;
ip = this;
ip4 = ip.To4();
if (!(ip4 === IP.nil)) {
return (0 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 0]) === 127;
}
return ip.Equal($pkg.IPv6loopback);
};
$ptrType(IP).prototype.IsLoopback = function() { return this.$get().IsLoopback(); };
IP.prototype.IsMulticast = function() {
var $ptr, ip, ip4;
ip = this;
ip4 = ip.To4();
if (!(ip4 === IP.nil)) {
return (((0 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 0]) & 240) >>> 0) === 224;
}
return (ip.$length === 16) && ((0 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 0]) === 255);
};
$ptrType(IP).prototype.IsMulticast = function() { return this.$get().IsMulticast(); };
IP.prototype.IsInterfaceLocalMulticast = function() {
var $ptr, ip;
ip = this;
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);
};
$ptrType(IP).prototype.IsInterfaceLocalMulticast = function() { return this.$get().IsInterfaceLocalMulticast(); };
IP.prototype.IsLinkLocalMulticast = function() {
var $ptr, ip, ip4;
ip = this;
ip4 = ip.To4();
if (!(ip4 === IP.nil)) {
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);
}
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);
};
$ptrType(IP).prototype.IsLinkLocalMulticast = function() { return this.$get().IsLinkLocalMulticast(); };
IP.prototype.IsLinkLocalUnicast = function() {
var $ptr, ip, ip4;
ip = this;
ip4 = ip.To4();
if (!(ip4 === IP.nil)) {
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);
}
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);
};
$ptrType(IP).prototype.IsLinkLocalUnicast = function() { return this.$get().IsLinkLocalUnicast(); };
IP.prototype.IsGlobalUnicast = function() {
var $ptr, ip;
ip = this;
return ((ip.$length === 4) || (ip.$length === 16)) && !ip.Equal($pkg.IPv4bcast) && !ip.IsUnspecified() && !ip.IsLoopback() && !ip.IsMulticast() && !ip.IsLinkLocalUnicast();
};
$ptrType(IP).prototype.IsGlobalUnicast = function() { return this.$get().IsGlobalUnicast(); };
isZeros = function(p) {
var $ptr, i, p;
i = 0;
while (true) {
if (!(i < p.$length)) { break; }
if (!((((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]) === 0))) {
return false;
}
i = i + (1) >> 0;
}
return true;
};
IP.prototype.To4 = function() {
var $ptr, ip;
ip = this;
if (ip.$length === 4) {
return ip;
}
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)) {
return $subslice(ip, 12, 16);
}
return IP.nil;
};
$ptrType(IP).prototype.To4 = function() { return this.$get().To4(); };
IP.prototype.To16 = function() {
var $ptr, ip;
ip = this;
if (ip.$length === 4) {
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]));
}
if (ip.$length === 16) {
return ip;
}
return IP.nil;
};
$ptrType(IP).prototype.To16 = function() { return this.$get().To16(); };
IP.prototype.DefaultMask = function() {
var $ptr, _1, ip;
ip = this;
ip = ip.To4();
if (ip === IP.nil) {
return IPMask.nil;
}
_1 = true;
if (_1 === ((0 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 0]) < 128)) {
return classAMask;
} else if (_1 === ((0 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 0]) < 192)) {
return classBMask;
} else {
return classCMask;
}
};
$ptrType(IP).prototype.DefaultMask = function() { return this.$get().DefaultMask(); };
allFF = function(b) {
var $ptr, _i, _ref, b, c;
_ref = b;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (!((c === 255))) {
return false;
}
_i++;
}
return true;
};
IP.prototype.Mask = function(mask) {
var $ptr, i, ip, mask, n, out, x, x$1;
ip = this;
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)))) {
mask = $subslice(mask, 12);
}
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)) {
ip = $subslice(ip, 12);
}
n = ip.$length;
if (!((n === mask.$length))) {
return IP.nil;
}
out = $makeSlice(IP, n);
i = 0;
while (true) {
if (!(i < n)) { break; }
((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));
i = i + (1) >> 0;
}
return out;
};
$ptrType(IP).prototype.Mask = function(mask) { return this.$get().Mask(mask); };
IP.prototype.String = function() {
var $ptr, b, e0, e1, i, i$1, ip, j, p, p4, x, x$1;
ip = this;
p = ip;
if (ip.$length === 0) {
return "<nil>";
}
p4 = p.To4();
if (p4.$length === 4) {
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)));
}
if (!((p.$length === 16))) {
return "?" + hexString($subslice(new sliceType$1(ip.$array), ip.$offset, ip.$offset + ip.$length));
}
e0 = -1;
e1 = -1;
i = 0;
while (true) {
if (!(i < 16)) { break; }
j = i;
while (true) {
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; }
j = j + (2) >> 0;
}
if (j > i && (j - i >> 0) > (e1 - e0 >> 0)) {
e0 = i;
e1 = j;
i = j;
}
i = i + (2) >> 0;
}
if ((e1 - e0 >> 0) <= 2) {
e0 = -1;
e1 = -1;
}
b = $makeSlice(sliceType$1, 0, 39);
i$1 = 0;
while (true) {
if (!(i$1 < 16)) { break; }
if (i$1 === e0) {
b = $append(b, 58, 58);
i$1 = e1;
if (i$1 >= 16) {
break;
}
} else if (i$1 > 0) {
b = $append(b, 58);
}
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);
i$1 = i$1 + (2) >> 0;
}
return ($bytesToString(b));
};
$ptrType(IP).prototype.String = function() { return this.$get().String(); };
hexString = function(b) {
var $ptr, _i, _ref, _tmp, _tmp$1, b, i, s, tn, x, x$1;
s = $makeSlice(sliceType$1, ($imul(b.$length, 2)));
_ref = b;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
tn = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_tmp = "0123456789abcdef".charCodeAt((tn >>> 4 << 24 >>> 24));
_tmp$1 = "0123456789abcdef".charCodeAt(((tn & 15) >>> 0));
(x = $imul(i, 2), ((x < 0 || x >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x] = _tmp));
(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));
_i++;
}
return ($bytesToString(s));
};
ipEmptyString = function(ip) {
var $ptr, ip;
if (ip.$length === 0) {
return "";
}
return ip.String();
};
IP.prototype.MarshalText = function() {
var $ptr, ip;
ip = this;
if (ip.$length === 0) {
return [(new sliceType$1($stringToBytes(""))), $ifaceNil];
}
if (!((ip.$length === 4)) && !((ip.$length === 16))) {
return [sliceType$1.nil, new AddrError.ptr("invalid IP address", hexString($subslice(new sliceType$1(ip.$array), ip.$offset, ip.$offset + ip.$length)))];
}
return [(new sliceType$1($stringToBytes(ip.String()))), $ifaceNil];
};
$ptrType(IP).prototype.MarshalText = function() { return this.$get().MarshalText(); };
$ptrType(IP).prototype.UnmarshalText = function(text) {
var $ptr, ip, s, text, x;
ip = this;
if (text.$length === 0) {
ip.$set(IP.nil);
return $ifaceNil;
}
s = ($bytesToString(text));
x = ParseIP(s);
if (x === IP.nil) {
return new ParseError.ptr("IP address", s);
}
ip.$set(x);
return $ifaceNil;
};
IP.prototype.Equal = function(x) {
var $ptr, ip, x, x$1, x$2, x$3, x$4;
ip = this;
if (ip.$length === x.$length) {
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));
}
if ((ip.$length === 4) && (x.$length === 16)) {
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)));
}
if ((ip.$length === 16) && (x.$length === 4)) {
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));
}
return false;
};
$ptrType(IP).prototype.Equal = function(x) { return this.$get().Equal(x); };
bytesEqual = function(x, y) {
var $ptr, _i, _ref, b, i, x, y;
if (!((x.$length === y.$length))) {
return false;
}
_ref = x;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (!((((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i]) === b))) {
return false;
}
_i++;
}
return true;
};
IP.prototype.matchAddrFamily = function(x) {
var $ptr, ip, x;
ip = this;
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;
};
$ptrType(IP).prototype.matchAddrFamily = function(x) { return this.$get().matchAddrFamily(x); };
simpleMaskLength = function(mask) {
var $ptr, _i, _ref, i, mask, n, v, y;
n = 0;
_ref = mask;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (v === 255) {
n = n + (8) >> 0;
_i++;
continue;
}
while (true) {
if (!(!((((v & 128) >>> 0) === 0)))) { break; }
n = n + (1) >> 0;
v = (y = (1), y < 32 ? (v << y) : 0) << 24 >>> 24;
}
if (!((v === 0))) {
return -1;
}
i = i + (1) >> 0;
while (true) {
if (!(i < mask.$length)) { break; }
if (!((((i < 0 || i >= mask.$length) ? ($throwRuntimeError("index out of range"), undefined) : mask.$array[mask.$offset + i]) === 0))) {
return -1;
}
i = i + (1) >> 0;
}
break;
}
return n;
};
IPMask.prototype.Size = function() {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, bits, m, ones;
ones = 0;
bits = 0;
m = this;
_tmp = simpleMaskLength(m);
_tmp$1 = $imul(m.$length, 8);
ones = _tmp;
bits = _tmp$1;
if (ones === -1) {
_tmp$2 = 0;
_tmp$3 = 0;
ones = _tmp$2;
bits = _tmp$3;
return [ones, bits];
}
return [ones, bits];
};
$ptrType(IPMask).prototype.Size = function() { return this.$get().Size(); };
IPMask.prototype.String = function() {
var $ptr, m;
m = this;
if (m.$length === 0) {
return "<nil>";
}
return hexString($subslice(new sliceType$1(m.$array), m.$offset, m.$offset + m.$length));
};
$ptrType(IPMask).prototype.String = function() { return this.$get().String(); };
networkNumberAndMask = function(n) {
var $ptr, _1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, ip, m, n;
ip = IP.nil;
m = IPMask.nil;
ip = n.IP.To4();
if (ip === IP.nil) {
ip = n.IP;
if (!((ip.$length === 16))) {
_tmp = IP.nil;
_tmp$1 = IPMask.nil;
ip = _tmp;
m = _tmp$1;
return [ip, m];
}
}
m = n.Mask;
_1 = m.$length;
if (_1 === (4)) {
if (!((ip.$length === 4))) {
_tmp$2 = IP.nil;
_tmp$3 = IPMask.nil;
ip = _tmp$2;
m = _tmp$3;
return [ip, m];
}
} else if (_1 === (16)) {
if (ip.$length === 4) {
m = $subslice(m, 12);
}
} else {
_tmp$4 = IP.nil;
_tmp$5 = IPMask.nil;
ip = _tmp$4;
m = _tmp$5;
return [ip, m];
}
return [ip, m];
};
IPNet.ptr.prototype.Contains = function(ip) {
var $ptr, _tuple, i, ip, l, m, n, nn, x;
n = this;
_tuple = networkNumberAndMask(n);
nn = _tuple[0];
m = _tuple[1];
x = ip.To4();
if (!(x === IP.nil)) {
ip = x;
}
l = ip.$length;
if (!((l === nn.$length))) {
return false;
}
i = 0;
while (true) {
if (!(i < l)) { break; }
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)))) {
return false;
}
i = i + (1) >> 0;
}
return true;
};
IPNet.prototype.Contains = function(ip) { return this.$val.Contains(ip); };
IPNet.ptr.prototype.Network = function() {
var $ptr, n;
n = this;
return "ip+net";
};
IPNet.prototype.Network = function() { return this.$val.Network(); };
IPNet.ptr.prototype.String = function() {
var $ptr, _tuple, l, m, n, nn;
n = this;
_tuple = networkNumberAndMask(n);
nn = _tuple[0];
m = _tuple[1];
if (nn === IP.nil || m === IPMask.nil) {
return "<nil>";
}
l = simpleMaskLength(m);
if (l === -1) {
return nn.String() + "/" + m.String();
}
return nn.String() + "/" + uitoa(((l >>> 0)));
};
IPNet.prototype.String = function() { return this.$val.String(); };
parseIPv4 = function(s) {
var $ptr, _tuple, c, i, n, ok, p, s;
p = arrayType$1.zero();
i = 0;
while (true) {
if (!(i < 4)) { break; }
if (s.length === 0) {
return IP.nil;
}
if (i > 0) {
if (!((s.charCodeAt(0) === 46))) {
return IP.nil;
}
s = $substring(s, 1);
}
_tuple = dtoi(s);
n = _tuple[0];
c = _tuple[1];
ok = _tuple[2];
if (!ok || n > 255) {
return IP.nil;
}
s = $substring(s, c);
((i < 0 || i >= p.length) ? ($throwRuntimeError("index out of range"), undefined) : p[i] = ((n << 24 >>> 24)));
i = i + (1) >> 0;
}
if (!((s.length === 0))) {
return IP.nil;
}
return IPv4(p[0], p[1], p[2], p[3]);
};
parseIPv6 = function(s, zoneAllowed) {
var $ptr, _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;
ip = IP.nil;
zone = "";
ip = $makeSlice(IP, 16);
ellipsis = -1;
if (zoneAllowed) {
_tuple = splitHostZone(s);
s = _tuple[0];
zone = _tuple[1];
}
if (s.length >= 2 && (s.charCodeAt(0) === 58) && (s.charCodeAt(1) === 58)) {
ellipsis = 0;
s = $substring(s, 2);
if (s.length === 0) {
_tmp = ip;
_tmp$1 = zone;
ip = _tmp;
zone = _tmp$1;
return [ip, zone];
}
}
i = 0;
while (true) {
if (!(i < 16)) { break; }
_tuple$1 = xtoi(s);
n = _tuple$1[0];
c = _tuple$1[1];
ok = _tuple$1[2];
if (!ok || n > 65535) {
_tmp$2 = IP.nil;
_tmp$3 = zone;
ip = _tmp$2;
zone = _tmp$3;
return [ip, zone];
}
if (c < s.length && (s.charCodeAt(c) === 46)) {
if (ellipsis < 0 && !((i === 12))) {
_tmp$4 = IP.nil;
_tmp$5 = zone;
ip = _tmp$4;
zone = _tmp$5;
return [ip, zone];
}
if ((i + 4 >> 0) > 16) {
_tmp$6 = IP.nil;
_tmp$7 = zone;
ip = _tmp$6;
zone = _tmp$7;
return [ip, zone];
}
ip4 = parseIPv4(s);
if (ip4 === IP.nil) {
_tmp$8 = IP.nil;
_tmp$9 = zone;
ip = _tmp$8;
zone = _tmp$9;
return [ip, zone];
}
((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]));
(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])));
(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])));
(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])));
s = "";
i = i + (4) >> 0;
break;
}
((i < 0 || i >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + i] = (((n >> 8 >> 0) << 24 >>> 24)));
(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))));
i = i + (2) >> 0;
s = $substring(s, c);
if (s.length === 0) {
break;
}
if (!((s.charCodeAt(0) === 58)) || (s.length === 1)) {
_tmp$10 = IP.nil;
_tmp$11 = zone;
ip = _tmp$10;
zone = _tmp$11;
return [ip, zone];
}
s = $substring(s, 1);
if (s.charCodeAt(0) === 58) {
if (ellipsis >= 0) {
_tmp$12 = IP.nil;
_tmp$13 = zone;
ip = _tmp$12;
zone = _tmp$13;
return [ip, zone];
}
ellipsis = i;
s = $substring(s, 1);
if (s.length === 0) {
break;
}
}
}
if (!((s.length === 0))) {
_tmp$14 = IP.nil;
_tmp$15 = zone;
ip = _tmp$14;
zone = _tmp$15;
return [ip, zone];
}
if (i < 16) {
if (ellipsis < 0) {
_tmp$16 = IP.nil;
_tmp$17 = zone;
ip = _tmp$16;
zone = _tmp$17;
return [ip, zone];
}
n$1 = 16 - i >> 0;
j = i - 1 >> 0;
while (true) {
if (!(j >= ellipsis)) { break; }
(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])));
j = j - (1) >> 0;
}
j$1 = (ellipsis + n$1 >> 0) - 1 >> 0;
while (true) {
if (!(j$1 >= ellipsis)) { break; }
((j$1 < 0 || j$1 >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + j$1] = 0);
j$1 = j$1 - (1) >> 0;
}
} else if (ellipsis >= 0) {
_tmp$18 = IP.nil;
_tmp$19 = zone;
ip = _tmp$18;
zone = _tmp$19;
return [ip, zone];
}
_tmp$20 = ip;
_tmp$21 = zone;
ip = _tmp$20;
zone = _tmp$21;
return [ip, zone];
};
ParseIP = function(s) {
var $ptr, _1, _tuple, i, ip, s;
i = 0;
while (true) {
if (!(i < s.length)) { break; }
_1 = s.charCodeAt(i);
if (_1 === (46)) {
return parseIPv4(s);
} else if (_1 === (58)) {
_tuple = parseIPv6(s, false);
ip = _tuple[0];
return ip;
}
i = i + (1) >> 0;
}
return IP.nil;
};
$pkg.ParseIP = ParseIP;
IPAddr.ptr.prototype.Network = function() {
var $ptr, a;
a = this;
return "ip";
};
IPAddr.prototype.Network = function() { return this.$val.Network(); };
IPAddr.ptr.prototype.String = function() {
var $ptr, a, ip;
a = this;
if (a === ptrType$6.nil) {
return "<nil>";
}
ip = ipEmptyString(a.IP);
if (!(a.Zone === "")) {
return ip + "%" + a.Zone;
}
return ip;
};
IPAddr.prototype.String = function() { return this.$val.String(); };
IPAddr.ptr.prototype.isWildcard = function() {
var $ptr, a;
a = this;
if (a === ptrType$6.nil || a.IP === IP.nil) {
return true;
}
return a.IP.IsUnspecified();
};
IPAddr.prototype.isWildcard = function() { return this.$val.isWildcard(); };
IPAddr.ptr.prototype.opAddr = function() {
var $ptr, a;
a = this;
if (a === ptrType$6.nil) {
return $ifaceNil;
}
return a;
};
IPAddr.prototype.opAddr = function() { return this.$val.opAddr(); };
IPConn.ptr.prototype.ReadFromIP = function(b) {
var $ptr, _r, _tuple, addr, b, c, err, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
c = this;
if (!c.conn.ok()) {
$s = -1; return [0, ptrType$6.nil, new syscall.Errno(536870951)];
}
_r = c.readFrom(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
addr = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = new OpError.ptr("read", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
}
$s = -1; return [n, addr, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: IPConn.ptr.prototype.ReadFromIP }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
IPConn.prototype.ReadFromIP = function(b) { return this.$val.ReadFromIP(b); };
IPConn.ptr.prototype.ReadFrom = function(b) {
var $ptr, _r, _tuple, addr, b, c, err, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
c = this;
if (!c.conn.ok()) {
$s = -1; return [0, $ifaceNil, new syscall.Errno(536870951)];
}
_r = c.readFrom(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
addr = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = new OpError.ptr("read", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
}
if (addr === ptrType$6.nil) {
$s = -1; return [n, $ifaceNil, err];
}
$s = -1; return [n, addr, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: IPConn.ptr.prototype.ReadFrom }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
IPConn.prototype.ReadFrom = function(b) { return this.$val.ReadFrom(b); };
IPConn.ptr.prototype.ReadMsgIP = function(b, oob) {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tuple, addr, b, c, err, flags, n, oob, oobn, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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:
n = 0;
oobn = 0;
flags = 0;
addr = ptrType$6.nil;
err = $ifaceNil;
c = this;
if (!c.conn.ok()) {
_tmp = 0;
_tmp$1 = 0;
_tmp$2 = 0;
_tmp$3 = ptrType$6.nil;
_tmp$4 = new syscall.Errno(536870951);
n = _tmp;
oobn = _tmp$1;
flags = _tmp$2;
addr = _tmp$3;
err = _tmp$4;
$s = -1; return [n, oobn, flags, addr, err];
}
_r = c.readMsg(b, oob); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
oobn = _tuple[1];
flags = _tuple[2];
addr = _tuple[3];
err = _tuple[4];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = new OpError.ptr("read", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
}
$s = -1; return [n, oobn, flags, addr, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: IPConn.ptr.prototype.ReadMsgIP }; } $f.$ptr = $ptr; $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.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;
};
IPConn.prototype.ReadMsgIP = function(b, oob) { return this.$val.ReadMsgIP(b, oob); };
IPConn.ptr.prototype.WriteToIP = function(b, addr) {
var $ptr, _r, _tuple, addr, b, c, err, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
c = this;
if (!c.conn.ok()) {
$s = -1; return [0, new syscall.Errno(536870951)];
}
_r = c.writeTo(b, addr); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = new OpError.ptr("write", c.conn.fd.net, c.conn.fd.laddr, addr.opAddr(), err);
}
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: IPConn.ptr.prototype.WriteToIP }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
IPConn.prototype.WriteToIP = function(b, addr) { return this.$val.WriteToIP(b, addr); };
IPConn.ptr.prototype.WriteTo = function(b, addr) {
var $ptr, _r, _tuple, _tuple$1, a, addr, b, c, err, n, ok, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
c = this;
if (!c.conn.ok()) {
$s = -1; return [0, new syscall.Errno(536870951)];
}
_tuple = $assertType(addr, ptrType$6, true);
a = _tuple[0];
ok = _tuple[1];
if (!ok) {
$s = -1; return [0, new OpError.ptr("write", c.conn.fd.net, c.conn.fd.laddr, addr, new syscall.Errno(536870951))];
}
_r = c.writeTo(b, a); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
n = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = new OpError.ptr("write", c.conn.fd.net, c.conn.fd.laddr, a.opAddr(), err);
}
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: IPConn.ptr.prototype.WriteTo }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
IPConn.prototype.WriteTo = function(b, addr) { return this.$val.WriteTo(b, addr); };
IPConn.ptr.prototype.WriteMsgIP = function(b, oob, addr) {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tuple, addr, b, c, err, n, oob, oobn, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
n = 0;
oobn = 0;
err = $ifaceNil;
c = this;
if (!c.conn.ok()) {
_tmp = 0;
_tmp$1 = 0;
_tmp$2 = new syscall.Errno(536870951);
n = _tmp;
oobn = _tmp$1;
err = _tmp$2;
$s = -1; return [n, oobn, err];
}
_r = c.writeMsg(b, oob, addr); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
oobn = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = new OpError.ptr("write", c.conn.fd.net, c.conn.fd.laddr, addr.opAddr(), err);
}
$s = -1; return [n, oobn, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: IPConn.ptr.prototype.WriteMsgIP }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
IPConn.prototype.WriteMsgIP = function(b, oob, addr) { return this.$val.WriteMsgIP(b, oob, addr); };
newIPConn = function(fd) {
var $ptr, fd;
return new IPConn.ptr(new conn.ptr(fd));
};
sockaddrToIP = function(sa) {
var $ptr, _r, _ref, sa, sa$1, sa$2, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
_ref = sa;
/* */ if ($assertType(_ref, ptrType$24, true)[1]) { $s = 1; continue; }
/* */ if ($assertType(_ref, ptrType$25, true)[1]) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if ($assertType(_ref, ptrType$24, true)[1]) { */ case 1:
sa$1 = _ref.$val;
$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)), "");
/* } else if ($assertType(_ref, ptrType$25, true)[1]) { */ case 2:
sa$2 = _ref.$val;
_r = zoneToString(((sa$2.ZoneId >> 0))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$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);
/* } */ case 3:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: sockaddrToIP }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
IPAddr.ptr.prototype.family = function() {
var $ptr, a;
a = this;
if (a === ptrType$6.nil || a.IP.$length <= 4) {
return 2;
}
if (!(a.IP.To4() === IP.nil)) {
return 2;
}
return 23;
};
IPAddr.prototype.family = function() { return this.$val.family(); };
IPAddr.ptr.prototype.sockaddr = function(family) {
var $ptr, _r, a, family, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; a = $f.a; family = $f.family; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
a = this;
if (a === ptrType$6.nil) {
$s = -1; return [$ifaceNil, $ifaceNil];
}
_r = ipToSockaddr(family, a.IP, 0, a.Zone); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: IPAddr.ptr.prototype.sockaddr }; } $f.$ptr = $ptr; $f._r = _r; $f.a = a; $f.family = family; $f.$s = $s; $f.$r = $r; return $f;
};
IPAddr.prototype.sockaddr = function(family) { return this.$val.sockaddr(family); };
IPAddr.ptr.prototype.toLocal = function(net) {
var $ptr, a, net;
a = this;
return new IPAddr.ptr(loopbackIP(net), a.Zone);
};
IPAddr.prototype.toLocal = function(net) { return this.$val.toLocal(net); };
IPConn.ptr.prototype.readFrom = function(b) {
var $ptr, _r, _r$1, _ref, _tuple, addr, b, c, err, n, sa, sa$1, sa$2, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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:
c = this;
addr = ptrType$6.nil;
_r = c.conn.fd.readFrom(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
sa = _tuple[1];
err = _tuple[2];
_ref = sa;
/* */ if ($assertType(_ref, ptrType$24, true)[1]) { $s = 2; continue; }
/* */ if ($assertType(_ref, ptrType$25, true)[1]) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if ($assertType(_ref, ptrType$24, true)[1]) { */ case 2:
sa$1 = _ref.$val;
addr = new IPAddr.ptr((x = $subslice(new sliceType$1(sa$1.Addr), 0), $subslice(new IP(x.$array), x.$offset, x.$offset + x.$length)), "");
n = stripIPv4Header(n, b);
$s = 4; continue;
/* } else if ($assertType(_ref, ptrType$25, true)[1]) { */ case 3:
sa$2 = _ref.$val;
_r$1 = zoneToString(((sa$2.ZoneId >> 0))); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
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$1);
/* } */ case 4:
$s = -1; return [n, addr, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: IPConn.ptr.prototype.readFrom }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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;
};
IPConn.prototype.readFrom = function(b) { return this.$val.readFrom(b); };
stripIPv4Header = function(n, b) {
var $ptr, b, l, n;
if (b.$length < 20) {
return n;
}
l = (((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) & 15) >>> 0) >> 0)) << 2 >> 0;
if (20 > l || l > b.$length) {
return n;
}
if (!((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) >>> 4 << 24 >>> 24) === 4))) {
return n;
}
$copySlice(b, $subslice(b, l));
return n - l >> 0;
};
IPConn.ptr.prototype.readMsg = function(b, oob) {
var $ptr, _r, _ref, _tuple, addr, b, c, err, flags, n, oob, oobn, sa, sa$1, sa$2, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
n = 0;
oobn = 0;
flags = 0;
addr = ptrType$6.nil;
err = $ifaceNil;
c = this;
sa = $ifaceNil;
_tuple = c.conn.fd.readMsg(b, oob);
n = _tuple[0];
oobn = _tuple[1];
flags = _tuple[2];
sa = _tuple[3];
err = _tuple[4];
_ref = sa;
/* */ if ($assertType(_ref, ptrType$24, true)[1]) { $s = 1; continue; }
/* */ if ($assertType(_ref, ptrType$25, true)[1]) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if ($assertType(_ref, ptrType$24, true)[1]) { */ case 1:
sa$1 = _ref.$val;
addr = new IPAddr.ptr((x = $subslice(new sliceType$1(sa$1.Addr), 0), $subslice(new IP(x.$array), x.$offset, x.$offset + x.$length)), "");
$s = 3; continue;
/* } else if ($assertType(_ref, ptrType$25, true)[1]) { */ case 2:
sa$2 = _ref.$val;
_r = zoneToString(((sa$2.ZoneId >> 0))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
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);
/* } */ case 3:
$s = -1; return [n, oobn, flags, addr, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: IPConn.ptr.prototype.readMsg }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
IPConn.prototype.readMsg = function(b, oob) { return this.$val.readMsg(b, oob); };
IPConn.ptr.prototype.writeTo = function(b, addr) {
var $ptr, _r, _r$1, _tuple, addr, b, c, err, sa, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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:
c = this;
if (c.conn.fd.isConnected) {
$s = -1; return [0, $pkg.ErrWriteToConnected];
}
if (addr === ptrType$6.nil) {
$s = -1; return [0, errMissingAddress];
}
_r = addr.sockaddr(c.conn.fd.family); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
sa = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [0, err];
}
_r$1 = c.conn.fd.writeTo(b, sa); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: IPConn.ptr.prototype.writeTo }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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;
};
IPConn.prototype.writeTo = function(b, addr) { return this.$val.writeTo(b, addr); };
IPConn.ptr.prototype.writeMsg = function(b, oob, addr) {
var $ptr, _r, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
n = 0;
oobn = 0;
err = $ifaceNil;
c = this;
if (c.conn.fd.isConnected) {
_tmp = 0;
_tmp$1 = 0;
_tmp$2 = $pkg.ErrWriteToConnected;
n = _tmp;
oobn = _tmp$1;
err = _tmp$2;
$s = -1; return [n, oobn, err];
}
if (addr === ptrType$6.nil) {
_tmp$3 = 0;
_tmp$4 = 0;
_tmp$5 = errMissingAddress;
n = _tmp$3;
oobn = _tmp$4;
err = _tmp$5;
$s = -1; return [n, oobn, err];
}
_r = addr.sockaddr(c.conn.fd.family); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
sa = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$6 = 0;
_tmp$7 = 0;
_tmp$8 = err;
n = _tmp$6;
oobn = _tmp$7;
err = _tmp$8;
$s = -1; return [n, oobn, err];
}
_tuple$1 = c.conn.fd.writeMsg(b, oob, sa);
n = _tuple$1[0];
oobn = _tuple$1[1];
err = _tuple$1[2];
$s = -1; return [n, oobn, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: IPConn.ptr.prototype.writeMsg }; } $f.$ptr = $ptr; $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._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;
};
IPConn.prototype.writeMsg = function(b, oob, addr) { return this.$val.writeMsg(b, oob, addr); };
dialIP = function(ctx, netProto, laddr, raddr) {
var $ptr, _1, _r, _r$1, _tuple, _tuple$1, ctx, err, fd, laddr, netProto, network, proto, raddr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _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:
_r = parseNetwork(ctx, netProto); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
network = _tuple[0];
proto = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$39.nil, err];
}
_1 = network;
if (_1 === ("ip") || _1 === ("ip4") || _1 === ("ip6")) {
} else {
$s = -1; return [ptrType$39.nil, new UnknownNetworkError((netProto))];
}
if (raddr === ptrType$6.nil) {
$s = -1; return [ptrType$39.nil, errMissingAddress];
}
_r$1 = internetSocket(ctx, network, laddr, raddr, 3, proto, "dial"); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple$1 = _r$1;
fd = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$39.nil, err];
}
$s = -1; return [newIPConn(fd), $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: dialIP }; } $f.$ptr = $ptr; $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $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;
};
isIPv4 = function(addr) {
var $ptr, _ref, addr, addr$1, addr$2, addr$3;
_ref = addr;
if ($assertType(_ref, ptrType$4, true)[1]) {
addr$1 = _ref.$val;
return !(addr$1.IP.To4() === IP.nil);
} else if ($assertType(_ref, ptrType$5, true)[1]) {
addr$2 = _ref.$val;
return !(addr$2.IP.To4() === IP.nil);
} else if ($assertType(_ref, ptrType$6, true)[1]) {
addr$3 = _ref.$val;
return !(addr$3.IP.To4() === IP.nil);
}
return false;
};
addrList.prototype.partition = function(strategy) {
var $ptr, _i, _r, _ref, addr, addrs, fallbacks, i, label, primaries, primaryLabel, strategy, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _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:
primaries = addrList.nil;
fallbacks = addrList.nil;
addrs = this;
primaryLabel = false;
_ref = addrs;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
i = _i;
addr = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_r = strategy(addr); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
label = _r;
if ((i === 0) || label === primaryLabel) {
primaryLabel = label;
primaries = $append(primaries, addr);
} else {
fallbacks = $append(fallbacks, addr);
}
_i++;
/* } */ $s = 1; continue; case 2:
$s = -1; return [primaries, fallbacks];
/* */ } return; } if ($f === undefined) { $f = { $blk: addrList.prototype.partition }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $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;
};
$ptrType(addrList).prototype.partition = function(strategy) { return this.$get().partition(strategy); };
filterAddrList = function(filter, ips, inetaddr, originalAddr) {
var $ptr, _i, _r, _r$1, _r$2, _ref, _v, addrs, filter, inetaddr, ip, ips, originalAddr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _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:
addrs = addrList.nil;
_ref = ips;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
ip = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), IPAddr);
if (filter === $throwNilPointerError) { _v = true; $s = 5; continue s; }
_r = filter($clone(ip, IPAddr)); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_v = _r; case 5:
/* */ if (_v) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (_v) { */ case 3:
_r$1 = inetaddr($clone(ip, IPAddr)); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
addrs = $append(addrs, _r$1);
/* } */ case 4:
_i++;
/* } */ $s = 1; continue; case 2:
/* */ if (addrs.$length === 0) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (addrs.$length === 0) { */ case 8:
_r$2 = errNoSuitableAddress.Error(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$s = -1; return [addrList.nil, new AddrError.ptr(_r$2, originalAddr)];
/* } */ case 9:
$s = -1; return [addrs, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: filterAddrList }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $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;
};
ipv4only = function(addr) {
var $ptr, addr;
return !(addr.IP.To4() === IP.nil);
};
ipv6only = function(addr) {
var $ptr, addr;
return (addr.IP.$length === 16) && addr.IP.To4() === IP.nil;
};
SplitHostPort = function(hostport) {
var $ptr, _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _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, _tuple$8, addrErr, end, err, host, hostport, i, j, k, port, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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; _tuple$8 = $f._tuple$8; 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:
host = "";
port = "";
err = $ifaceNil;
addrErr = (function(addr, why) {
var $ptr, _tmp, _tmp$1, _tmp$2, addr, err$1, host$1, port$1, why;
host$1 = "";
port$1 = "";
err$1 = $ifaceNil;
_tmp = "";
_tmp$1 = "";
_tmp$2 = new AddrError.ptr(why, addr);
host$1 = _tmp;
port$1 = _tmp$1;
err$1 = _tmp$2;
return [host$1, port$1, err$1];
});
_tmp = 0;
_tmp$1 = 0;
j = _tmp;
k = _tmp$1;
i = last(hostport, 58);
/* */ if (i < 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (i < 0) { */ case 1:
_r = addrErr(hostport, "missing port in address"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
host = _tuple[0];
port = _tuple[1];
err = _tuple[2];
$s = -1; return [host, port, err];
/* } */ case 2:
/* */ if (hostport.charCodeAt(0) === 91) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (hostport.charCodeAt(0) === 91) { */ case 4:
end = byteIndex(hostport, 93);
/* */ if (end < 0) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (end < 0) { */ case 7:
_r$1 = addrErr(hostport, "missing ']' in address"); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple$1 = _r$1;
host = _tuple$1[0];
port = _tuple$1[1];
err = _tuple$1[2];
$s = -1; return [host, port, err];
/* } */ case 8:
_1 = end + 1 >> 0;
/* */ if (_1 === (hostport.length)) { $s = 11; continue; }
/* */ if (_1 === (i)) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (_1 === (hostport.length)) { */ case 11:
_r$2 = addrErr(hostport, "missing port in address"); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$2 = _r$2;
host = _tuple$2[0];
port = _tuple$2[1];
err = _tuple$2[2];
$s = -1; return [host, port, err];
/* } else if (_1 === (i)) { */ case 12:
$s = 14; continue;
/* } else { */ case 13:
/* */ if (hostport.charCodeAt((end + 1 >> 0)) === 58) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (hostport.charCodeAt((end + 1 >> 0)) === 58) { */ case 16:
_r$3 = addrErr(hostport, "too many colons in address"); /* */ $s = 18; case 18: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$3 = _r$3;
host = _tuple$3[0];
port = _tuple$3[1];
err = _tuple$3[2];
$s = -1; return [host, port, err];
/* } */ case 17:
_r$4 = addrErr(hostport, "missing port in address"); /* */ $s = 19; case 19: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_tuple$4 = _r$4;
host = _tuple$4[0];
port = _tuple$4[1];
err = _tuple$4[2];
$s = -1; return [host, port, err];
/* } */ case 14:
case 10:
host = $substring(hostport, 1, end);
_tmp$2 = 1;
_tmp$3 = end + 1 >> 0;
j = _tmp$2;
k = _tmp$3;
$s = 6; continue;
/* } else { */ case 5:
host = $substring(hostport, 0, i);
/* */ if (byteIndex(host, 58) >= 0) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if (byteIndex(host, 58) >= 0) { */ case 20:
_r$5 = addrErr(hostport, "too many colons in address"); /* */ $s = 22; case 22: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_tuple$5 = _r$5;
host = _tuple$5[0];
port = _tuple$5[1];
err = _tuple$5[2];
$s = -1; return [host, port, err];
/* } */ case 21:
/* */ if (byteIndex(host, 37) >= 0) { $s = 23; continue; }
/* */ $s = 24; continue;
/* if (byteIndex(host, 37) >= 0) { */ case 23:
_r$6 = addrErr(hostport, "missing brackets in address"); /* */ $s = 25; case 25: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_tuple$6 = _r$6;
host = _tuple$6[0];
port = _tuple$6[1];
err = _tuple$6[2];
$s = -1; return [host, port, err];
/* } */ case 24:
/* } */ case 6:
/* */ if (byteIndex($substring(hostport, j), 91) >= 0) { $s = 26; continue; }
/* */ $s = 27; continue;
/* if (byteIndex($substring(hostport, j), 91) >= 0) { */ case 26:
_r$7 = addrErr(hostport, "unexpected '[' in address"); /* */ $s = 28; case 28: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_tuple$7 = _r$7;
host = _tuple$7[0];
port = _tuple$7[1];
err = _tuple$7[2];
$s = -1; return [host, port, err];
/* } */ case 27:
/* */ if (byteIndex($substring(hostport, k), 93) >= 0) { $s = 29; continue; }
/* */ $s = 30; continue;
/* if (byteIndex($substring(hostport, k), 93) >= 0) { */ case 29:
_r$8 = addrErr(hostport, "unexpected ']' in address"); /* */ $s = 31; case 31: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_tuple$8 = _r$8;
host = _tuple$8[0];
port = _tuple$8[1];
err = _tuple$8[2];
$s = -1; return [host, port, err];
/* } */ case 30:
port = $substring(hostport, (i + 1 >> 0));
_tmp$4 = host;
_tmp$5 = port;
_tmp$6 = $ifaceNil;
host = _tmp$4;
port = _tmp$5;
err = _tmp$6;
$s = -1; return [host, port, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: SplitHostPort }; } $f.$ptr = $ptr; $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._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._tuple$8 = _tuple$8; $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;
};
$pkg.SplitHostPort = SplitHostPort;
splitHostZone = function(s) {
var $ptr, _tmp, _tmp$1, host, i, s, zone;
host = "";
zone = "";
i = last(s, 37);
if (i > 0) {
_tmp = $substring(s, 0, i);
_tmp$1 = $substring(s, (i + 1 >> 0));
host = _tmp;
zone = _tmp$1;
} else {
host = s;
}
return [host, zone];
};
JoinHostPort = function(host, port) {
var $ptr, host, port;
if (byteIndex(host, 58) >= 0 || byteIndex(host, 37) >= 0) {
return "[" + host + "]:" + port;
}
return host + ":" + port;
};
$pkg.JoinHostPort = JoinHostPort;
Resolver.ptr.prototype.internetAddrList = function(ctx, net, addr) {
var $ptr, _1, _r, _r$1, _r$2, _r$3, _r$4, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
net = [net];
portnum = [portnum];
r = this;
err = $ifaceNil;
_tmp = "";
_tmp$1 = "";
host = _tmp;
port = _tmp$1;
portnum[0] = 0;
_1 = net[0];
/* */ if (_1 === ("tcp") || _1 === ("tcp4") || _1 === ("tcp6") || _1 === ("udp") || _1 === ("udp4") || _1 === ("udp6")) { $s = 2; continue; }
/* */ if (_1 === ("ip") || _1 === ("ip4") || _1 === ("ip6")) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (_1 === ("tcp") || _1 === ("tcp4") || _1 === ("tcp6") || _1 === ("udp") || _1 === ("udp4") || _1 === ("udp6")) { */ case 2:
/* */ if (!(addr === "")) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!(addr === "")) { */ case 6:
_r = SplitHostPort(addr); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
host = _tuple[0];
port = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [addrList.nil, err];
}
_r$1 = r.LookupPort(ctx, net[0], port); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple$1 = _r$1;
portnum[0] = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [addrList.nil, err];
}
/* } */ case 7:
$s = 5; continue;
/* } else if (_1 === ("ip") || _1 === ("ip4") || _1 === ("ip6")) { */ case 3:
if (!(addr === "")) {
host = addr;
}
$s = 5; continue;
/* } else { */ case 4:
$s = -1; return [addrList.nil, new UnknownNetworkError((net[0]))];
/* } */ case 5:
case 1:
inetaddr = (function(net, portnum) { return function(ip) {
var $ptr, _2, ip;
_2 = net[0];
if (_2 === ("tcp") || _2 === ("tcp4") || _2 === ("tcp6")) {
return new TCPAddr.ptr(ip.IP, portnum[0], ip.Zone);
} else if (_2 === ("udp") || _2 === ("udp4") || _2 === ("udp6")) {
return new UDPAddr.ptr(ip.IP, portnum[0], ip.Zone);
} else if (_2 === ("ip") || _2 === ("ip4") || _2 === ("ip6")) {
return new IPAddr.ptr(ip.IP, ip.Zone);
} else {
$panic(new $String("unexpected network: " + net[0]));
}
}; })(net, portnum);
/* */ if (host === "") { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (host === "") { */ case 10:
_r$2 = inetaddr(new IPAddr.ptr(IP.nil, "")); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$s = -1; return [new addrList([_r$2]), $ifaceNil];
/* } */ case 11:
ips = sliceType$2.nil;
ip = parseIPv4(host);
/* */ if (!(ip === IP.nil)) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (!(ip === IP.nil)) { */ case 13:
ips = new sliceType$2([new IPAddr.ptr(ip, "")]);
$s = 15; continue;
/* } else { */ case 14:
_tuple$2 = parseIPv6(host, true);
ip$1 = _tuple$2[0];
zone = _tuple$2[1];
/* */ if (!(ip$1 === IP.nil)) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (!(ip$1 === IP.nil)) { */ case 16:
ips = new sliceType$2([new IPAddr.ptr(ip$1, zone)]);
$s = 18; continue;
/* } else { */ case 17:
_r$3 = r.LookupIPAddr(ctx, host); /* */ $s = 19; case 19: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$3 = _r$3;
ips = _tuple$3[0];
err = _tuple$3[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [addrList.nil, err];
}
/* } */ case 18:
/* } */ case 15:
filter = $throwNilPointerError;
if (!(net[0] === "") && (net[0].charCodeAt((net[0].length - 1 >> 0)) === 52)) {
filter = ipv4only;
}
if (!(net[0] === "") && (net[0].charCodeAt((net[0].length - 1 >> 0)) === 54)) {
filter = ipv6only;
}
_r$4 = filterAddrList(filter, ips, inetaddr, host); /* */ $s = 20; case 20: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
$s = -1; return _r$4;
/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.internetAddrList }; } $f.$ptr = $ptr; $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._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;
};
Resolver.prototype.internetAddrList = function(ctx, net, addr) { return this.$val.internetAddrList(ctx, net, addr); };
loopbackIP = function(net) {
var $ptr, net;
if (!(net === "") && (net.charCodeAt((net.length - 1 >> 0)) === 54)) {
return $pkg.IPv6loopback;
}
return new IP([127, 0, 0, 1]);
};
favoriteAddrFamily = function(net, laddr, raddr, mode) {
var $ptr, _1, _r, _r$1, _r$2, _r$3, _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, family, ipv6only$1, laddr, mode, net, raddr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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; family = $f.family; ipv6only$1 = $f.ipv6only$1; laddr = $f.laddr; mode = $f.mode; net = $f.net; raddr = $f.raddr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
family = 0;
ipv6only$1 = false;
_1 = net.charCodeAt((net.length - 1 >> 0));
if (_1 === (52)) {
_tmp = 2;
_tmp$1 = false;
family = _tmp;
ipv6only$1 = _tmp$1;
$s = -1; return [family, ipv6only$1];
} else if (_1 === (54)) {
_tmp$2 = 23;
_tmp$3 = true;
family = _tmp$2;
ipv6only$1 = _tmp$3;
$s = -1; return [family, ipv6only$1];
}
if (!(mode === "listen")) { _v = false; $s = 3; continue s; }
if ($interfaceIsEqual(laddr, $ifaceNil)) { _v$1 = true; $s = 4; continue s; }
_r = laddr.isWildcard(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_v$1 = _r; case 4:
_v = _v$1; case 3:
/* */ if (_v) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (_v) { */ case 1:
if (supportsIPv4map || !supportsIPv4) {
_tmp$4 = 23;
_tmp$5 = false;
family = _tmp$4;
ipv6only$1 = _tmp$5;
$s = -1; return [family, ipv6only$1];
}
if ($interfaceIsEqual(laddr, $ifaceNil)) {
_tmp$6 = 2;
_tmp$7 = false;
family = _tmp$6;
ipv6only$1 = _tmp$7;
$s = -1; return [family, ipv6only$1];
}
_r$1 = laddr.family(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tmp$8 = _r$1;
_tmp$9 = false;
family = _tmp$8;
ipv6only$1 = _tmp$9;
$s = -1; return [family, ipv6only$1];
/* } */ case 2:
if ($interfaceIsEqual(laddr, $ifaceNil)) { _v$3 = true; $s = 10; continue s; }
_r$2 = laddr.family(); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_v$3 = _r$2 === 2; case 10:
if (!(_v$3)) { _v$2 = false; $s = 9; continue s; }
if ($interfaceIsEqual(raddr, $ifaceNil)) { _v$4 = true; $s = 12; continue s; }
_r$3 = raddr.family(); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_v$4 = _r$3 === 2; case 12:
_v$2 = _v$4; case 9:
/* */ if (_v$2) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (_v$2) { */ case 7:
_tmp$10 = 2;
_tmp$11 = false;
family = _tmp$10;
ipv6only$1 = _tmp$11;
$s = -1; return [family, ipv6only$1];
/* } */ case 8:
_tmp$12 = 23;
_tmp$13 = false;
family = _tmp$12;
ipv6only$1 = _tmp$13;
$s = -1; return [family, ipv6only$1];
/* */ } return; } if ($f === undefined) { $f = { $blk: favoriteAddrFamily }; } $f.$ptr = $ptr; $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._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.family = family; $f.ipv6only$1 = ipv6only$1; $f.laddr = laddr; $f.mode = mode; $f.net = net; $f.raddr = raddr; $f.$s = $s; $f.$r = $r; return $f;
};
internetSocket = function(ctx, net, laddr, raddr, sotype, proto, mode) {
var $ptr, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, _v, ctx, err, family, fd, ipv6only$1, laddr, mode, net, proto, raddr, sotype, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
fd = ptrType$21.nil;
err = $ifaceNil;
if (!(true && mode === "dial")) { _v = false; $s = 3; continue s; }
_r = raddr.isWildcard(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_v = _r; case 3:
/* */ if (_v) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (_v) { */ case 1:
_r$1 = raddr.toLocal(net); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
raddr = _r$1;
/* } */ case 2:
_r$2 = favoriteAddrFamily(net, laddr, raddr, mode); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple = _r$2;
family = _tuple[0];
ipv6only$1 = _tuple[1];
_r$3 = socket(ctx, net, family, sotype, proto, ipv6only$1, laddr, raddr); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$1 = _r$3;
fd = _tuple$1[0];
err = _tuple$1[1];
$s = -1; return [fd, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: internetSocket }; } $f.$ptr = $ptr; $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._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;
};
ipToSockaddr = function(family, ip, port, zone) {
var $ptr, _1, _r, family, ip, ip4, ip6, port, sa, sa$1, zone, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _r = $f._r; 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:
_1 = family;
/* */ if (_1 === (2)) { $s = 2; continue; }
/* */ if (_1 === (23)) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (_1 === (2)) { */ case 2:
if (ip.$length === 0) {
ip = $pkg.IPv4zero;
}
ip4 = ip.To4();
if (ip4 === IP.nil) {
$s = -1; return [$ifaceNil, new AddrError.ptr("non-IPv4 address", ip.String())];
}
sa = new syscall.SockaddrInet4.ptr(port, arrayType$1.zero(), new syscall.RawSockaddrInet4.ptr(0, 0, arrayType$1.zero(), arrayType$2.zero()));
$copySlice(new sliceType$1(sa.Addr), ip4);
$s = -1; return [sa, $ifaceNil];
/* } else if (_1 === (23)) { */ case 3:
if ((ip.$length === 0) || ip.Equal($pkg.IPv4zero)) {
ip = $pkg.IPv6zero;
}
ip6 = ip.To16();
if (ip6 === IP.nil) {
$s = -1; return [$ifaceNil, new AddrError.ptr("non-IPv6 address", ip.String())];
}
_r = zoneToInt(zone); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
sa$1 = new syscall.SockaddrInet6.ptr(port, ((_r >>> 0)), arrayType.zero(), new syscall.RawSockaddrInet6.ptr(0, 0, 0, arrayType.zero(), 0));
$copySlice(new sliceType$1(sa$1.Addr), ip6);
$s = -1; return [sa$1, $ifaceNil];
/* } */ case 4:
case 1:
$s = -1; return [$ifaceNil, new AddrError.ptr("invalid address family", ip.String())];
/* */ } return; } if ($f === undefined) { $f = { $blk: ipToSockaddr }; } $f.$ptr = $ptr; $f._1 = _1; $f._r = _r; $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;
};
lookupProtocolMap = function(name) {
var $ptr, _entry, _tuple, found, lowerProtocol, n, name, proto;
lowerProtocol = arrayType$6.zero();
n = $copyString(new sliceType$1(lowerProtocol), name);
lowerASCIIBytes($subslice(new sliceType$1(lowerProtocol), 0, n));
_tuple = (_entry = protocols[$String.keyFor(($bytesToString($subslice(new sliceType$1(lowerProtocol), 0, n))))], _entry !== undefined ? [_entry.v, true] : [0, false]);
proto = _tuple[0];
found = _tuple[1];
if (!found || !((n === name.length))) {
return [0, new AddrError.ptr("unknown IP protocol specified", name)];
}
return [proto, $ifaceNil];
};
lookupPortMap = function(network, service) {
var $ptr, _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;
port = 0;
error = $ifaceNil;
_1 = network;
if (_1 === ("tcp4") || _1 === ("tcp6")) {
network = "tcp";
} else if (_1 === ("udp4") || _1 === ("udp6")) {
network = "udp";
}
_tuple = (_entry = services[$String.keyFor(network)], _entry !== undefined ? [_entry.v, true] : [false, false]);
m = _tuple[0];
ok = _tuple[1];
if (ok) {
lowerService = arrayType$6.zero();
n = $copyString(new sliceType$1(lowerService), service);
lowerASCIIBytes($subslice(new sliceType$1(lowerService), 0, n));
_tuple$1 = (_entry$1 = m[$String.keyFor(($bytesToString($subslice(new sliceType$1(lowerService), 0, n))))], _entry$1 !== undefined ? [_entry$1.v, true] : [0, false]);
port$1 = _tuple$1[0];
ok$1 = _tuple$1[1];
if (ok$1 && (n === service.length)) {
_tmp = port$1;
_tmp$1 = $ifaceNil;
port = _tmp;
error = _tmp$1;
return [port, error];
}
}
_tmp$2 = 0;
_tmp$3 = new AddrError.ptr("unknown port", network + "/" + service);
port = _tmp$2;
error = _tmp$3;
return [port, error];
};
Resolver.ptr.prototype.LookupHost = function(ctx, host) {
var $ptr, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, addrs, ctx, err, host, ip, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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:
addrs = sliceType.nil;
err = $ifaceNil;
r = this;
/* */ if (host === "") { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (host === "") { */ case 1:
_tmp = sliceType.nil;
_r = errNoSuchHost.Error(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tmp$1 = new DNSError.ptr(_r, host, "", false, false);
addrs = _tmp;
err = _tmp$1;
$s = -1; return [addrs, err];
/* } */ case 2:
ip = ParseIP(host);
if (!(ip === IP.nil)) {
_tmp$2 = new sliceType([host]);
_tmp$3 = $ifaceNil;
addrs = _tmp$2;
err = _tmp$3;
$s = -1; return [addrs, err];
}
_r$1 = r.lookupHost(ctx, host); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
addrs = _tuple[0];
err = _tuple[1];
$s = -1; return [addrs, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.LookupHost }; } $f.$ptr = $ptr; $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.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;
};
Resolver.prototype.LookupHost = function(ctx, host) { return this.$val.LookupHost(ctx, host); };
Resolver.ptr.prototype.LookupIPAddr = function(ctx, host) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _selection, _tuple, _tuple$1, _tuple$2, addrs, alt, ch, ctx, err, host, ip, r, r$1, resolverFunc, trace, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _selection = $f._selection; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; addrs = $f.addrs; alt = $f.alt; ch = $f.ch; ctx = $f.ctx; 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:
ctx = [ctx];
host = [host];
resolverFunc = [resolverFunc];
r = this;
/* */ if (host[0] === "") { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (host[0] === "") { */ case 1:
_r = errNoSuchHost.Error(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return [sliceType$2.nil, new DNSError.ptr(_r, host[0], "", false, false)];
/* } */ case 2:
ip = ParseIP(host[0]);
if (!(ip === IP.nil)) {
$s = -1; return [new sliceType$2([new IPAddr.ptr(ip, "")]), $ifaceNil];
}
_r$1 = ctx[0].Value((x = new nettrace.TraceKey.ptr(), new x.constructor.elem(x))); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = $assertType(_r$1, ptrType$7, true);
trace = _tuple[0];
/* */ if (!(trace === ptrType$7.nil) && !(trace.DNSStart === $throwNilPointerError)) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (!(trace === ptrType$7.nil) && !(trace.DNSStart === $throwNilPointerError)) { */ case 5:
$r = trace.DNSStart(host[0]); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 6:
resolverFunc[0] = $methodVal(r, "lookupIP");
_r$2 = 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$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$1 = $assertType(_r$2, funcType$1, true);
alt = _tuple$1[0];
if (!(alt === $throwNilPointerError)) {
resolverFunc[0] = alt;
}
_r$3 = lookupGroup.DoChan(host[0], (function(ctx, host, resolverFunc) { return function $b() {
var $ptr, _r$3, _returncast, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$3 = $f._r$3; _returncast = $f._returncast; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r$3 = testHookLookupIP(ctx[0], resolverFunc[0], host[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_returncast = _r$3;
$s = -1; return [_returncast[0], _returncast[1]];
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r$3 = _r$3; $f._returncast = _returncast; $f.$s = $s; $f.$r = $r; return $f;
}; })(ctx, host, resolverFunc)); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
ch = _r$3;
_r$4 = ctx[0].Done(); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_r$5 = $select([[_r$4], [ch]]); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_selection = _r$5;
/* */ if (_selection[0] === 0) { $s = 12; continue; }
/* */ if (_selection[0] === 1) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (_selection[0] === 0) { */ case 12:
_r$6 = ctx[0].Err(); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_r$7 = mapErr(_r$6); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
err = _r$7;
$r = lookupGroup.Forget(host[0]); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (!(trace === ptrType$7.nil) && !(trace.DNSDone === $throwNilPointerError)) { $s = 18; continue; }
/* */ $s = 19; continue;
/* if (!(trace === ptrType$7.nil) && !(trace.DNSDone === $throwNilPointerError)) { */ case 18:
$r = trace.DNSDone(sliceType$13.nil, false, err); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 19:
$s = -1; return [sliceType$2.nil, err];
/* } else if (_selection[0] === 1) { */ case 13:
r$1 = $clone(_selection[1][0], singleflight.Result);
/* */ if (!(trace === ptrType$7.nil) && !(trace.DNSDone === $throwNilPointerError)) { $s = 21; continue; }
/* */ $s = 22; continue;
/* if (!(trace === ptrType$7.nil) && !(trace.DNSDone === $throwNilPointerError)) { */ case 21:
_tuple$2 = $assertType(r$1.Val, sliceType$2, true);
addrs = _tuple$2[0];
$r = trace.DNSDone(ipAddrsEface(addrs), r$1.Shared, r$1.Err); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 22:
$s = -1; return lookupIPReturn(r$1.Val, r$1.Err, r$1.Shared);
/* } */ case 14:
$s = -1; return [sliceType$2.nil, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.LookupIPAddr }; } $f.$ptr = $ptr; $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._selection = _selection; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.addrs = addrs; $f.alt = alt; $f.ch = ch; $f.ctx = ctx; $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;
};
Resolver.prototype.LookupIPAddr = function(ctx, host) { return this.$val.LookupIPAddr(ctx, host); };
lookupIPReturn = function(addrsi, err, shared) {
var $ptr, addrs, addrsi, clone, err, shared;
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [sliceType$2.nil, err];
}
addrs = $assertType(addrsi, sliceType$2);
if (shared) {
clone = $makeSlice(sliceType$2, addrs.$length);
$copySlice(clone, addrs);
addrs = clone;
}
return [addrs, $ifaceNil];
};
ipAddrsEface = function(addrs) {
var $ptr, _i, _ref, addrs, i, s, v;
s = $makeSlice(sliceType$13, addrs.$length);
_ref = addrs;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
v = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), IPAddr);
((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = new v.constructor.elem(v));
_i++;
}
return s;
};
Resolver.ptr.prototype.LookupPort = function(ctx, network, service) {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, ctx, err, needsLookup, network, port, r, service, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
port = 0;
err = $ifaceNil;
r = this;
_tuple = parsePort(service);
port = _tuple[0];
needsLookup = _tuple[1];
/* */ if (needsLookup) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (needsLookup) { */ case 1:
_r = r.lookupPort(ctx, network, service); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
port = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = 0;
_tmp$1 = err;
port = _tmp;
err = _tmp$1;
$s = -1; return [port, err];
}
/* } */ case 2:
if (0 > port || port > 65535) {
_tmp$2 = 0;
_tmp$3 = new AddrError.ptr("invalid port", service);
port = _tmp$2;
err = _tmp$3;
$s = -1; return [port, err];
}
_tmp$4 = port;
_tmp$5 = $ifaceNil;
port = _tmp$4;
err = _tmp$5;
$s = -1; return [port, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.LookupPort }; } $f.$ptr = $ptr; $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._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;
};
Resolver.prototype.LookupPort = function(ctx, network, service) { return this.$val.LookupPort(ctx, network, service); };
Resolver.ptr.prototype.LookupCNAME = function(ctx, host) {
var $ptr, _r, _tuple, cname, ctx, err, host, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
cname = "";
err = $ifaceNil;
r = this;
_r = r.lookupCNAME(ctx, host); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
cname = _tuple[0];
err = _tuple[1];
$s = -1; return [cname, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.LookupCNAME }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
Resolver.prototype.LookupCNAME = function(ctx, host) { return this.$val.LookupCNAME(ctx, host); };
Resolver.ptr.prototype.LookupSRV = function(ctx, service, proto, name) {
var $ptr, _r, _tuple, addrs, cname, ctx, err, name, proto, r, service, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
cname = "";
addrs = sliceType$14.nil;
err = $ifaceNil;
r = this;
_r = r.lookupSRV(ctx, service, proto, name); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
cname = _tuple[0];
addrs = _tuple[1];
err = _tuple[2];
$s = -1; return [cname, addrs, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.LookupSRV }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
Resolver.prototype.LookupSRV = function(ctx, service, proto, name) { return this.$val.LookupSRV(ctx, service, proto, name); };
Resolver.ptr.prototype.LookupMX = function(ctx, name) {
var $ptr, _r, ctx, name, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; ctx = $f.ctx; name = $f.name; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
_r = r.lookupMX(ctx, name); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.LookupMX }; } $f.$ptr = $ptr; $f._r = _r; $f.ctx = ctx; $f.name = name; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
Resolver.prototype.LookupMX = function(ctx, name) { return this.$val.LookupMX(ctx, name); };
Resolver.ptr.prototype.LookupNS = function(ctx, name) {
var $ptr, _r, ctx, name, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; ctx = $f.ctx; name = $f.name; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
_r = r.lookupNS(ctx, name); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.LookupNS }; } $f.$ptr = $ptr; $f._r = _r; $f.ctx = ctx; $f.name = name; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
Resolver.prototype.LookupNS = function(ctx, name) { return this.$val.LookupNS(ctx, name); };
Resolver.ptr.prototype.LookupTXT = function(ctx, name) {
var $ptr, _r, ctx, name, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; ctx = $f.ctx; name = $f.name; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
_r = r.lookupTXT(ctx, name); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.LookupTXT }; } $f.$ptr = $ptr; $f._r = _r; $f.ctx = ctx; $f.name = name; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
Resolver.prototype.LookupTXT = function(ctx, name) { return this.$val.LookupTXT(ctx, name); };
Resolver.ptr.prototype.LookupAddr = function(ctx, addr) {
var $ptr, _r, _tuple, addr, ctx, err, names, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
names = sliceType.nil;
err = $ifaceNil;
r = this;
_r = r.lookupAddr(ctx, addr); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
names = _tuple[0];
err = _tuple[1];
$s = -1; return [names, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.LookupAddr }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
Resolver.prototype.LookupAddr = function(ctx, addr) { return this.$val.LookupAddr(ctx, addr); };
winError = function(call, err) {
var $ptr, _1, call, err;
_1 = err;
if ($interfaceIsEqual(_1, new syscall.Errno((11001)))) {
return errNoSuchHost;
}
return os.NewSyscallError(call, err);
};
getprotobyname = function(name) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, err, name, p, proto;
proto = 0;
err = $ifaceNil;
_tuple = syscall.GetProtoByName(name);
p = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = 0;
_tmp$1 = winError("getprotobyname", err);
proto = _tmp;
err = _tmp$1;
return [proto, err];
}
_tmp$2 = ((p.Proto >> 0));
_tmp$3 = $ifaceNil;
proto = _tmp$2;
err = _tmp$3;
return [proto, err];
};
lookupProtocol = function(ctx, name) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _selection, _tuple, ch, ctx, err, name, proto, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _selection = $f._selection; _tuple = $f._tuple; ch = $f.ch; ctx = $f.ctx; err = $f.err; name = $f.name; proto = $f.proto; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
ch = [ch];
ctx = [ctx];
name = [name];
ch[0] = new $Chan(result, 0);
$go((function(ch, ctx, name) { return function $b() {
var $ptr, _r, _r$1, _selection, _tuple, err, proto, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _selection = $f._selection; _tuple = $f._tuple; err = $f.err; 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);
$r = acquireThread(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([releaseThread, []]);
runtime.LockOSThread();
$deferred.push([runtime.UnlockOSThread, []]);
_tuple = getprotobyname(name[0]);
proto = _tuple[0];
err = _tuple[1];
_r = ctx[0].Done(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r$1 = $select([[ch[0], new result.ptr(proto, err)], [_r]]); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_selection = _r$1;
/* */ if (_selection[0] === 0) { $s = 4; continue; }
/* */ if (_selection[0] === 1) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (_selection[0] === 0) { */ case 4:
$s = 6; continue;
/* } else if (_selection[0] === 1) { */ case 5:
/* } */ case 6:
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._selection = _selection; $f._tuple = _tuple; $f.err = err; $f.proto = proto; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
}; })(ch, ctx, name), []);
_r = ctx[0].Done(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r$1 = $select([[ch[0]], [_r]]); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_selection = _r$1;
/* */ if (_selection[0] === 0) { $s = 3; continue; }
/* */ if (_selection[0] === 1) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (_selection[0] === 0) { */ case 3:
r = $clone(_selection[1][0], result);
/* */ if (!($interfaceIsEqual(r.err, $ifaceNil))) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!($interfaceIsEqual(r.err, $ifaceNil))) { */ case 6:
_tuple = lookupProtocolMap(name[0]);
proto = _tuple[0];
err = _tuple[1];
if ($interfaceIsEqual(err, $ifaceNil)) {
$s = -1; return [proto, $ifaceNil];
}
_r$2 = r.err.Error(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
r.err = new DNSError.ptr(_r$2, name[0], "", false, false);
/* } */ case 7:
$s = -1; return [r.proto, r.err];
/* } else if (_selection[0] === 1) { */ case 4:
_r$3 = ctx[0].Err(); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$4 = mapErr(_r$3); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
$s = -1; return [0, _r$4];
/* } */ case 5:
$s = -1; return [0, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: lookupProtocol }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._selection = _selection; $f._tuple = _tuple; $f.ch = ch; $f.ctx = ctx; $f.err = err; $f.name = name; $f.proto = proto; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
Resolver.ptr.prototype.lookupHost = function(ctx, name) {
var $ptr, _i, _r, _ref, _tuple, addrs, ctx, err, ip, ips, name, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; _tuple = $f._tuple; addrs = $f.addrs; ctx = $f.ctx; err = $f.err; ip = $f.ip; ips = $f.ips; name = $f.name; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
_r = r.lookupIP(ctx, name); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
ips = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [sliceType.nil, err];
}
addrs = $makeSlice(sliceType, 0, ips.$length);
_ref = ips;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
ip = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), IPAddr);
addrs = $append(addrs, ip.String());
_i++;
}
$s = -1; return [addrs, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.lookupHost }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $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.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
Resolver.prototype.lookupHost = function(ctx, name) { return this.$val.lookupHost(ctx, name); };
Resolver.ptr.prototype.lookupIP = function(ctx, name) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _selection, ch, ctx, name, r, r$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _selection = $f._selection; ch = $f.ch; ctx = $f.ctx; name = $f.name; r = $f.r; r$1 = $f.r$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
ch = [ch];
name = [name];
r = this;
ch[0] = new $Chan(ret, 1);
$go((function(ch, name) { return function $b() {
var $ptr, _1, _r, _r$1, a, a$1, addr, addrs, e, hints, result$1, zone, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; a = $f.a; a$1 = $f.a$1; addr = $f.addr; addrs = $f.addrs; e = $f.e; hints = $f.hints; result$1 = $f.result$1; zone = $f.zone; $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);
hints = [hints];
result$1 = [result$1];
$r = acquireThread(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([releaseThread, []]);
hints[0] = new syscall.AddrinfoW.ptr(0, 0, 1, 0, 0, ptrType$12.nil, 0, ptrType$41.nil);
result$1[0] = ptrType$41.nil;
e = syscall.GetAddrInfoW(syscall.StringToUTF16Ptr(name[0]), ptrType$12.nil, hints[0], (result$1.$ptr || (result$1.$ptr = new ptrType$42(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, result$1))));
/* */ if (!($interfaceIsEqual(e, $ifaceNil))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!($interfaceIsEqual(e, $ifaceNil))) { */ case 2:
_r = winError("getaddrinfow", e).Error(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$r = $send(ch[0], $clone(new ret.ptr(sliceType$2.nil, new DNSError.ptr(_r, name[0], "", false, false)), ret)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 3:
$deferred.push([syscall.FreeAddrInfoW, [result$1[0]]]);
addrs = $makeSlice(sliceType$2, 0, 5);
/* while (true) { */ case 6:
/* if (!(!(result$1[0] === ptrType$41.nil))) { break; } */ if(!(!(result$1[0] === ptrType$41.nil))) { $s = 7; continue; }
addr = (result$1[0].Addr);
_1 = result$1[0].Family;
/* */ if (_1 === (2)) { $s = 9; continue; }
/* */ if (_1 === (23)) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (_1 === (2)) { */ case 9:
a = $clone(($pointerOfStructConversion(addr, ptrType$43)).Addr, arrayType$1);
addrs = $append(addrs, new IPAddr.ptr(IPv4(a[0], a[1], a[2], a[3]), ""));
$s = 12; continue;
/* } else if (_1 === (23)) { */ case 10:
a$1 = $clone(($pointerOfStructConversion(addr, ptrType$44)).Addr, arrayType);
_r$1 = zoneToString(((($pointerOfStructConversion(addr, ptrType$44)).Scope_id >> 0))); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
zone = _r$1;
addrs = $append(addrs, new IPAddr.ptr(new IP([a$1[0], a$1[1], a$1[2], a$1[3], a$1[4], a$1[5], a$1[6], a$1[7], a$1[8], a$1[9], a$1[10], a$1[11], a$1[12], a$1[13], a$1[14], a$1[15]]), zone));
$s = 12; continue;
/* } else { */ case 11:
$r = $send(ch[0], $clone(new ret.ptr(sliceType$2.nil, new DNSError.ptr(new syscall.Errno(536871042).Error(), name[0], "", false, false)), ret)); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 12:
case 8:
result$1[0] = result$1[0].Next;
/* } */ $s = 6; continue; case 7:
$r = $send(ch[0], $clone(new ret.ptr(addrs, $ifaceNil), ret)); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f.a = a; $f.a$1 = a$1; $f.addr = addr; $f.addrs = addrs; $f.e = e; $f.hints = hints; $f.result$1 = result$1; $f.zone = zone; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
}; })(ch, name), []);
_r = ctx.Done(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r$1 = $select([[ch[0]], [_r]]); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_selection = _r$1;
/* */ if (_selection[0] === 0) { $s = 3; continue; }
/* */ if (_selection[0] === 1) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (_selection[0] === 0) { */ case 3:
r$1 = $clone(_selection[1][0], ret);
$s = -1; return [r$1.addrs, r$1.err];
/* } else if (_selection[0] === 1) { */ case 4:
_r$2 = ctx.Err(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$3 = _r$2.Error(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$4 = ctx.Err(); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
$s = -1; return [sliceType$2.nil, new DNSError.ptr(_r$3, name[0], "", $interfaceIsEqual(_r$4, context.DeadlineExceeded), false)];
/* } */ case 5:
$s = -1; return [sliceType$2.nil, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.lookupIP }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._selection = _selection; $f.ch = ch; $f.ctx = ctx; $f.name = name; $f.r = r; $f.r$1 = r$1; $f.$s = $s; $f.$r = $r; return $f;
};
Resolver.prototype.lookupIP = function(ctx, name) { return this.$val.lookupIP(ctx, name); };
Resolver.ptr.prototype.lookupPort = function(ctx, network, service) {
var $ptr, _1, _2, _r, _tuple, a, a$1, addr, ctx, e, err, hints, network, port, r, result$1, service, stype, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _2 = $f._2; _r = $f._r; _tuple = $f._tuple; a = $f.a; a$1 = $f.a$1; addr = $f.addr; ctx = $f.ctx; e = $f.e; err = $f.err; hints = $f.hints; network = $f.network; port = $f.port; r = $f.r; result$1 = $f.result$1; service = $f.service; stype = $f.stype; $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);
hints = [hints];
result$1 = [result$1];
r = this;
if (r.PreferGo) {
$s = -1; return lookupPortMap(network, service);
}
$r = acquireThread(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([releaseThread, []]);
stype = 0;
_1 = network;
if (_1 === ("tcp4") || _1 === ("tcp6")) {
stype = 1;
} else if (_1 === ("udp4") || _1 === ("udp6")) {
stype = 2;
}
hints[0] = new syscall.AddrinfoW.ptr(0, 0, stype, 0, 0, ptrType$12.nil, 0, ptrType$41.nil);
result$1[0] = ptrType$41.nil;
e = syscall.GetAddrInfoW(ptrType$12.nil, syscall.StringToUTF16Ptr(service), hints[0], (result$1.$ptr || (result$1.$ptr = new ptrType$42(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, result$1))));
/* */ if (!($interfaceIsEqual(e, $ifaceNil))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!($interfaceIsEqual(e, $ifaceNil))) { */ case 2:
_tuple = lookupPortMap(network, service);
port = _tuple[0];
err = _tuple[1];
if ($interfaceIsEqual(err, $ifaceNil)) {
$s = -1; return [port, $ifaceNil];
}
_r = winError("getaddrinfow", e).Error(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return [0, new DNSError.ptr(_r, network + "/" + service, "", false, false)];
/* } */ case 3:
$deferred.push([syscall.FreeAddrInfoW, [result$1[0]]]);
if (result$1[0] === ptrType$41.nil) {
$s = -1; return [0, new DNSError.ptr(new syscall.Errno(536870951).Error(), network + "/" + service, "", false, false)];
}
addr = (result$1[0].Addr);
_2 = result$1[0].Family;
if (_2 === (2)) {
a = ($pointerOfStructConversion(addr, ptrType$43));
$s = -1; return [((syscall.Ntohs(a.Port) >> 0)), $ifaceNil];
} else if (_2 === (23)) {
a$1 = ($pointerOfStructConversion(addr, ptrType$44));
$s = -1; return [((syscall.Ntohs(a$1.Port) >> 0)), $ifaceNil];
}
$s = -1; return [0, new DNSError.ptr(new syscall.Errno(536870951).Error(), network + "/" + service, "", false, false)];
/* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.lookupPort }; } $f.$ptr = $ptr; $f._1 = _1; $f._2 = _2; $f._r = _r; $f._tuple = _tuple; $f.a = a; $f.a$1 = a$1; $f.addr = addr; $f.ctx = ctx; $f.e = e; $f.err = err; $f.hints = hints; $f.network = network; $f.port = port; $f.r = r; $f.result$1 = result$1; $f.service = service; $f.stype = stype; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Resolver.prototype.lookupPort = function(ctx, network, service) { return this.$val.lookupPort(ctx, network, service); };
Resolver.ptr.prototype.lookupCNAME = function(ctx, name) {
var $ptr, _r, _tuple, cname, ctx, e, errno, name, ok, r, resolved, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; cname = $f.cname; ctx = $f.ctx; e = $f.e; errno = $f.errno; name = $f.name; ok = $f.ok; r = $f.r; resolved = $f.resolved; $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);
r = [r];
$r = acquireThread(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([releaseThread, []]);
r[0] = ptrType$45.nil;
e = syscall.DnsQuery(name, 5, 0, ptrType$18.nil, (r.$ptr || (r.$ptr = new ptrType$46(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, r))), ptrType$18.nil);
_tuple = $assertType(e, syscall.Errno, true);
errno = _tuple[0];
ok = _tuple[1];
if (ok && (errno === 9501)) {
$s = -1; return [absDomainName((new sliceType$1($stringToBytes(name)))), $ifaceNil];
}
/* */ if (!($interfaceIsEqual(e, $ifaceNil))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!($interfaceIsEqual(e, $ifaceNil))) { */ case 2:
_r = winError("dnsquery", e).Error(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return ["", new DNSError.ptr(_r, name, "", false, false)];
/* } */ case 3:
$deferred.push([syscall.DnsRecordListFree, [r[0], 1]]);
resolved = resolveCNAME(syscall.StringToUTF16Ptr(name), r[0]);
cname = syscall.UTF16ToString(new sliceType$10(((resolved))));
$s = -1; return [absDomainName((new sliceType$1($stringToBytes(cname)))), $ifaceNil];
/* */ } return; } } catch(err) { $err = err; $s = -1; return ["", $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.lookupCNAME }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.cname = cname; $f.ctx = ctx; $f.e = e; $f.errno = errno; $f.name = name; $f.ok = ok; $f.r = r; $f.resolved = resolved; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Resolver.prototype.lookupCNAME = function(ctx, name) { return this.$val.lookupCNAME(ctx, name); };
Resolver.ptr.prototype.lookupSRV = function(ctx, service, proto, name) {
var $ptr, _i, _r, _ref, ctx, e, name, p, proto, r, service, srvs, target, v, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; ctx = $f.ctx; e = $f.e; name = $f.name; p = $f.p; proto = $f.proto; r = $f.r; service = $f.service; srvs = $f.srvs; target = $f.target; 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);
r = [r];
$r = acquireThread(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([releaseThread, []]);
target = "";
if (service === "" && proto === "") {
target = name;
} else {
target = "_" + service + "._" + proto + "." + name;
}
r[0] = ptrType$45.nil;
e = syscall.DnsQuery(target, 33, 0, ptrType$18.nil, (r.$ptr || (r.$ptr = new ptrType$46(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, r))), ptrType$18.nil);
/* */ if (!($interfaceIsEqual(e, $ifaceNil))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!($interfaceIsEqual(e, $ifaceNil))) { */ case 2:
_r = winError("dnsquery", e).Error(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return ["", sliceType$14.nil, new DNSError.ptr(_r, target, "", false, false)];
/* } */ case 3:
$deferred.push([syscall.DnsRecordListFree, [r[0], 1]]);
srvs = $makeSlice(sliceType$14, 0, 10);
_ref = validRecs(r[0], 33, target);
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
v = ($pointerOfStructConversion(($sliceToArray(new sliceType$1(p.Data))), ptrType$47));
srvs = $append(srvs, new SRV.ptr(absDomainName((new sliceType$1($stringToBytes(syscall.UTF16ToString(new sliceType$10(((v.Target)))))))), v.Port, v.Priority, v.Weight));
_i++;
}
$r = ($subslice(new byPriorityWeight(srvs.$array), srvs.$offset, srvs.$offset + srvs.$length)).sort(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return [absDomainName((new sliceType$1($stringToBytes(target)))), srvs, $ifaceNil];
/* */ } return; } } catch(err) { $err = err; $s = -1; return ["", sliceType$14.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.lookupSRV }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.ctx = ctx; $f.e = e; $f.name = name; $f.p = p; $f.proto = proto; $f.r = r; $f.service = service; $f.srvs = srvs; $f.target = target; $f.v = v; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Resolver.prototype.lookupSRV = function(ctx, service, proto, name) { return this.$val.lookupSRV(ctx, service, proto, name); };
Resolver.ptr.prototype.lookupMX = function(ctx, name) {
var $ptr, _i, _r, _ref, ctx, e, mxs, name, p, r, v, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; ctx = $f.ctx; e = $f.e; mxs = $f.mxs; name = $f.name; p = $f.p; r = $f.r; 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);
r = [r];
$r = acquireThread(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([releaseThread, []]);
r[0] = ptrType$45.nil;
e = syscall.DnsQuery(name, 15, 0, ptrType$18.nil, (r.$ptr || (r.$ptr = new ptrType$46(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, r))), ptrType$18.nil);
/* */ if (!($interfaceIsEqual(e, $ifaceNil))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!($interfaceIsEqual(e, $ifaceNil))) { */ case 2:
_r = winError("dnsquery", e).Error(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return [sliceType$15.nil, new DNSError.ptr(_r, name, "", false, false)];
/* } */ case 3:
$deferred.push([syscall.DnsRecordListFree, [r[0], 1]]);
mxs = $makeSlice(sliceType$15, 0, 10);
_ref = validRecs(r[0], 15, name);
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
v = ($pointerOfStructConversion(($sliceToArray(new sliceType$1(p.Data))), ptrType$49));
mxs = $append(mxs, new MX.ptr(absDomainName((new sliceType$1($stringToBytes(syscall.UTF16ToString(new sliceType$10(((v.NameExchange)))))))), v.Preference));
_i++;
}
$r = ($subslice(new byPref(mxs.$array), mxs.$offset, mxs.$offset + mxs.$length)).sort(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return [mxs, $ifaceNil];
/* */ } return; } } catch(err) { $err = err; $s = -1; return [sliceType$15.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.lookupMX }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.ctx = ctx; $f.e = e; $f.mxs = mxs; $f.name = name; $f.p = p; $f.r = r; $f.v = v; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Resolver.prototype.lookupMX = function(ctx, name) { return this.$val.lookupMX(ctx, name); };
Resolver.ptr.prototype.lookupNS = function(ctx, name) {
var $ptr, _i, _r, _ref, ctx, e, name, nss, p, r, v, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; ctx = $f.ctx; e = $f.e; name = $f.name; nss = $f.nss; p = $f.p; r = $f.r; 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);
r = [r];
$r = acquireThread(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([releaseThread, []]);
r[0] = ptrType$45.nil;
e = syscall.DnsQuery(name, 2, 0, ptrType$18.nil, (r.$ptr || (r.$ptr = new ptrType$46(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, r))), ptrType$18.nil);
/* */ if (!($interfaceIsEqual(e, $ifaceNil))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!($interfaceIsEqual(e, $ifaceNil))) { */ case 2:
_r = winError("dnsquery", e).Error(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return [sliceType$16.nil, new DNSError.ptr(_r, name, "", false, false)];
/* } */ case 3:
$deferred.push([syscall.DnsRecordListFree, [r[0], 1]]);
nss = $makeSlice(sliceType$16, 0, 10);
_ref = validRecs(r[0], 2, name);
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
v = ($pointerOfStructConversion(($sliceToArray(new sliceType$1(p.Data))), ptrType$51));
nss = $append(nss, new NS.ptr(absDomainName((new sliceType$1($stringToBytes(syscall.UTF16ToString(new sliceType$10(((v.Host))))))))));
_i++;
}
$s = -1; return [nss, $ifaceNil];
/* */ } return; } } catch(err) { $err = err; $s = -1; return [sliceType$16.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.lookupNS }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.ctx = ctx; $f.e = e; $f.name = name; $f.nss = nss; $f.p = p; $f.r = r; $f.v = v; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Resolver.prototype.lookupNS = function(ctx, name) { return this.$val.lookupNS(ctx, name); };
Resolver.ptr.prototype.lookupTXT = function(ctx, name) {
var $ptr, _i, _i$1, _r, _ref, _ref$1, ctx, d, e, name, p, r, s, txts, v, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; ctx = $f.ctx; d = $f.d; e = $f.e; name = $f.name; p = $f.p; r = $f.r; s = $f.s; txts = $f.txts; 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);
r = [r];
$r = acquireThread(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([releaseThread, []]);
r[0] = ptrType$45.nil;
e = syscall.DnsQuery(name, 16, 0, ptrType$18.nil, (r.$ptr || (r.$ptr = new ptrType$46(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, r))), ptrType$18.nil);
/* */ if (!($interfaceIsEqual(e, $ifaceNil))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!($interfaceIsEqual(e, $ifaceNil))) { */ case 2:
_r = winError("dnsquery", e).Error(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return [sliceType.nil, new DNSError.ptr(_r, name, "", false, false)];
/* } */ case 3:
$deferred.push([syscall.DnsRecordListFree, [r[0], 1]]);
txts = $makeSlice(sliceType, 0, 10);
_ref = validRecs(r[0], 16, name);
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
d = ($pointerOfStructConversion(($sliceToArray(new sliceType$1(p.Data))), ptrType$52));
_ref$1 = $subslice(new sliceType$17((($indexPtr(d.StringArray, 0, ptrType$53)))), 0, d.StringCount);
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
v = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
s = syscall.UTF16ToString(new sliceType$10(((v))));
txts = $append(txts, s);
_i$1++;
}
_i++;
}
$s = -1; return [txts, $ifaceNil];
/* */ } return; } } catch(err) { $err = err; $s = -1; return [sliceType.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.lookupTXT }; } $f.$ptr = $ptr; $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f.ctx = ctx; $f.d = d; $f.e = e; $f.name = name; $f.p = p; $f.r = r; $f.s = s; $f.txts = txts; $f.v = v; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Resolver.prototype.lookupTXT = function(ctx, name) { return this.$val.lookupTXT(ctx, name); };
Resolver.ptr.prototype.lookupAddr = function(ctx, addr) {
var $ptr, _i, _r, _ref, _tuple, addr, arpa, ctx, e, err, p, ptrs, r, v, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; _tuple = $f._tuple; addr = $f.addr; arpa = $f.arpa; ctx = $f.ctx; e = $f.e; err = $f.err; p = $f.p; ptrs = $f.ptrs; r = $f.r; 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);
r = [r];
$r = acquireThread(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([releaseThread, []]);
_tuple = reverseaddr(addr);
arpa = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [sliceType.nil, err];
}
r[0] = ptrType$45.nil;
e = syscall.DnsQuery(arpa, 12, 0, ptrType$18.nil, (r.$ptr || (r.$ptr = new ptrType$46(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, r))), ptrType$18.nil);
/* */ if (!($interfaceIsEqual(e, $ifaceNil))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!($interfaceIsEqual(e, $ifaceNil))) { */ case 2:
_r = winError("dnsquery", e).Error(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return [sliceType.nil, new DNSError.ptr(_r, addr, "", false, false)];
/* } */ case 3:
$deferred.push([syscall.DnsRecordListFree, [r[0], 1]]);
ptrs = $makeSlice(sliceType, 0, 10);
_ref = validRecs(r[0], 12, arpa);
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
v = ($pointerOfStructConversion(($sliceToArray(new sliceType$1(p.Data))), ptrType$51));
ptrs = $append(ptrs, absDomainName((new sliceType$1($stringToBytes(syscall.UTF16ToString(new sliceType$10(((v.Host)))))))));
_i++;
}
$s = -1; return [ptrs, $ifaceNil];
/* */ } return; } } catch(err) { $err = err; $s = -1; return [sliceType.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.lookupAddr }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f._tuple = _tuple; $f.addr = addr; $f.arpa = arpa; $f.ctx = ctx; $f.e = e; $f.err = err; $f.p = p; $f.ptrs = ptrs; $f.r = r; $f.v = v; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Resolver.prototype.lookupAddr = function(ctx, addr) { return this.$val.lookupAddr(ctx, addr); };
validRecs = function(r, dnstype, name) {
var $ptr, cname, dnstype, name, p, r, rec;
cname = syscall.StringToUTF16Ptr(name);
if (!((dnstype === 5))) {
cname = resolveCNAME(cname, r);
}
rec = $makeSlice(sliceType$18, 0, 10);
p = r;
while (true) {
if (!(!(p === ptrType$45.nil))) { break; }
if (!((((p.Dw & 3) >>> 0) === 1))) {
p = p.Next;
continue;
}
if (!((p.Type === dnstype))) {
p = p.Next;
continue;
}
if (!syscall.DnsNameCompare(cname, p.Name)) {
p = p.Next;
continue;
}
rec = $append(rec, p);
p = p.Next;
}
return rec;
};
resolveCNAME = function(name, r) {
var $ptr, cnameloop, name, p, r;
cnameloop = 0;
Cname:
while (true) {
if (!(cnameloop < 10)) { break; }
p = r;
while (true) {
if (!(!(p === ptrType$45.nil))) { break; }
if (!((((p.Dw & 3) >>> 0) === 1))) {
p = p.Next;
continue;
}
if (!((p.Type === 5))) {
p = p.Next;
continue;
}
if (!syscall.DnsNameCompare(name, p.Name)) {
p = p.Next;
continue;
}
name = ($pointerOfStructConversion(($sliceToArray(new sliceType$1(r.Data))), ptrType$51)).Host;
cnameloop = cnameloop + (1) >> 0;
continue Cname;
}
break;
}
return name;
};
HardwareAddr.prototype.String = function() {
var $ptr, _i, _ref, a, b, buf, i;
a = this;
if (a.$length === 0) {
return "";
}
buf = $makeSlice(sliceType$1, 0, (($imul(a.$length, 3)) - 1 >> 0));
_ref = a;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (i > 0) {
buf = $append(buf, 58);
}
buf = $append(buf, "0123456789abcdef".charCodeAt((b >>> 4 << 24 >>> 24)));
buf = $append(buf, "0123456789abcdef".charCodeAt(((b & 15) >>> 0)));
_i++;
}
return ($bytesToString(buf));
};
$ptrType(HardwareAddr).prototype.String = function() { return this.$get().String(); };
init$2 = function() {
var $ptr, _tuple;
sysInit();
supportsIPv4 = probeIPv4Stack();
_tuple = probeIPv6Stack();
supportsIPv6 = _tuple[0];
supportsIPv4map = _tuple[1];
};
conn.ptr.prototype.ok = function() {
var $ptr, c;
c = this;
return !(c === ptrType$54.nil) && !(c.fd === ptrType$21.nil);
};
conn.prototype.ok = function() { return this.$val.ok(); };
conn.ptr.prototype.Read = function(b) {
var $ptr, _r, _tuple, b, c, err, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
c = this;
if (!c.ok()) {
$s = -1; return [0, new syscall.Errno(536870951)];
}
_r = c.fd.Read(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil)) && !($interfaceIsEqual(err, io.EOF))) {
err = new OpError.ptr("read", c.fd.net, c.fd.laddr, c.fd.raddr, err);
}
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.c = c; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
};
conn.prototype.Read = function(b) { return this.$val.Read(b); };
conn.ptr.prototype.Write = function(b) {
var $ptr, _r, _tuple, b, c, err, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
c = this;
if (!c.ok()) {
$s = -1; return [0, new syscall.Errno(536870951)];
}
_r = c.fd.Write(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = new OpError.ptr("write", c.fd.net, c.fd.laddr, c.fd.raddr, err);
}
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.c = c; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
};
conn.prototype.Write = function(b) { return this.$val.Write(b); };
conn.ptr.prototype.Close = function() {
var $ptr, _r, c, err, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
if (!c.ok()) {
$s = -1; return new syscall.Errno(536870951);
}
_r = c.fd.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = new OpError.ptr("close", c.fd.net, c.fd.laddr, c.fd.raddr, err);
}
$s = -1; return err;
/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.Close }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
};
conn.prototype.Close = function() { return this.$val.Close(); };
conn.ptr.prototype.LocalAddr = function() {
var $ptr, c;
c = this;
if (!c.ok()) {
return $ifaceNil;
}
return c.fd.laddr;
};
conn.prototype.LocalAddr = function() { return this.$val.LocalAddr(); };
conn.ptr.prototype.RemoteAddr = function() {
var $ptr, c;
c = this;
if (!c.ok()) {
return $ifaceNil;
}
return c.fd.raddr;
};
conn.prototype.RemoteAddr = function() { return this.$val.RemoteAddr(); };
conn.ptr.prototype.SetDeadline = function(t) {
var $ptr, _r, c, err, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; err = $f.err; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
if (!c.ok()) {
$s = -1; return new syscall.Errno(536870951);
}
_r = c.fd.setDeadline($clone(t, time.Time)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return new OpError.ptr("set", c.fd.net, $ifaceNil, c.fd.laddr, err);
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.SetDeadline }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.err = err; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
conn.prototype.SetDeadline = function(t) { return this.$val.SetDeadline(t); };
conn.ptr.prototype.SetReadDeadline = function(t) {
var $ptr, _r, c, err, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; err = $f.err; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
if (!c.ok()) {
$s = -1; return new syscall.Errno(536870951);
}
_r = c.fd.setReadDeadline($clone(t, time.Time)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return new OpError.ptr("set", c.fd.net, $ifaceNil, c.fd.laddr, err);
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.SetReadDeadline }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.err = err; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
conn.prototype.SetReadDeadline = function(t) { return this.$val.SetReadDeadline(t); };
conn.ptr.prototype.SetWriteDeadline = function(t) {
var $ptr, _r, c, err, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; err = $f.err; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
if (!c.ok()) {
$s = -1; return new syscall.Errno(536870951);
}
_r = c.fd.setWriteDeadline($clone(t, time.Time)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return new OpError.ptr("set", c.fd.net, $ifaceNil, c.fd.laddr, err);
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.SetWriteDeadline }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.err = err; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
conn.prototype.SetWriteDeadline = function(t) { return this.$val.SetWriteDeadline(t); };
conn.ptr.prototype.SetReadBuffer = function(bytes) {
var $ptr, _r, bytes, c, err, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; bytes = $f.bytes; c = $f.c; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
if (!c.ok()) {
$s = -1; return new syscall.Errno(536870951);
}
_r = setReadBuffer(c.fd, bytes); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return new OpError.ptr("set", c.fd.net, $ifaceNil, c.fd.laddr, err);
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.SetReadBuffer }; } $f.$ptr = $ptr; $f._r = _r; $f.bytes = bytes; $f.c = c; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
};
conn.prototype.SetReadBuffer = function(bytes) { return this.$val.SetReadBuffer(bytes); };
conn.ptr.prototype.SetWriteBuffer = function(bytes) {
var $ptr, _r, bytes, c, err, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; bytes = $f.bytes; c = $f.c; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
if (!c.ok()) {
$s = -1; return new syscall.Errno(536870951);
}
_r = setWriteBuffer(c.fd, bytes); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return new OpError.ptr("set", c.fd.net, $ifaceNil, c.fd.laddr, err);
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.SetWriteBuffer }; } $f.$ptr = $ptr; $f._r = _r; $f.bytes = bytes; $f.c = c; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
};
conn.prototype.SetWriteBuffer = function(bytes) { return this.$val.SetWriteBuffer(bytes); };
conn.ptr.prototype.File = function() {
var $ptr, _tuple, c, err, f;
f = ptrType$30.nil;
err = $ifaceNil;
c = this;
_tuple = c.fd.dup();
f = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = new OpError.ptr("file", c.fd.net, c.fd.laddr, c.fd.raddr, err);
}
return [f, err];
};
conn.prototype.File = function() { return this.$val.File(); };
mapErr = function(err) {
var $ptr, _1, err;
_1 = err;
if ($interfaceIsEqual(_1, (context.Canceled))) {
return errCanceled;
} else if ($interfaceIsEqual(_1, (context.DeadlineExceeded))) {
return errTimeout;
} else {
return err;
}
};
OpError.ptr.prototype.Error = function() {
var $ptr, _r, _r$1, _r$2, e, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; e = $f.e; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
e = this;
if (e === ptrType$55.nil) {
$s = -1; return "<nil>";
}
s = e.Op;
if (!(e.Net === "")) {
s = s + (" " + e.Net);
}
/* */ if (!($interfaceIsEqual(e.Source, $ifaceNil))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!($interfaceIsEqual(e.Source, $ifaceNil))) { */ case 1:
_r = e.Source.String(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
s = s + (" " + _r);
/* } */ case 2:
/* */ if (!($interfaceIsEqual(e.Addr, $ifaceNil))) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!($interfaceIsEqual(e.Addr, $ifaceNil))) { */ case 4:
if (!($interfaceIsEqual(e.Source, $ifaceNil))) {
s = s + ("->");
} else {
s = s + (" ");
}
_r$1 = e.Addr.String(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
s = s + (_r$1);
/* } */ case 5:
_r$2 = e.Err.Error(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
s = s + (": " + _r$2);
$s = -1; return s;
/* */ } return; } if ($f === undefined) { $f = { $blk: OpError.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.e = e; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
OpError.prototype.Error = function() { return this.$val.Error(); };
OpError.ptr.prototype.Timeout = function() {
var $ptr, _r, _r$1, _tuple, _tuple$1, _tuple$2, _v, _v$1, e, ne, ok, ok$1, ok$2, t, t$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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:
e = this;
_tuple = $assertType(e.Err, ptrType$28, true);
ne = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (ok) { */ case 1:
_tuple$1 = $assertType(ne.Err, timeout, true);
t = _tuple$1[0];
ok$1 = _tuple$1[1];
if (!(ok$1)) { _v = false; $s = 3; continue s; }
_r = t.Timeout(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_v = _r; case 3:
$s = -1; return _v;
/* } */ case 2:
_tuple$2 = $assertType(e.Err, timeout, true);
t$1 = _tuple$2[0];
ok$2 = _tuple$2[1];
if (!(ok$2)) { _v$1 = false; $s = 5; continue s; }
_r$1 = t$1.Timeout(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_v$1 = _r$1; case 5:
$s = -1; return _v$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: OpError.ptr.prototype.Timeout }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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;
};
OpError.prototype.Timeout = function() { return this.$val.Timeout(); };
OpError.ptr.prototype.Temporary = function() {
var $ptr, _r, _r$1, _tuple, _tuple$1, _tuple$2, _v, _v$1, e, ne, ok, ok$1, ok$2, t, t$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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:
e = this;
_tuple = $assertType(e.Err, ptrType$28, true);
ne = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (ok) { */ case 1:
_tuple$1 = $assertType(ne.Err, temporary, true);
t = _tuple$1[0];
ok$1 = _tuple$1[1];
if (!(ok$1)) { _v = false; $s = 3; continue s; }
_r = t.Temporary(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_v = _r; case 3:
$s = -1; return _v;
/* } */ case 2:
_tuple$2 = $assertType(e.Err, temporary, true);
t$1 = _tuple$2[0];
ok$2 = _tuple$2[1];
if (!(ok$2)) { _v$1 = false; $s = 5; continue s; }
_r$1 = t$1.Temporary(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_v$1 = _r$1; case 5:
$s = -1; return _v$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: OpError.ptr.prototype.Temporary }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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;
};
OpError.prototype.Temporary = function() { return this.$val.Temporary(); };
timeoutError.ptr.prototype.Error = function() {
var $ptr, e;
e = this;
return "i/o timeout";
};
timeoutError.prototype.Error = function() { return this.$val.Error(); };
timeoutError.ptr.prototype.Timeout = function() {
var $ptr, e;
e = this;
return true;
};
timeoutError.prototype.Timeout = function() { return this.$val.Timeout(); };
timeoutError.ptr.prototype.Temporary = function() {
var $ptr, e;
e = this;
return true;
};
timeoutError.prototype.Temporary = function() { return this.$val.Temporary(); };
ParseError.ptr.prototype.Error = function() {
var $ptr, e;
e = this;
return "invalid " + e.Type + ": " + e.Text;
};
ParseError.prototype.Error = function() { return this.$val.Error(); };
AddrError.ptr.prototype.Error = function() {
var $ptr, e, s;
e = this;
if (e === ptrType$56.nil) {
return "<nil>";
}
s = e.Err;
if (!(e.Addr === "")) {
s = "address " + e.Addr + ": " + s;
}
return s;
};
AddrError.prototype.Error = function() { return this.$val.Error(); };
AddrError.ptr.prototype.Timeout = function() {
var $ptr, e;
e = this;
return false;
};
AddrError.prototype.Timeout = function() { return this.$val.Timeout(); };
AddrError.ptr.prototype.Temporary = function() {
var $ptr, e;
e = this;
return false;
};
AddrError.prototype.Temporary = function() { return this.$val.Temporary(); };
UnknownNetworkError.prototype.Error = function() {
var $ptr, e;
e = this.$val;
return "unknown network " + (e);
};
$ptrType(UnknownNetworkError).prototype.Error = function() { return new UnknownNetworkError(this.$get()).Error(); };
UnknownNetworkError.prototype.Timeout = function() {
var $ptr, e;
e = this.$val;
return false;
};
$ptrType(UnknownNetworkError).prototype.Timeout = function() { return new UnknownNetworkError(this.$get()).Timeout(); };
UnknownNetworkError.prototype.Temporary = function() {
var $ptr, e;
e = this.$val;
return false;
};
$ptrType(UnknownNetworkError).prototype.Temporary = function() { return new UnknownNetworkError(this.$get()).Temporary(); };
DNSError.ptr.prototype.Error = function() {
var $ptr, e, s;
e = this;
if (e === ptrType$57.nil) {
return "<nil>";
}
s = "lookup " + e.Name;
if (!(e.Server === "")) {
s = s + (" on " + e.Server);
}
s = s + (": " + e.Err);
return s;
};
DNSError.prototype.Error = function() { return this.$val.Error(); };
DNSError.ptr.prototype.Timeout = function() {
var $ptr, e;
e = this;
return e.IsTimeout;
};
DNSError.prototype.Timeout = function() { return this.$val.Timeout(); };
DNSError.ptr.prototype.Temporary = function() {
var $ptr, e;
e = this;
return e.IsTimeout || e.IsTemporary;
};
DNSError.prototype.Temporary = function() { return this.$val.Temporary(); };
genericReadFrom = function(w, r) {
var $ptr, _r, _tuple, err, n, r, w, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
n = new $Int64(0, 0);
err = $ifaceNil;
_r = io.Copy((x = new writerOnly.ptr(w), new x.constructor.elem(x)), r); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: genericReadFrom }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
acquireThread = function() {
var $ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = $send(threadLimit, $clone(new structType$1.ptr(), structType$1)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: acquireThread }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
};
releaseThread = function() {
var $ptr, _r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = $recv(threadLimit); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r[0];
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: releaseThread }; } $f.$ptr = $ptr; $f._r = _r; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(Buffers).prototype.WriteTo = function(w) {
var $ptr, _i, _r, _r$1, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
n = new $Int64(0, 0);
err = $ifaceNil;
v = this;
_tuple = $assertType(w, buffersWriter, true);
wv = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (ok) { */ case 1:
_r = wv.writeBuffers(v); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
n = _tuple$1[0];
err = _tuple$1[1];
$s = -1; return [n, err];
/* } */ case 2:
_ref = v.$get();
_i = 0;
/* while (true) { */ case 4:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; }
b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_r$1 = w.Write(b); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple$2 = _r$1;
nb = _tuple$2[0];
err$1 = _tuple$2[1];
n = (x = (new $Int64(0, nb)), new $Int64(n.$high + x.$high, n.$low + x.$low));
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
v.consume(n);
_tmp = n;
_tmp$1 = err$1;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
_i++;
/* } */ $s = 4; continue; case 5:
v.consume(n);
_tmp$2 = n;
_tmp$3 = $ifaceNil;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: $ptrType(Buffers).prototype.WriteTo }; } $f.$ptr = $ptr; $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._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;
};
$ptrType(Buffers).prototype.Read = function(p) {
var $ptr, err, n, n0, p, v, x;
n = 0;
err = $ifaceNil;
v = this;
while (true) {
if (!(p.$length > 0 && v.$get().$length > 0)) { break; }
n0 = $copySlice(p, (x = v.$get(), (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])));
v.consume((new $Int64(0, n0)));
p = $subslice(p, n0);
n = n + (n0) >> 0;
}
if (v.$get().$length === 0) {
err = io.EOF;
}
return [n, err];
};
$ptrType(Buffers).prototype.consume = function(n) {
var $ptr, ln0, n, v, x, x$1, x$2, x$3;
v = this;
while (true) {
if (!(v.$get().$length > 0)) { break; }
ln0 = (new $Int64(0, (x = v.$get(), (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).$length));
if ((ln0.$high > n.$high || (ln0.$high === n.$high && ln0.$low > n.$low))) {
(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))));
return;
}
n = (x$3 = ln0, new $Int64(n.$high - x$3.$high, n.$low - x$3.$low));
v.$set($subslice((v.$get()), 1));
}
};
dtoi = function(s) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, i, n, ok, s;
n = 0;
i = 0;
ok = false;
n = 0;
i = 0;
while (true) {
if (!(i < s.length && 48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57)) { break; }
n = ($imul(n, 10)) + (((s.charCodeAt(i) - 48 << 24 >>> 24) >> 0)) >> 0;
if (n >= 16777215) {
_tmp = 16777215;
_tmp$1 = i;
_tmp$2 = false;
n = _tmp;
i = _tmp$1;
ok = _tmp$2;
return [n, i, ok];
}
i = i + (1) >> 0;
}
if (i === 0) {
_tmp$3 = 0;
_tmp$4 = 0;
_tmp$5 = false;
n = _tmp$3;
i = _tmp$4;
ok = _tmp$5;
return [n, i, ok];
}
_tmp$6 = n;
_tmp$7 = i;
_tmp$8 = true;
n = _tmp$6;
i = _tmp$7;
ok = _tmp$8;
return [n, i, ok];
};
xtoi = function(s) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, i, n, ok, s;
n = 0;
i = 0;
ok = false;
n = 0;
i = 0;
while (true) {
if (!(i < s.length)) { break; }
if (48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57) {
n = $imul(n, (16));
n = n + ((((s.charCodeAt(i) - 48 << 24 >>> 24) >> 0))) >> 0;
} else if (97 <= s.charCodeAt(i) && s.charCodeAt(i) <= 102) {
n = $imul(n, (16));
n = n + (((((s.charCodeAt(i) - 97 << 24 >>> 24) >> 0)) + 10 >> 0)) >> 0;
} else if (65 <= s.charCodeAt(i) && s.charCodeAt(i) <= 70) {
n = $imul(n, (16));
n = n + (((((s.charCodeAt(i) - 65 << 24 >>> 24) >> 0)) + 10 >> 0)) >> 0;
} else {
break;
}
if (n >= 16777215) {
_tmp = 0;
_tmp$1 = i;
_tmp$2 = false;
n = _tmp;
i = _tmp$1;
ok = _tmp$2;
return [n, i, ok];
}
i = i + (1) >> 0;
}
if (i === 0) {
_tmp$3 = 0;
_tmp$4 = i;
_tmp$5 = false;
n = _tmp$3;
i = _tmp$4;
ok = _tmp$5;
return [n, i, ok];
}
_tmp$6 = n;
_tmp$7 = i;
_tmp$8 = true;
n = _tmp$6;
i = _tmp$7;
ok = _tmp$8;
return [n, i, ok];
};
itoa = function(val) {
var $ptr, val;
if (val < 0) {
return "-" + uitoa(((-val >>> 0)));
}
return uitoa(((val >>> 0)));
};
uitoa = function(val) {
var $ptr, _q, buf, i, q, val;
if (val === 0) {
return "0";
}
buf = arrayType$7.zero();
i = 19;
while (true) {
if (!(val >= 10)) { break; }
q = (_q = val / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = ((((48 + val >>> 0) - (q * 10 >>> 0) >>> 0) << 24 >>> 24)));
i = i - (1) >> 0;
val = q;
}
((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = (((48 + val >>> 0) << 24 >>> 24)));
return ($bytesToString($subslice(new sliceType$1(buf), i)));
};
appendHex = function(dst, i) {
var $ptr, dst, i, j, v, y;
if (i === 0) {
return $append(dst, 48);
}
j = 7;
while (true) {
if (!(j >= 0)) { break; }
v = (y = ((($imul(j, 4)) >>> 0)), y < 32 ? (i >>> y) : 0) >>> 0;
if (v > 0) {
dst = $append(dst, "0123456789abcdef".charCodeAt(((v & 15) >>> 0)));
}
j = j - (1) >> 0;
}
return dst;
};
last = function(s, b) {
var $ptr, b, i, s;
i = s.length;
i = i - (1) >> 0;
while (true) {
if (!(i >= 0)) { break; }
if (s.charCodeAt(i) === b) {
break;
}
i = i - (1) >> 0;
}
return i;
};
lowerASCIIBytes = function(x) {
var $ptr, _i, _ref, b, i, x;
_ref = x;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (65 <= b && b <= 90) {
((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));
}
_i++;
}
};
parsePort = function(service) {
var $ptr, _i, _ref, _rune, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, d, n, needsLookup, neg, nn, port, service;
port = 0;
needsLookup = false;
if (service === "") {
_tmp = 0;
_tmp$1 = false;
port = _tmp;
needsLookup = _tmp$1;
return [port, needsLookup];
}
neg = false;
if (service.charCodeAt(0) === 43) {
service = $substring(service, 1);
} else if (service.charCodeAt(0) === 45) {
neg = true;
service = $substring(service, 1);
}
n = 0;
_ref = service;
_i = 0;
while (true) {
if (!(_i < _ref.length)) { break; }
_rune = $decodeRune(_ref, _i);
d = _rune[0];
if (48 <= d && d <= 57) {
d = d - (48) >> 0;
} else {
_tmp$2 = 0;
_tmp$3 = true;
port = _tmp$2;
needsLookup = _tmp$3;
return [port, needsLookup];
}
if (n >= 1073741824) {
n = 4294967295;
break;
}
n = $imul(n, (10)) >>> 0;
nn = n + ((d >>> 0)) >>> 0;
if (nn < n || nn > 4294967295) {
n = 4294967295;
break;
}
n = nn;
_i += _rune[1];
}
if (!neg && n >= 1073741824) {
port = 1073741823;
} else if (neg && n > 1073741824) {
port = 1073741824;
} else {
port = ((n >> 0));
}
if (neg) {
port = -port;
}
_tmp$4 = port;
_tmp$5 = false;
port = _tmp$4;
needsLookup = _tmp$5;
return [port, needsLookup];
};
sendFile = function(fd, r) {
var $ptr, _r, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, done, err, err$1, f, fd, handled, lr, n, o, ok, r, written, x, x$1, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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$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; done = $f.done; err = $f.err; err$1 = $f.err$1; f = $f.f; fd = $f.fd; handled = $f.handled; lr = $f.lr; n = $f.n; o = $f.o; ok = $f.ok; r = $f.r; written = $f.written; 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);
written = new $Int64(0, 0);
err = $ifaceNil;
handled = false;
n = new $Int64(0, 0);
_tuple = $assertType(r, ptrType$58, true);
lr = _tuple[0];
ok = _tuple[1];
if (ok) {
_tmp = lr.N;
_tmp$1 = lr.R;
n = _tmp;
r = _tmp$1;
if ((n.$high < 0 || (n.$high === 0 && n.$low <= 0))) {
_tmp$2 = new $Int64(0, 0);
_tmp$3 = $ifaceNil;
_tmp$4 = true;
written = _tmp$2;
err = _tmp$3;
handled = _tmp$4;
$s = -1; return [written, err, handled];
}
}
_tuple$1 = $assertType(r, ptrType$30, true);
f = _tuple$1[0];
ok = _tuple$1[1];
if (!ok) {
_tmp$5 = new $Int64(0, 0);
_tmp$6 = $ifaceNil;
_tmp$7 = false;
written = _tmp$5;
err = _tmp$6;
handled = _tmp$7;
$s = -1; return [written, err, handled];
}
err$1 = fd.writeLock();
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
_tmp$8 = new $Int64(0, 0);
_tmp$9 = err$1;
_tmp$10 = true;
written = _tmp$8;
err = _tmp$9;
handled = _tmp$10;
$s = -1; return [written, err, handled];
}
$deferred.push([$methodVal(fd, "writeUnlock"), []]);
o = fd.wop;
o.qty = ((n.$low >>> 0));
o.handle = ((f.Fd() >>> 0));
_r = wsrv.ExecIO(o, "TransmitFile", (function(o$1) {
var $ptr, o$1;
return syscall.TransmitFile(o$1.fd.sysfd, o$1.handle, o$1.qty, 0, o$1.o, ptrType$59.nil, 4);
})); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$2 = _r;
done = _tuple$2[0];
err = _tuple$2[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$11 = new $Int64(0, 0);
_tmp$12 = os.NewSyscallError("transmitfile", err);
_tmp$13 = false;
written = _tmp$11;
err = _tmp$12;
handled = _tmp$13;
$s = -1; return [written, err, handled];
}
if (!(lr === ptrType$58.nil)) {
lr.N = (x = lr.N, x$1 = (new $Int64(0, done)), new $Int64(x.$high - x$1.$high, x.$low - x$1.$low));
}
_tmp$14 = (new $Int64(0, done));
_tmp$15 = $ifaceNil;
_tmp$16 = true;
written = _tmp$14;
err = _tmp$15;
handled = _tmp$16;
$s = -1; return [written, err, handled];
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [written, err, handled]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: sendFile }; } $f.$ptr = $ptr; $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$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.done = done; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.fd = fd; $f.handled = handled; $f.lr = lr; $f.n = n; $f.o = o; $f.ok = ok; $f.r = r; $f.written = written; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
socket = function(ctx, net, family, sotype, proto, ipv6only$1, laddr, raddr) {
var $ptr, _1, _r, _r$1, _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, ctx, err, err$1, err$2, err$3, family, fd, ipv6only$1, laddr, net, proto, raddr, s, sotype, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
fd = ptrType$21.nil;
err = $ifaceNil;
_r = sysSocket(family, sotype, proto); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
s = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = ptrType$21.nil;
_tmp$1 = err;
fd = _tmp;
err = _tmp$1;
$s = -1; return [fd, err];
}
err = setDefaultSockopts(s, family, sotype, ipv6only$1);
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
_r$1 = closeFunc(s); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
_tmp$2 = ptrType$21.nil;
_tmp$3 = err;
fd = _tmp$2;
err = _tmp$3;
$s = -1; return [fd, err];
/* } */ case 3:
_r$2 = newFD(s, family, sotype, net); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$1 = _r$2;
fd = _tuple$1[0];
err = _tuple$1[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 6:
_r$3 = closeFunc(s); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$3;
_tmp$4 = ptrType$21.nil;
_tmp$5 = err;
fd = _tmp$4;
err = _tmp$5;
$s = -1; return [fd, err];
/* } */ case 7:
/* */ if (!($interfaceIsEqual(laddr, $ifaceNil)) && $interfaceIsEqual(raddr, $ifaceNil)) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (!($interfaceIsEqual(laddr, $ifaceNil)) && $interfaceIsEqual(raddr, $ifaceNil)) { */ case 9:
_1 = sotype;
/* */ if ((_1 === (1)) || (_1 === (5))) { $s = 12; continue; }
/* */ if (_1 === (2)) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if ((_1 === (1)) || (_1 === (5))) { */ case 12:
_r$4 = fd.listenStream(laddr, listenerBacklog); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
err$1 = _r$4;
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 16:
_r$5 = fd.Close(); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_r$5;
_tmp$6 = ptrType$21.nil;
_tmp$7 = err$1;
fd = _tmp$6;
err = _tmp$7;
$s = -1; return [fd, err];
/* } */ case 17:
_tmp$8 = fd;
_tmp$9 = $ifaceNil;
fd = _tmp$8;
err = _tmp$9;
$s = -1; return [fd, err];
/* } else if (_1 === (2)) { */ case 13:
_r$6 = fd.listenDatagram(laddr); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
err$2 = _r$6;
/* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 20:
_r$7 = fd.Close(); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_r$7;
_tmp$10 = ptrType$21.nil;
_tmp$11 = err$2;
fd = _tmp$10;
err = _tmp$11;
$s = -1; return [fd, err];
/* } */ case 21:
_tmp$12 = fd;
_tmp$13 = $ifaceNil;
fd = _tmp$12;
err = _tmp$13;
$s = -1; return [fd, err];
/* } */ case 14:
case 11:
/* } */ case 10:
_r$8 = fd.dial(ctx, laddr, raddr); /* */ $s = 23; case 23: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
err$3 = _r$8;
/* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 24; continue; }
/* */ $s = 25; continue;
/* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 24:
_r$9 = fd.Close(); /* */ $s = 26; case 26: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
_r$9;
_tmp$14 = ptrType$21.nil;
_tmp$15 = err$3;
fd = _tmp$14;
err = _tmp$15;
$s = -1; return [fd, err];
/* } */ case 25:
_tmp$16 = fd;
_tmp$17 = $ifaceNil;
fd = _tmp$16;
err = _tmp$17;
$s = -1; return [fd, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: socket }; } $f.$ptr = $ptr; $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._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;
};
netFD.ptr.prototype.addrFunc = function() {
var $ptr, _1, _2, _3, fd;
fd = this;
_1 = fd.family;
if ((_1 === (2)) || (_1 === (23))) {
_2 = fd.sotype;
if (_2 === (1)) {
return sockaddrToTCP;
} else if (_2 === (2)) {
return sockaddrToUDP;
} else if (_2 === (3)) {
return sockaddrToIP;
}
} else if (_1 === (1)) {
_3 = fd.sotype;
if (_3 === (1)) {
return sockaddrToUnix;
} else if (_3 === (2)) {
return sockaddrToUnixgram;
} else if (_3 === (5)) {
return sockaddrToUnixpacket;
}
}
return (function(param) {
var $ptr, param;
return $ifaceNil;
});
};
netFD.prototype.addrFunc = function() { return this.$val.addrFunc(); };
netFD.ptr.prototype.dial = function(ctx, laddr, raddr) {
var $ptr, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, _tuple$1, _tuple$2, _tuple$3, ctx, err, err$1, err$2, err$3, fd, laddr, lsa, raddr, rsa, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; ctx = $f.ctx; 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; raddr = $f.raddr; rsa = $f.rsa; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
fd = this;
err = $ifaceNil;
lsa = $ifaceNil;
/* */ if (!($interfaceIsEqual(laddr, $ifaceNil))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!($interfaceIsEqual(laddr, $ifaceNil))) { */ case 1:
_r = laddr.sockaddr(fd.family); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
lsa = _tuple[0];
err = _tuple[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
/* */ if (!($interfaceIsEqual(lsa, $ifaceNil))) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
$s = -1; return err;
/* } else if (!($interfaceIsEqual(lsa, $ifaceNil))) { */ case 5:
_r$1 = syscall.Bind(fd.sysfd, lsa); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
err$1 = _r$1;
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return os.NewSyscallError("bind", err$1);
}
/* } */ case 6:
/* } */ case 2:
rsa = $ifaceNil;
/* */ if (!($interfaceIsEqual(raddr, $ifaceNil))) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (!($interfaceIsEqual(raddr, $ifaceNil))) { */ case 8:
_r$2 = raddr.sockaddr(fd.family); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$1 = _r$2;
rsa = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
_r$3 = fd.connect(ctx, lsa, rsa); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
err$2 = _r$3;
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return err$2;
}
fd.isConnected = true;
$s = 10; continue;
/* } else { */ case 9:
_r$4 = fd.init(); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
err$3 = _r$4;
if (!($interfaceIsEqual(err$3, $ifaceNil))) {
$s = -1; return err$3;
}
/* } */ case 10:
_tuple$2 = syscall.Getsockname(fd.sysfd);
lsa = _tuple$2[0];
_tuple$3 = syscall.Getpeername(fd.sysfd);
rsa = _tuple$3[0];
/* */ if (!($interfaceIsEqual(rsa, $ifaceNil))) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if (!($interfaceIsEqual(rsa, $ifaceNil))) { */ case 14:
_r$5 = fd.addrFunc()(lsa); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_arg = _r$5;
_r$6 = fd.addrFunc()(rsa); /* */ $s = 18; case 18: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_arg$1 = _r$6;
$r = fd.setAddr(_arg, _arg$1); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 16; continue;
/* } else { */ case 15:
_r$7 = fd.addrFunc()(lsa); /* */ $s = 20; case 20: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
$r = fd.setAddr(_r$7, raddr); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 16:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.dial }; } $f.$ptr = $ptr; $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._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.ctx = ctx; $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.raddr = raddr; $f.rsa = rsa; $f.$s = $s; $f.$r = $r; return $f;
};
netFD.prototype.dial = function(ctx, laddr, raddr) { return this.$val.dial(ctx, laddr, raddr); };
netFD.ptr.prototype.listenStream = function(laddr, backlog) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, backlog, err, err$1, err$2, err$3, err$4, fd, laddr, lsa, lsa$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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:
fd = this;
err = setDefaultListenerSockopts(fd.sysfd);
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
_r = laddr.sockaddr(fd.family); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
lsa = _tuple[0];
err$1 = _tuple[1];
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; }
/* */ if (!($interfaceIsEqual(lsa, $ifaceNil))) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 2:
$s = -1; return err$1;
/* } else if (!($interfaceIsEqual(lsa, $ifaceNil))) { */ case 3:
_r$1 = syscall.Bind(fd.sysfd, lsa); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
err$2 = _r$1;
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return os.NewSyscallError("bind", err$2);
}
/* } */ case 4:
_r$2 = listenFunc(fd.sysfd, backlog); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
err$3 = _r$2;
if (!($interfaceIsEqual(err$3, $ifaceNil))) {
$s = -1; return os.NewSyscallError("listen", err$3);
}
_r$3 = fd.init(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
err$4 = _r$3;
if (!($interfaceIsEqual(err$4, $ifaceNil))) {
$s = -1; return err$4;
}
_tuple$1 = syscall.Getsockname(fd.sysfd);
lsa$1 = _tuple$1[0];
_r$4 = fd.addrFunc()(lsa$1); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
$r = fd.setAddr(_r$4, $ifaceNil); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.listenStream }; } $f.$ptr = $ptr; $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.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;
};
netFD.prototype.listenStream = function(laddr, backlog) { return this.$val.listenStream(laddr, backlog); };
netFD.ptr.prototype.listenDatagram = function(laddr) {
var $ptr, _1, _r, _r$1, _r$2, _r$3, _ref, _tuple, _tuple$1, addr, addr$1, err, err$1, err$2, err$3, fd, laddr, lsa, lsa$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _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; 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:
addr = [addr];
fd = this;
_ref = laddr;
if ($assertType(_ref, ptrType$5, true)[1]) {
addr$1 = _ref.$val;
if (!(addr$1.IP === IP.nil) && addr$1.IP.IsMulticast()) {
err = setDefaultMulticastSockopts(fd.sysfd);
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
addr[0] = $clone(addr$1, UDPAddr);
_1 = fd.family;
if (_1 === (2)) {
addr[0].IP = $pkg.IPv4zero;
} else if (_1 === (23)) {
addr[0].IP = $pkg.IPv6unspecified;
}
laddr = addr[0];
}
}
_r = laddr.sockaddr(fd.family); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
lsa = _tuple[0];
err$1 = _tuple[1];
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; }
/* */ if (!($interfaceIsEqual(lsa, $ifaceNil))) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 2:
$s = -1; return err$1;
/* } else if (!($interfaceIsEqual(lsa, $ifaceNil))) { */ case 3:
_r$1 = syscall.Bind(fd.sysfd, lsa); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
err$2 = _r$1;
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return os.NewSyscallError("bind", err$2);
}
/* } */ case 4:
_r$2 = fd.init(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
err$3 = _r$2;
if (!($interfaceIsEqual(err$3, $ifaceNil))) {
$s = -1; return err$3;
}
_tuple$1 = syscall.Getsockname(fd.sysfd);
lsa$1 = _tuple$1[0];
_r$3 = fd.addrFunc()(lsa$1); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
$r = fd.setAddr(_r$3, $ifaceNil); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.listenDatagram }; } $f.$ptr = $ptr; $f._1 = _1; $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.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;
};
netFD.prototype.listenDatagram = function(laddr) { return this.$val.listenDatagram(laddr); };
sysSocket = function(family, sotype, proto) {
var $ptr, _r, _tuple, err, family, proto, s, sotype, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; 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:
$r = syscall.ForkLock.RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r = socketFunc(family, sotype, proto); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
s = _tuple[0];
err = _tuple[1];
if ($interfaceIsEqual(err, $ifaceNil)) {
syscall.CloseOnExec(s);
}
$r = syscall.ForkLock.RUnlock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [4294967295, os.NewSyscallError("socket", err)];
}
$s = -1; return [s, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: sysSocket }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.family = family; $f.proto = proto; $f.s = s; $f.sotype = sotype; $f.$s = $s; $f.$r = $r; return $f;
};
boolint = function(b) {
var $ptr, b;
if (b) {
return 1;
}
return 0;
};
setReadBuffer = function(fd, bytes) {
var $ptr, bytes, err, fd, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; bytes = $f.bytes; 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);
err = fd.incref();
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
$deferred.push([$methodVal(fd, "decref"), []]);
$s = -1; return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd.sysfd, 65535, 4098, bytes));
/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: setReadBuffer }; } $f.$ptr = $ptr; $f.bytes = bytes; $f.err = err; $f.fd = fd; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
setWriteBuffer = function(fd, bytes) {
var $ptr, bytes, err, fd, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; bytes = $f.bytes; 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);
err = fd.incref();
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
$deferred.push([$methodVal(fd, "decref"), []]);
$s = -1; return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd.sysfd, 65535, 4097, bytes));
/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: setWriteBuffer }; } $f.$ptr = $ptr; $f.bytes = bytes; $f.err = err; $f.fd = fd; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
setKeepAlive = function(fd, keepalive) {
var $ptr, err, fd, keepalive, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; err = $f.err; fd = $f.fd; keepalive = $f.keepalive; $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);
err = fd.incref();
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
$deferred.push([$methodVal(fd, "decref"), []]);
$s = -1; return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd.sysfd, 65535, 8, boolint(keepalive)));
/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: setKeepAlive }; } $f.$ptr = $ptr; $f.err = err; $f.fd = fd; $f.keepalive = keepalive; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
setLinger = function(fd, sec) {
var $ptr, err, fd, l, sec, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; err = $f.err; fd = $f.fd; l = $f.l; sec = $f.sec; $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);
l = [l];
l[0] = new syscall.Linger.ptr(0, 0);
if (sec >= 0) {
l[0].Onoff = 1;
l[0].Linger = ((sec >> 0));
} else {
l[0].Onoff = 0;
l[0].Linger = 0;
}
err = fd.incref();
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
$deferred.push([$methodVal(fd, "decref"), []]);
$s = -1; return os.NewSyscallError("setsockopt", syscall.SetsockoptLinger(fd.sysfd, 65535, 128, l[0]));
/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: setLinger }; } $f.$ptr = $ptr; $f.err = err; $f.fd = fd; $f.l = l; $f.sec = sec; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
setDefaultSockopts = function(s, family, sotype, ipv6only$1) {
var $ptr, family, ipv6only$1, s, sotype;
if ((family === 23) && !((sotype === 3))) {
syscall.SetsockoptInt(s, 41, 27, boolint(ipv6only$1));
}
syscall.SetsockoptInt(s, 65535, 32, 1);
return $ifaceNil;
};
setDefaultListenerSockopts = function(s) {
var $ptr, s;
return $ifaceNil;
};
setDefaultMulticastSockopts = function(s) {
var $ptr, s;
return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(s, 65535, 4, 1));
};
TCPAddr.ptr.prototype.Network = function() {
var $ptr, a;
a = this;
return "tcp";
};
TCPAddr.prototype.Network = function() { return this.$val.Network(); };
TCPAddr.ptr.prototype.String = function() {
var $ptr, a, ip;
a = this;
if (a === ptrType$4.nil) {
return "<nil>";
}
ip = ipEmptyString(a.IP);
if (!(a.Zone === "")) {
return JoinHostPort(ip + "%" + a.Zone, itoa(a.Port));
}
return JoinHostPort(ip, itoa(a.Port));
};
TCPAddr.prototype.String = function() { return this.$val.String(); };
TCPAddr.ptr.prototype.isWildcard = function() {
var $ptr, a;
a = this;
if (a === ptrType$4.nil || a.IP === IP.nil) {
return true;
}
return a.IP.IsUnspecified();
};
TCPAddr.prototype.isWildcard = function() { return this.$val.isWildcard(); };
TCPAddr.ptr.prototype.opAddr = function() {
var $ptr, a;
a = this;
if (a === ptrType$4.nil) {
return $ifaceNil;
}
return a;
};
TCPAddr.prototype.opAddr = function() { return this.$val.opAddr(); };
TCPConn.ptr.prototype.ReadFrom = function(r) {
var $ptr, _r, _tuple, c, err, n, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
c = this;
if (!c.conn.ok()) {
$s = -1; return [new $Int64(0, 0), new syscall.Errno(536870951)];
}
_r = c.readFrom(r); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil)) && !($interfaceIsEqual(err, io.EOF))) {
err = new OpError.ptr("readfrom", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
}
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: TCPConn.ptr.prototype.ReadFrom }; } $f.$ptr = $ptr; $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;
};
TCPConn.prototype.ReadFrom = function(r) { return this.$val.ReadFrom(r); };
TCPConn.ptr.prototype.CloseRead = function() {
var $ptr, _r, c, err, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
if (!c.conn.ok()) {
$s = -1; return new syscall.Errno(536870951);
}
_r = c.conn.fd.closeRead(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return new OpError.ptr("close", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: TCPConn.ptr.prototype.CloseRead }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
};
TCPConn.prototype.CloseRead = function() { return this.$val.CloseRead(); };
TCPConn.ptr.prototype.CloseWrite = function() {
var $ptr, _r, c, err, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
if (!c.conn.ok()) {
$s = -1; return new syscall.Errno(536870951);
}
_r = c.conn.fd.closeWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return new OpError.ptr("close", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: TCPConn.ptr.prototype.CloseWrite }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
};
TCPConn.prototype.CloseWrite = function() { return this.$val.CloseWrite(); };
TCPConn.ptr.prototype.SetLinger = function(sec) {
var $ptr, _r, c, err, sec, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; err = $f.err; sec = $f.sec; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
if (!c.conn.ok()) {
$s = -1; return new syscall.Errno(536870951);
}
_r = setLinger(c.conn.fd, sec); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return new OpError.ptr("set", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: TCPConn.ptr.prototype.SetLinger }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.err = err; $f.sec = sec; $f.$s = $s; $f.$r = $r; return $f;
};
TCPConn.prototype.SetLinger = function(sec) { return this.$val.SetLinger(sec); };
TCPConn.ptr.prototype.SetKeepAlive = function(keepalive) {
var $ptr, _r, c, err, keepalive, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; err = $f.err; keepalive = $f.keepalive; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
if (!c.conn.ok()) {
$s = -1; return new syscall.Errno(536870951);
}
_r = setKeepAlive(c.conn.fd, keepalive); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return new OpError.ptr("set", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: TCPConn.ptr.prototype.SetKeepAlive }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.err = err; $f.keepalive = keepalive; $f.$s = $s; $f.$r = $r; return $f;
};
TCPConn.prototype.SetKeepAlive = function(keepalive) { return this.$val.SetKeepAlive(keepalive); };
TCPConn.ptr.prototype.SetKeepAlivePeriod = function(d) {
var $ptr, _r, c, d, err, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; d = $f.d; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
if (!c.conn.ok()) {
$s = -1; return new syscall.Errno(536870951);
}
_r = setKeepAlivePeriod(c.conn.fd, d); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return new OpError.ptr("set", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: TCPConn.ptr.prototype.SetKeepAlivePeriod }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.d = d; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
};
TCPConn.prototype.SetKeepAlivePeriod = function(d) { return this.$val.SetKeepAlivePeriod(d); };
TCPConn.ptr.prototype.SetNoDelay = function(noDelay) {
var $ptr, _r, c, err, noDelay, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; err = $f.err; noDelay = $f.noDelay; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
if (!c.conn.ok()) {
$s = -1; return new syscall.Errno(536870951);
}
_r = setNoDelay(c.conn.fd, noDelay); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return new OpError.ptr("set", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: TCPConn.ptr.prototype.SetNoDelay }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.err = err; $f.noDelay = noDelay; $f.$s = $s; $f.$r = $r; return $f;
};
TCPConn.prototype.SetNoDelay = function(noDelay) { return this.$val.SetNoDelay(noDelay); };
newTCPConn = function(fd) {
var $ptr, _r, c, fd, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = new TCPConn.ptr(new conn.ptr(fd));
_r = setNoDelay(c.conn.fd, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
$s = -1; return c;
/* */ } return; } if ($f === undefined) { $f = { $blk: newTCPConn }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f;
};
TCPListener.ptr.prototype.AcceptTCP = function() {
var $ptr, _r, _tuple, c, err, l, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
l = this;
if (!l.ok()) {
$s = -1; return [ptrType$8.nil, new syscall.Errno(536870951)];
}
_r = l.accept(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
c = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$8.nil, new OpError.ptr("accept", l.fd.net, $ifaceNil, l.fd.laddr, err)];
}
$s = -1; return [c, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: TCPListener.ptr.prototype.AcceptTCP }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.l = l; $f.$s = $s; $f.$r = $r; return $f;
};
TCPListener.prototype.AcceptTCP = function() { return this.$val.AcceptTCP(); };
TCPListener.ptr.prototype.Accept = function() {
var $ptr, _r, _tuple, c, err, l, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
l = this;
if (!l.ok()) {
$s = -1; return [$ifaceNil, new syscall.Errno(536870951)];
}
_r = l.accept(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
c = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [$ifaceNil, new OpError.ptr("accept", l.fd.net, $ifaceNil, l.fd.laddr, err)];
}
$s = -1; return [c, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: TCPListener.ptr.prototype.Accept }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.l = l; $f.$s = $s; $f.$r = $r; return $f;
};
TCPListener.prototype.Accept = function() { return this.$val.Accept(); };
TCPListener.ptr.prototype.Close = function() {
var $ptr, _r, err, l, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; err = $f.err; l = $f.l; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
l = this;
if (!l.ok()) {
$s = -1; return new syscall.Errno(536870951);
}
_r = l.close(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return new OpError.ptr("close", l.fd.net, $ifaceNil, l.fd.laddr, err);
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: TCPListener.ptr.prototype.Close }; } $f.$ptr = $ptr; $f._r = _r; $f.err = err; $f.l = l; $f.$s = $s; $f.$r = $r; return $f;
};
TCPListener.prototype.Close = function() { return this.$val.Close(); };
TCPListener.ptr.prototype.Addr = function() {
var $ptr, l;
l = this;
return l.fd.laddr;
};
TCPListener.prototype.Addr = function() { return this.$val.Addr(); };
TCPListener.ptr.prototype.SetDeadline = function(t) {
var $ptr, _r, err, l, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; err = $f.err; l = $f.l; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
l = this;
if (!l.ok()) {
$s = -1; return new syscall.Errno(536870951);
}
_r = l.fd.setDeadline($clone(t, time.Time)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return new OpError.ptr("set", l.fd.net, $ifaceNil, l.fd.laddr, err);
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: TCPListener.ptr.prototype.SetDeadline }; } $f.$ptr = $ptr; $f._r = _r; $f.err = err; $f.l = l; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
TCPListener.prototype.SetDeadline = function(t) { return this.$val.SetDeadline(t); };
TCPListener.ptr.prototype.File = function() {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, err, f, l;
f = ptrType$30.nil;
err = $ifaceNil;
l = this;
if (!l.ok()) {
_tmp = ptrType$30.nil;
_tmp$1 = new syscall.Errno(536870951);
f = _tmp;
err = _tmp$1;
return [f, err];
}
_tuple = l.file();
f = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$2 = ptrType$30.nil;
_tmp$3 = new OpError.ptr("file", l.fd.net, $ifaceNil, l.fd.laddr, err);
f = _tmp$2;
err = _tmp$3;
return [f, err];
}
return [f, err];
};
TCPListener.prototype.File = function() { return this.$val.File(); };
sockaddrToTCP = function(sa) {
var $ptr, _r, _ref, sa, sa$1, sa$2, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
_ref = sa;
/* */ if ($assertType(_ref, ptrType$24, true)[1]) { $s = 1; continue; }
/* */ if ($assertType(_ref, ptrType$25, true)[1]) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if ($assertType(_ref, ptrType$24, true)[1]) { */ case 1:
sa$1 = _ref.$val;
$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, "");
/* } else if ($assertType(_ref, ptrType$25, true)[1]) { */ case 2:
sa$2 = _ref.$val;
_r = zoneToString(((sa$2.ZoneId >> 0))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$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);
/* } */ case 3:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: sockaddrToTCP }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
TCPAddr.ptr.prototype.family = function() {
var $ptr, a;
a = this;
if (a === ptrType$4.nil || a.IP.$length <= 4) {
return 2;
}
if (!(a.IP.To4() === IP.nil)) {
return 2;
}
return 23;
};
TCPAddr.prototype.family = function() { return this.$val.family(); };
TCPAddr.ptr.prototype.sockaddr = function(family) {
var $ptr, _r, a, family, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; a = $f.a; family = $f.family; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
a = this;
if (a === ptrType$4.nil) {
$s = -1; return [$ifaceNil, $ifaceNil];
}
_r = ipToSockaddr(family, a.IP, a.Port, a.Zone); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: TCPAddr.ptr.prototype.sockaddr }; } $f.$ptr = $ptr; $f._r = _r; $f.a = a; $f.family = family; $f.$s = $s; $f.$r = $r; return $f;
};
TCPAddr.prototype.sockaddr = function(family) { return this.$val.sockaddr(family); };
TCPAddr.ptr.prototype.toLocal = function(net) {
var $ptr, a, net;
a = this;
return new TCPAddr.ptr(loopbackIP(net), a.Port, a.Zone);
};
TCPAddr.prototype.toLocal = function(net) { return this.$val.toLocal(net); };
TCPConn.ptr.prototype.readFrom = function(r) {
var $ptr, _r, _r$1, _tuple, c, err, handled, n, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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:
c = this;
_r = sendFile(c.conn.fd, r); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
handled = _tuple[2];
if (handled) {
$s = -1; return [n, err];
}
_r$1 = genericReadFrom(c, r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: TCPConn.ptr.prototype.readFrom }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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;
};
TCPConn.prototype.readFrom = function(r) { return this.$val.readFrom(r); };
dialTCP = function(ctx, net, laddr, raddr) {
var $ptr, _r, _r$1, ctx, laddr, net, raddr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; 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:
/* */ if (!(testHookDialTCP === $throwNilPointerError)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(testHookDialTCP === $throwNilPointerError)) { */ case 1:
_r = testHookDialTCP(ctx, net, laddr, raddr); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 2:
_r$1 = doDialTCP(ctx, net, laddr, raddr); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: dialTCP }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.ctx = ctx; $f.laddr = laddr; $f.net = net; $f.raddr = raddr; $f.$s = $s; $f.$r = $r; return $f;
};
doDialTCP = function(ctx, net, laddr, raddr) {
var $ptr, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, ctx, err, fd, i, laddr, net, raddr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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:
_r = internetSocket(ctx, net, laddr, raddr, 1, 0, "dial"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
fd = _tuple[0];
err = _tuple[1];
i = 0;
/* while (true) { */ case 2:
/* if (!(i < 2 && (laddr === ptrType$4.nil || (laddr.Port === 0)) && (selfConnect(fd, err) || spuriousENOTAVAIL(err)))) { break; } */ if(!(i < 2 && (laddr === ptrType$4.nil || (laddr.Port === 0)) && (selfConnect(fd, err) || spuriousENOTAVAIL(err)))) { $s = 3; continue; }
/* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 4:
_r$1 = fd.Close(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
/* } */ case 5:
_r$2 = internetSocket(ctx, net, laddr, raddr, 1, 0, "dial"); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$1 = _r$2;
fd = _tuple$1[0];
err = _tuple$1[1];
i = i + (1) >> 0;
/* } */ $s = 2; continue; case 3:
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$8.nil, err];
}
_r$3 = newTCPConn(fd); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
$s = -1; return [_r$3, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: doDialTCP }; } $f.$ptr = $ptr; $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.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;
};
selfConnect = function(fd, err) {
var $ptr, err, fd, l, r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
return false;
}
if ($interfaceIsEqual(fd.laddr, $ifaceNil) || $interfaceIsEqual(fd.raddr, $ifaceNil)) {
return true;
}
l = $assertType(fd.laddr, ptrType$4);
r = $assertType(fd.raddr, ptrType$4);
return (l.Port === r.Port) && l.IP.Equal(r.IP);
};
spuriousENOTAVAIL = function(err) {
var $ptr, _tuple, _tuple$1, err, ok, ok$1, op, sys;
_tuple = $assertType(err, ptrType$55, true);
op = _tuple[0];
ok = _tuple[1];
if (ok) {
err = op.Err;
}
_tuple$1 = $assertType(err, ptrType$28, true);
sys = _tuple$1[0];
ok$1 = _tuple$1[1];
if (ok$1) {
err = sys.Err;
}
return $interfaceIsEqual(err, new syscall.Errno(536870915));
};
TCPListener.ptr.prototype.ok = function() {
var $ptr, ln;
ln = this;
return !(ln === ptrType$60.nil) && !(ln.fd === ptrType$21.nil);
};
TCPListener.prototype.ok = function() { return this.$val.ok(); };
TCPListener.ptr.prototype.accept = function() {
var $ptr, _r, _r$1, _tuple, err, fd, ln, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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:
ln = this;
_r = ln.fd.accept(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
fd = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$8.nil, err];
}
_r$1 = newTCPConn(fd); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return [_r$1, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: TCPListener.ptr.prototype.accept }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.fd = fd; $f.ln = ln; $f.$s = $s; $f.$r = $r; return $f;
};
TCPListener.prototype.accept = function() { return this.$val.accept(); };
TCPListener.ptr.prototype.close = function() {
var $ptr, _r, ln, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; ln = $f.ln; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
ln = this;
_r = ln.fd.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: TCPListener.ptr.prototype.close }; } $f.$ptr = $ptr; $f._r = _r; $f.ln = ln; $f.$s = $s; $f.$r = $r; return $f;
};
TCPListener.prototype.close = function() { return this.$val.close(); };
TCPListener.ptr.prototype.file = function() {
var $ptr, _tuple, err, f, ln;
ln = this;
_tuple = ln.fd.dup();
f = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [ptrType$30.nil, err];
}
return [f, $ifaceNil];
};
TCPListener.prototype.file = function() { return this.$val.file(); };
setNoDelay = function(fd, noDelay) {
var $ptr, err, fd, noDelay, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; err = $f.err; fd = $f.fd; noDelay = $f.noDelay; $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);
err = fd.incref();
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
$deferred.push([$methodVal(fd, "decref"), []]);
$s = -1; return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd.sysfd, 6, 1, boolint(noDelay)));
/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: setNoDelay }; } $f.$ptr = $ptr; $f.err = err; $f.fd = fd; $f.noDelay = noDelay; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
setKeepAlivePeriod = function(fd, d) {
var $ptr, d, err, err$1, fd, ka, msecs, ret$1, size, x, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; d = $f.d; err = $f.err; err$1 = $f.err$1; fd = $f.fd; ka = $f.ka; msecs = $f.msecs; ret$1 = $f.ret$1; 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);
ka = [ka];
ret$1 = [ret$1];
err = fd.incref();
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
$deferred.push([$methodVal(fd, "decref"), []]);
d = (x = new time.Duration(0, 999999), new time.Duration(d.$high + x.$high, d.$low + x.$low));
msecs = (($div64(d, new time.Duration(0, 1000000), false).$low >>> 0));
ka[0] = new syscall.TCPKeepalive.ptr(1, msecs, msecs);
ret$1[0] = 0;
size = 12;
err$1 = syscall.WSAIoctl(fd.sysfd, 2550136836, ((ka[0])), size, ptrType$18.nil, 0, (ret$1.$ptr || (ret$1.$ptr = new ptrType$14(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, ret$1))), ptrType$23.nil, 0);
$s = -1; return os.NewSyscallError("wsaioctl", err$1);
/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: setKeepAlivePeriod }; } $f.$ptr = $ptr; $f.d = d; $f.err = err; $f.err$1 = err$1; $f.fd = fd; $f.ka = ka; $f.msecs = msecs; $f.ret$1 = ret$1; $f.size = size; $f.x = x; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
UDPAddr.ptr.prototype.Network = function() {
var $ptr, a;
a = this;
return "udp";
};
UDPAddr.prototype.Network = function() { return this.$val.Network(); };
UDPAddr.ptr.prototype.String = function() {
var $ptr, a, ip;
a = this;
if (a === ptrType$5.nil) {
return "<nil>";
}
ip = ipEmptyString(a.IP);
if (!(a.Zone === "")) {
return JoinHostPort(ip + "%" + a.Zone, itoa(a.Port));
}
return JoinHostPort(ip, itoa(a.Port));
};
UDPAddr.prototype.String = function() { return this.$val.String(); };
UDPAddr.ptr.prototype.isWildcard = function() {
var $ptr, a;
a = this;
if (a === ptrType$5.nil || a.IP === IP.nil) {
return true;
}
return a.IP.IsUnspecified();
};
UDPAddr.prototype.isWildcard = function() { return this.$val.isWildcard(); };
UDPAddr.ptr.prototype.opAddr = function() {
var $ptr, a;
a = this;
if (a === ptrType$5.nil) {
return $ifaceNil;
}
return a;
};
UDPAddr.prototype.opAddr = function() { return this.$val.opAddr(); };
UDPConn.ptr.prototype.ReadFromUDP = function(b) {
var $ptr, _r, _tuple, addr, b, c, err, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
c = this;
if (!c.conn.ok()) {
$s = -1; return [0, ptrType$5.nil, new syscall.Errno(536870951)];
}
_r = c.readFrom(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
addr = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = new OpError.ptr("read", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
}
$s = -1; return [n, addr, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: UDPConn.ptr.prototype.ReadFromUDP }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
UDPConn.prototype.ReadFromUDP = function(b) { return this.$val.ReadFromUDP(b); };
UDPConn.ptr.prototype.ReadFrom = function(b) {
var $ptr, _r, _tuple, addr, b, c, err, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
c = this;
if (!c.conn.ok()) {
$s = -1; return [0, $ifaceNil, new syscall.Errno(536870951)];
}
_r = c.readFrom(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
addr = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = new OpError.ptr("read", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
}
if (addr === ptrType$5.nil) {
$s = -1; return [n, $ifaceNil, err];
}
$s = -1; return [n, addr, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: UDPConn.ptr.prototype.ReadFrom }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
UDPConn.prototype.ReadFrom = function(b) { return this.$val.ReadFrom(b); };
UDPConn.ptr.prototype.ReadMsgUDP = function(b, oob) {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tuple, addr, b, c, err, flags, n, oob, oobn, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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:
n = 0;
oobn = 0;
flags = 0;
addr = ptrType$5.nil;
err = $ifaceNil;
c = this;
if (!c.conn.ok()) {
_tmp = 0;
_tmp$1 = 0;
_tmp$2 = 0;
_tmp$3 = ptrType$5.nil;
_tmp$4 = new syscall.Errno(536870951);
n = _tmp;
oobn = _tmp$1;
flags = _tmp$2;
addr = _tmp$3;
err = _tmp$4;
$s = -1; return [n, oobn, flags, addr, err];
}
_r = c.readMsg(b, oob); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
oobn = _tuple[1];
flags = _tuple[2];
addr = _tuple[3];
err = _tuple[4];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = new OpError.ptr("read", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
}
$s = -1; return [n, oobn, flags, addr, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: UDPConn.ptr.prototype.ReadMsgUDP }; } $f.$ptr = $ptr; $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.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;
};
UDPConn.prototype.ReadMsgUDP = function(b, oob) { return this.$val.ReadMsgUDP(b, oob); };
UDPConn.ptr.prototype.WriteToUDP = function(b, addr) {
var $ptr, _r, _tuple, addr, b, c, err, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
c = this;
if (!c.conn.ok()) {
$s = -1; return [0, new syscall.Errno(536870951)];
}
_r = c.writeTo(b, addr); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = new OpError.ptr("write", c.conn.fd.net, c.conn.fd.laddr, addr.opAddr(), err);
}
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: UDPConn.ptr.prototype.WriteToUDP }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
UDPConn.prototype.WriteToUDP = function(b, addr) { return this.$val.WriteToUDP(b, addr); };
UDPConn.ptr.prototype.WriteTo = function(b, addr) {
var $ptr, _r, _tuple, _tuple$1, a, addr, b, c, err, n, ok, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
c = this;
if (!c.conn.ok()) {
$s = -1; return [0, new syscall.Errno(536870951)];
}
_tuple = $assertType(addr, ptrType$5, true);
a = _tuple[0];
ok = _tuple[1];
if (!ok) {
$s = -1; return [0, new OpError.ptr("write", c.conn.fd.net, c.conn.fd.laddr, addr, new syscall.Errno(536870951))];
}
_r = c.writeTo(b, a); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
n = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = new OpError.ptr("write", c.conn.fd.net, c.conn.fd.laddr, a.opAddr(), err);
}
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: UDPConn.ptr.prototype.WriteTo }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
UDPConn.prototype.WriteTo = function(b, addr) { return this.$val.WriteTo(b, addr); };
UDPConn.ptr.prototype.WriteMsgUDP = function(b, oob, addr) {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tuple, addr, b, c, err, n, oob, oobn, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
n = 0;
oobn = 0;
err = $ifaceNil;
c = this;
if (!c.conn.ok()) {
_tmp = 0;
_tmp$1 = 0;
_tmp$2 = new syscall.Errno(536870951);
n = _tmp;
oobn = _tmp$1;
err = _tmp$2;
$s = -1; return [n, oobn, err];
}
_r = c.writeMsg(b, oob, addr); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
oobn = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = new OpError.ptr("write", c.conn.fd.net, c.conn.fd.laddr, addr.opAddr(), err);
}
$s = -1; return [n, oobn, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: UDPConn.ptr.prototype.WriteMsgUDP }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
UDPConn.prototype.WriteMsgUDP = function(b, oob, addr) { return this.$val.WriteMsgUDP(b, oob, addr); };
newUDPConn = function(fd) {
var $ptr, fd;
return new UDPConn.ptr(new conn.ptr(fd));
};
sockaddrToUDP = function(sa) {
var $ptr, _r, _ref, sa, sa$1, sa$2, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
_ref = sa;
/* */ if ($assertType(_ref, ptrType$24, true)[1]) { $s = 1; continue; }
/* */ if ($assertType(_ref, ptrType$25, true)[1]) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if ($assertType(_ref, ptrType$24, true)[1]) { */ case 1:
sa$1 = _ref.$val;
$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, "");
/* } else if ($assertType(_ref, ptrType$25, true)[1]) { */ case 2:
sa$2 = _ref.$val;
_r = zoneToString(((sa$2.ZoneId >> 0))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$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);
/* } */ case 3:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: sockaddrToUDP }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
UDPAddr.ptr.prototype.family = function() {
var $ptr, a;
a = this;
if (a === ptrType$5.nil || a.IP.$length <= 4) {
return 2;
}
if (!(a.IP.To4() === IP.nil)) {
return 2;
}
return 23;
};
UDPAddr.prototype.family = function() { return this.$val.family(); };
UDPAddr.ptr.prototype.sockaddr = function(family) {
var $ptr, _r, a, family, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; a = $f.a; family = $f.family; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
a = this;
if (a === ptrType$5.nil) {
$s = -1; return [$ifaceNil, $ifaceNil];
}
_r = ipToSockaddr(family, a.IP, a.Port, a.Zone); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: UDPAddr.ptr.prototype.sockaddr }; } $f.$ptr = $ptr; $f._r = _r; $f.a = a; $f.family = family; $f.$s = $s; $f.$r = $r; return $f;
};
UDPAddr.prototype.sockaddr = function(family) { return this.$val.sockaddr(family); };
UDPAddr.ptr.prototype.toLocal = function(net) {
var $ptr, a, net;
a = this;
return new UDPAddr.ptr(loopbackIP(net), a.Port, a.Zone);
};
UDPAddr.prototype.toLocal = function(net) { return this.$val.toLocal(net); };
UDPConn.ptr.prototype.readFrom = function(b) {
var $ptr, _r, _r$1, _ref, _tuple, addr, b, c, err, n, sa, sa$1, sa$2, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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:
c = this;
addr = ptrType$5.nil;
_r = c.conn.fd.readFrom(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
sa = _tuple[1];
err = _tuple[2];
_ref = sa;
/* */ if ($assertType(_ref, ptrType$24, true)[1]) { $s = 2; continue; }
/* */ if ($assertType(_ref, ptrType$25, true)[1]) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if ($assertType(_ref, ptrType$24, true)[1]) { */ case 2:
sa$1 = _ref.$val;
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, "");
$s = 4; continue;
/* } else if ($assertType(_ref, ptrType$25, true)[1]) { */ case 3:
sa$2 = _ref.$val;
_r$1 = zoneToString(((sa$2.ZoneId >> 0))); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
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$1);
/* } */ case 4:
$s = -1; return [n, addr, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: UDPConn.ptr.prototype.readFrom }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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;
};
UDPConn.prototype.readFrom = function(b) { return this.$val.readFrom(b); };
UDPConn.ptr.prototype.readMsg = function(b, oob) {
var $ptr, _r, _ref, _tuple, addr, b, c, err, flags, n, oob, oobn, sa, sa$1, sa$2, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
n = 0;
oobn = 0;
flags = 0;
addr = ptrType$5.nil;
err = $ifaceNil;
c = this;
sa = $ifaceNil;
_tuple = c.conn.fd.readMsg(b, oob);
n = _tuple[0];
oobn = _tuple[1];
flags = _tuple[2];
sa = _tuple[3];
err = _tuple[4];
_ref = sa;
/* */ if ($assertType(_ref, ptrType$24, true)[1]) { $s = 1; continue; }
/* */ if ($assertType(_ref, ptrType$25, true)[1]) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if ($assertType(_ref, ptrType$24, true)[1]) { */ case 1:
sa$1 = _ref.$val;
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, "");
$s = 3; continue;
/* } else if ($assertType(_ref, ptrType$25, true)[1]) { */ case 2:
sa$2 = _ref.$val;
_r = zoneToString(((sa$2.ZoneId >> 0))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
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);
/* } */ case 3:
$s = -1; return [n, oobn, flags, addr, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: UDPConn.ptr.prototype.readMsg }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
UDPConn.prototype.readMsg = function(b, oob) { return this.$val.readMsg(b, oob); };
UDPConn.ptr.prototype.writeTo = function(b, addr) {
var $ptr, _r, _r$1, _tuple, addr, b, c, err, sa, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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:
c = this;
if (c.conn.fd.isConnected) {
$s = -1; return [0, $pkg.ErrWriteToConnected];
}
if (addr === ptrType$5.nil) {
$s = -1; return [0, errMissingAddress];
}
_r = addr.sockaddr(c.conn.fd.family); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
sa = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [0, err];
}
_r$1 = c.conn.fd.writeTo(b, sa); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: UDPConn.ptr.prototype.writeTo }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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;
};
UDPConn.prototype.writeTo = function(b, addr) { return this.$val.writeTo(b, addr); };
UDPConn.ptr.prototype.writeMsg = function(b, oob, addr) {
var $ptr, _r, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
n = 0;
oobn = 0;
err = $ifaceNil;
c = this;
if (c.conn.fd.isConnected && !(addr === ptrType$5.nil)) {
_tmp = 0;
_tmp$1 = 0;
_tmp$2 = $pkg.ErrWriteToConnected;
n = _tmp;
oobn = _tmp$1;
err = _tmp$2;
$s = -1; return [n, oobn, err];
}
if (!c.conn.fd.isConnected && addr === ptrType$5.nil) {
_tmp$3 = 0;
_tmp$4 = 0;
_tmp$5 = errMissingAddress;
n = _tmp$3;
oobn = _tmp$4;
err = _tmp$5;
$s = -1; return [n, oobn, err];
}
_r = addr.sockaddr(c.conn.fd.family); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
sa = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$6 = 0;
_tmp$7 = 0;
_tmp$8 = err;
n = _tmp$6;
oobn = _tmp$7;
err = _tmp$8;
$s = -1; return [n, oobn, err];
}
_tuple$1 = c.conn.fd.writeMsg(b, oob, sa);
n = _tuple$1[0];
oobn = _tuple$1[1];
err = _tuple$1[2];
$s = -1; return [n, oobn, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: UDPConn.ptr.prototype.writeMsg }; } $f.$ptr = $ptr; $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._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;
};
UDPConn.prototype.writeMsg = function(b, oob, addr) { return this.$val.writeMsg(b, oob, addr); };
dialUDP = function(ctx, net, laddr, raddr) {
var $ptr, _r, _tuple, ctx, err, fd, laddr, net, raddr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
_r = internetSocket(ctx, net, laddr, raddr, 2, 0, "dial"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
fd = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$61.nil, err];
}
$s = -1; return [newUDPConn(fd), $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: dialUDP }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
UnixAddr.ptr.prototype.Network = function() {
var $ptr, a;
a = this;
return a.Net;
};
UnixAddr.prototype.Network = function() { return this.$val.Network(); };
UnixAddr.ptr.prototype.String = function() {
var $ptr, a;
a = this;
if (a === ptrType$9.nil) {
return "<nil>";
}
return a.Name;
};
UnixAddr.prototype.String = function() { return this.$val.String(); };
UnixAddr.ptr.prototype.isWildcard = function() {
var $ptr, a;
a = this;
return a === ptrType$9.nil || a.Name === "";
};
UnixAddr.prototype.isWildcard = function() { return this.$val.isWildcard(); };
UnixAddr.ptr.prototype.opAddr = function() {
var $ptr, a;
a = this;
if (a === ptrType$9.nil) {
return $ifaceNil;
}
return a;
};
UnixAddr.prototype.opAddr = function() { return this.$val.opAddr(); };
ResolveUnixAddr = function(net, addr) {
var $ptr, _1, addr, net;
_1 = net;
if (_1 === ("unix") || _1 === ("unixgram") || _1 === ("unixpacket")) {
return [new UnixAddr.ptr(addr, net), $ifaceNil];
} else {
return [ptrType$9.nil, new UnknownNetworkError((net))];
}
};
$pkg.ResolveUnixAddr = ResolveUnixAddr;
UnixConn.ptr.prototype.CloseRead = function() {
var $ptr, _r, c, err, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
if (!c.conn.ok()) {
$s = -1; return new syscall.Errno(536870951);
}
_r = c.conn.fd.closeRead(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return new OpError.ptr("close", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: UnixConn.ptr.prototype.CloseRead }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
};
UnixConn.prototype.CloseRead = function() { return this.$val.CloseRead(); };
UnixConn.ptr.prototype.CloseWrite = function() {
var $ptr, _r, c, err, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
if (!c.conn.ok()) {
$s = -1; return new syscall.Errno(536870951);
}
_r = c.conn.fd.closeWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return new OpError.ptr("close", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: UnixConn.ptr.prototype.CloseWrite }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
};
UnixConn.prototype.CloseWrite = function() { return this.$val.CloseWrite(); };
UnixConn.ptr.prototype.ReadFromUnix = function(b) {
var $ptr, _r, _tuple, addr, b, c, err, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
c = this;
if (!c.conn.ok()) {
$s = -1; return [0, ptrType$9.nil, new syscall.Errno(536870951)];
}
_r = c.readFrom(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
addr = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = new OpError.ptr("read", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
}
$s = -1; return [n, addr, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: UnixConn.ptr.prototype.ReadFromUnix }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
UnixConn.prototype.ReadFromUnix = function(b) { return this.$val.ReadFromUnix(b); };
UnixConn.ptr.prototype.ReadFrom = function(b) {
var $ptr, _r, _tuple, addr, b, c, err, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
c = this;
if (!c.conn.ok()) {
$s = -1; return [0, $ifaceNil, new syscall.Errno(536870951)];
}
_r = c.readFrom(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
addr = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = new OpError.ptr("read", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
}
if (addr === ptrType$9.nil) {
$s = -1; return [n, $ifaceNil, err];
}
$s = -1; return [n, addr, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: UnixConn.ptr.prototype.ReadFrom }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
UnixConn.prototype.ReadFrom = function(b) { return this.$val.ReadFrom(b); };
UnixConn.ptr.prototype.ReadMsgUnix = function(b, oob) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tuple, addr, b, c, err, flags, n, oob, oobn;
n = 0;
oobn = 0;
flags = 0;
addr = ptrType$9.nil;
err = $ifaceNil;
c = this;
if (!c.conn.ok()) {
_tmp = 0;
_tmp$1 = 0;
_tmp$2 = 0;
_tmp$3 = ptrType$9.nil;
_tmp$4 = new syscall.Errno(536870951);
n = _tmp;
oobn = _tmp$1;
flags = _tmp$2;
addr = _tmp$3;
err = _tmp$4;
return [n, oobn, flags, addr, err];
}
_tuple = c.readMsg(b, oob);
n = _tuple[0];
oobn = _tuple[1];
flags = _tuple[2];
addr = _tuple[3];
err = _tuple[4];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = new OpError.ptr("read", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
}
return [n, oobn, flags, addr, err];
};
UnixConn.prototype.ReadMsgUnix = function(b, oob) { return this.$val.ReadMsgUnix(b, oob); };
UnixConn.ptr.prototype.WriteToUnix = function(b, addr) {
var $ptr, _r, _tuple, addr, b, c, err, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
c = this;
if (!c.conn.ok()) {
$s = -1; return [0, new syscall.Errno(536870951)];
}
_r = c.writeTo(b, addr); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = new OpError.ptr("write", c.conn.fd.net, c.conn.fd.laddr, addr.opAddr(), err);
}
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: UnixConn.ptr.prototype.WriteToUnix }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
UnixConn.prototype.WriteToUnix = function(b, addr) { return this.$val.WriteToUnix(b, addr); };
UnixConn.ptr.prototype.WriteTo = function(b, addr) {
var $ptr, _r, _tuple, _tuple$1, a, addr, b, c, err, n, ok, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
c = this;
if (!c.conn.ok()) {
$s = -1; return [0, new syscall.Errno(536870951)];
}
_tuple = $assertType(addr, ptrType$9, true);
a = _tuple[0];
ok = _tuple[1];
if (!ok) {
$s = -1; return [0, new OpError.ptr("write", c.conn.fd.net, c.conn.fd.laddr, addr, new syscall.Errno(536870951))];
}
_r = c.writeTo(b, a); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
n = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = new OpError.ptr("write", c.conn.fd.net, c.conn.fd.laddr, a.opAddr(), err);
}
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: UnixConn.ptr.prototype.WriteTo }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
UnixConn.prototype.WriteTo = function(b, addr) { return this.$val.WriteTo(b, addr); };
UnixConn.ptr.prototype.WriteMsgUnix = function(b, oob, addr) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tuple, addr, b, c, err, n, oob, oobn;
n = 0;
oobn = 0;
err = $ifaceNil;
c = this;
if (!c.conn.ok()) {
_tmp = 0;
_tmp$1 = 0;
_tmp$2 = new syscall.Errno(536870951);
n = _tmp;
oobn = _tmp$1;
err = _tmp$2;
return [n, oobn, err];
}
_tuple = c.writeMsg(b, oob, addr);
n = _tuple[0];
oobn = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = new OpError.ptr("write", c.conn.fd.net, c.conn.fd.laddr, addr.opAddr(), err);
}
return [n, oobn, err];
};
UnixConn.prototype.WriteMsgUnix = function(b, oob, addr) { return this.$val.WriteMsgUnix(b, oob, addr); };
newUnixConn = function(fd) {
var $ptr, fd;
return new UnixConn.ptr(new conn.ptr(fd));
};
unixSocket = function(ctx, net, laddr, raddr, mode) {
var $ptr, _1, _2, _r, _r$1, _r$2, _tuple, _v, _v$1, ctx, err, fd, laddr, mode, net, raddr, sotype, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _2 = $f._2; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _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:
sotype = 0;
_1 = net;
if (_1 === ("unix")) {
sotype = 1;
} else if (_1 === ("unixgram")) {
sotype = 2;
} else if (_1 === ("unixpacket")) {
sotype = 5;
} else {
$s = -1; return [ptrType$21.nil, new UnknownNetworkError((net))];
}
_2 = mode;
/* */ if (_2 === ("dial")) { $s = 2; continue; }
/* */ if (_2 === ("listen")) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (_2 === ("dial")) { */ case 2:
if (!(!($interfaceIsEqual(laddr, $ifaceNil)))) { _v = false; $s = 8; continue s; }
_r = laddr.isWildcard(); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_v = _r; case 8:
/* */ if (_v) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (_v) { */ case 6:
laddr = $ifaceNil;
/* } */ case 7:
if (!(!($interfaceIsEqual(raddr, $ifaceNil)))) { _v$1 = false; $s = 12; continue s; }
_r$1 = raddr.isWildcard(); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_v$1 = _r$1; case 12:
/* */ if (_v$1) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (_v$1) { */ case 10:
raddr = $ifaceNil;
/* } */ case 11:
if ($interfaceIsEqual(raddr, $ifaceNil) && (!((sotype === 2)) || $interfaceIsEqual(laddr, $ifaceNil))) {
$s = -1; return [ptrType$21.nil, errMissingAddress];
}
$s = 5; continue;
/* } else if (_2 === ("listen")) { */ case 3:
$s = 5; continue;
/* } else { */ case 4:
$s = -1; return [ptrType$21.nil, errors.New("unknown mode: " + mode)];
/* } */ case 5:
case 1:
_r$2 = socket(ctx, net, 1, sotype, 0, false, laddr, raddr); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple = _r$2;
fd = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$21.nil, err];
}
$s = -1; return [fd, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: unixSocket }; } $f.$ptr = $ptr; $f._1 = _1; $f._2 = _2; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $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;
};
sockaddrToUnix = function(sa) {
var $ptr, _tuple, ok, s, sa;
_tuple = $assertType(sa, ptrType$64, true);
s = _tuple[0];
ok = _tuple[1];
if (ok) {
return new UnixAddr.ptr(s.Name, "unix");
}
return $ifaceNil;
};
sockaddrToUnixgram = function(sa) {
var $ptr, _tuple, ok, s, sa;
_tuple = $assertType(sa, ptrType$64, true);
s = _tuple[0];
ok = _tuple[1];
if (ok) {
return new UnixAddr.ptr(s.Name, "unixgram");
}
return $ifaceNil;
};
sockaddrToUnixpacket = function(sa) {
var $ptr, _tuple, ok, s, sa;
_tuple = $assertType(sa, ptrType$64, true);
s = _tuple[0];
ok = _tuple[1];
if (ok) {
return new UnixAddr.ptr(s.Name, "unixpacket");
}
return $ifaceNil;
};
sotypeToNet = function(sotype) {
var $ptr, _1, sotype;
_1 = sotype;
if (_1 === (1)) {
return "unix";
} else if (_1 === (2)) {
return "unixgram";
} else if (_1 === (5)) {
return "unixpacket";
} else {
$panic(new $String("sotypeToNet unknown socket type"));
}
};
UnixAddr.ptr.prototype.family = function() {
var $ptr, a;
a = this;
return 1;
};
UnixAddr.prototype.family = function() { return this.$val.family(); };
UnixAddr.ptr.prototype.sockaddr = function(family) {
var $ptr, a, family;
a = this;
if (a === ptrType$9.nil) {
return [$ifaceNil, $ifaceNil];
}
return [new syscall.SockaddrUnix.ptr(a.Name), $ifaceNil];
};
UnixAddr.prototype.sockaddr = function(family) { return this.$val.sockaddr(family); };
UnixAddr.ptr.prototype.toLocal = function(net) {
var $ptr, a, net;
a = this;
return a;
};
UnixAddr.prototype.toLocal = function(net) { return this.$val.toLocal(net); };
UnixConn.ptr.prototype.readFrom = function(b) {
var $ptr, _r, _ref, _tuple, addr, b, c, err, n, sa, sa$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
c = this;
addr = ptrType$9.nil;
_r = c.conn.fd.readFrom(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
sa = _tuple[1];
err = _tuple[2];
_ref = sa;
if ($assertType(_ref, ptrType$64, true)[1]) {
sa$1 = _ref.$val;
if (!(sa$1.Name === "")) {
addr = new UnixAddr.ptr(sa$1.Name, sotypeToNet(c.conn.fd.sotype));
}
}
$s = -1; return [n, addr, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: UnixConn.ptr.prototype.readFrom }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
UnixConn.prototype.readFrom = function(b) { return this.$val.readFrom(b); };
UnixConn.ptr.prototype.readMsg = function(b, oob) {
var $ptr, _ref, _tuple, addr, b, c, err, flags, n, oob, oobn, sa, sa$1;
n = 0;
oobn = 0;
flags = 0;
addr = ptrType$9.nil;
err = $ifaceNil;
c = this;
sa = $ifaceNil;
_tuple = c.conn.fd.readMsg(b, oob);
n = _tuple[0];
oobn = _tuple[1];
flags = _tuple[2];
sa = _tuple[3];
err = _tuple[4];
_ref = sa;
if ($assertType(_ref, ptrType$64, true)[1]) {
sa$1 = _ref.$val;
if (!(sa$1.Name === "")) {
addr = new UnixAddr.ptr(sa$1.Name, sotypeToNet(c.conn.fd.sotype));
}
}
return [n, oobn, flags, addr, err];
};
UnixConn.prototype.readMsg = function(b, oob) { return this.$val.readMsg(b, oob); };
UnixConn.ptr.prototype.writeTo = function(b, addr) {
var $ptr, _r, addr, b, c, sa, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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:
c = this;
if (c.conn.fd.isConnected) {
$s = -1; return [0, $pkg.ErrWriteToConnected];
}
if (addr === ptrType$9.nil) {
$s = -1; return [0, errMissingAddress];
}
if (!(addr.Net === sotypeToNet(c.conn.fd.sotype))) {
$s = -1; return [0, new syscall.Errno(536870917)];
}
sa = new syscall.SockaddrUnix.ptr(addr.Name);
_r = c.conn.fd.writeTo(b, sa); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: UnixConn.ptr.prototype.writeTo }; } $f.$ptr = $ptr; $f._r = _r; $f.addr = addr; $f.b = b; $f.c = c; $f.sa = sa; $f.$s = $s; $f.$r = $r; return $f;
};
UnixConn.prototype.writeTo = function(b, addr) { return this.$val.writeTo(b, addr); };
UnixConn.ptr.prototype.writeMsg = function(b, oob, addr) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, addr, b, c, err, n, oob, oobn, sa;
n = 0;
oobn = 0;
err = $ifaceNil;
c = this;
if ((c.conn.fd.sotype === 2) && c.conn.fd.isConnected) {
_tmp = 0;
_tmp$1 = 0;
_tmp$2 = $pkg.ErrWriteToConnected;
n = _tmp;
oobn = _tmp$1;
err = _tmp$2;
return [n, oobn, err];
}
sa = $ifaceNil;
if (!(addr === ptrType$9.nil)) {
if (!(addr.Net === sotypeToNet(c.conn.fd.sotype))) {
_tmp$3 = 0;
_tmp$4 = 0;
_tmp$5 = new syscall.Errno(536870917);
n = _tmp$3;
oobn = _tmp$4;
err = _tmp$5;
return [n, oobn, err];
}
sa = new syscall.SockaddrUnix.ptr(addr.Name);
}
_tuple = c.conn.fd.writeMsg(b, oob, sa);
n = _tuple[0];
oobn = _tuple[1];
err = _tuple[2];
return [n, oobn, err];
};
UnixConn.prototype.writeMsg = function(b, oob, addr) { return this.$val.writeMsg(b, oob, addr); };
dialUnix = function(ctx, net, laddr, raddr) {
var $ptr, _r, _tuple, ctx, err, fd, laddr, net, raddr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
_r = unixSocket(ctx, net, laddr, raddr, "dial"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
fd = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$62.nil, err];
}
$s = -1; return [newUnixConn(fd), $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: dialUnix }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
ptrType$65.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$3], 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)}];
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)}];
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)}];
ptrType$10.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$10], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$2], [$Bool], false)}];
ptrType$11.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$10], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$2], [$Bool], false)}];
ptrType$68.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$10], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$2], [$Bool], false)}];
ptrType$69.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$10], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$2], [$Bool], false)}];
ptrType$70.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$10], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$2], [$Bool], false)}];
ptrType$71.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$10], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$2], [$Bool], false)}];
ptrType$72.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$10], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$2], [$Bool], false)}];
ptrType$73.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$10], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$2], [$Bool], false)}];
ptrType$74.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$10], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$2], [$Bool], false)}];
ptrType$75.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$10], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$2], [$Bool], false)}];
ptrType$78.methods = [{prop: "incref", name: "incref", pkg: "net", typ: $funcType([], [$Bool], false)}, {prop: "increfAndClose", name: "increfAndClose", pkg: "net", typ: $funcType([], [$Bool], false)}, {prop: "decref", name: "decref", pkg: "net", typ: $funcType([], [$Bool], false)}, {prop: "rwlock", name: "rwlock", pkg: "net", typ: $funcType([$Bool], [$Bool], false)}, {prop: "rwunlock", name: "rwunlock", pkg: "net", typ: $funcType([$Bool], [$Bool], false)}];
ptrType$79.methods = [{prop: "init", name: "init", pkg: "net", typ: $funcType([ptrType$21], [$error], false)}, {prop: "close", name: "close", pkg: "net", typ: $funcType([], [], false)}, {prop: "evict", name: "evict", pkg: "net", typ: $funcType([], [], false)}, {prop: "prepare", name: "prepare", pkg: "net", typ: $funcType([$Int], [$error], false)}, {prop: "prepareRead", name: "prepareRead", pkg: "net", typ: $funcType([], [$error], false)}, {prop: "prepareWrite", name: "prepareWrite", pkg: "net", typ: $funcType([], [$error], false)}, {prop: "wait", name: "wait", pkg: "net", typ: $funcType([$Int], [$error], false)}, {prop: "waitRead", name: "waitRead", pkg: "net", typ: $funcType([], [$error], false)}, {prop: "waitWrite", name: "waitWrite", pkg: "net", typ: $funcType([], [$error], false)}, {prop: "waitCanceled", name: "waitCanceled", pkg: "net", typ: $funcType([$Int], [], false)}, {prop: "waitCanceledRead", name: "waitCanceledRead", pkg: "net", typ: $funcType([], [], false)}, {prop: "waitCanceledWrite", name: "waitCanceledWrite", pkg: "net", typ: $funcType([], [], false)}];
ptrType$80.methods = [{prop: "InitBuf", name: "InitBuf", pkg: "", typ: $funcType([sliceType$1], [], false)}, {prop: "InitBufs", name: "InitBufs", pkg: "", typ: $funcType([ptrType$2], [], false)}, {prop: "ClearBufs", name: "ClearBufs", pkg: "", typ: $funcType([], [], false)}];
ptrType.methods = [{prop: "ProcessRemoteIO", name: "ProcessRemoteIO", pkg: "", typ: $funcType([], [], false)}, {prop: "ExecIO", name: "ExecIO", pkg: "", typ: $funcType([ptrType$80, $String, funcType$3], [$Int, $error], false)}];
ptrType$21.methods = [{prop: "incref", name: "incref", pkg: "net", typ: $funcType([], [$error], false)}, {prop: "decref", name: "decref", pkg: "net", typ: $funcType([], [], false)}, {prop: "readLock", name: "readLock", pkg: "net", typ: $funcType([], [$error], false)}, {prop: "readUnlock", name: "readUnlock", pkg: "net", typ: $funcType([], [], false)}, {prop: "writeLock", name: "writeLock", pkg: "net", typ: $funcType([], [$error], false)}, {prop: "writeUnlock", name: "writeUnlock", pkg: "net", typ: $funcType([], [], false)}, {prop: "setDeadline", name: "setDeadline", pkg: "net", typ: $funcType([time.Time], [$error], false)}, {prop: "setReadDeadline", name: "setReadDeadline", pkg: "net", typ: $funcType([time.Time], [$error], false)}, {prop: "setWriteDeadline", name: "setWriteDeadline", pkg: "net", typ: $funcType([time.Time], [$error], false)}, {prop: "eofError", name: "eofError", pkg: "net", typ: $funcType([$Int, $error], [$error], false)}, {prop: "init", name: "init", pkg: "net", typ: $funcType([], [$error], false)}, {prop: "setAddr", name: "setAddr", pkg: "net", typ: $funcType([Addr, Addr], [], false)}, {prop: "connect", name: "connect", pkg: "net", typ: $funcType([context.Context, syscall.Sockaddr, syscall.Sockaddr], [$error], false)}, {prop: "destroy", name: "destroy", pkg: "net", typ: $funcType([], [], 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: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "writeBuffers", name: "writeBuffers", pkg: "net", typ: $funcType([ptrType$2], [$Int64, $error], false)}, {prop: "writeTo", name: "writeTo", pkg: "net", typ: $funcType([sliceType$1, syscall.Sockaddr], [$Int, $error], false)}, {prop: "acceptOne", name: "acceptOne", pkg: "net", typ: $funcType([sliceType$6, ptrType$80], [ptrType$21, $error], false)}, {prop: "accept", name: "accept", pkg: "net", typ: $funcType([], [ptrType$21, $error], false)}, {prop: "dup", name: "dup", pkg: "net", typ: $funcType([], [ptrType$30, $error], false)}, {prop: "readMsg", name: "readMsg", pkg: "net", typ: $funcType([sliceType$1, sliceType$1], [$Int, $Int, $Int, syscall.Sockaddr, $error], false)}, {prop: "writeMsg", name: "writeMsg", pkg: "net", typ: $funcType([sliceType$1, sliceType$1, syscall.Sockaddr], [$Int, $Int, $error], false)}, {prop: "addrFunc", name: "addrFunc", pkg: "net", typ: $funcType([], [funcType$4], 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)}];
ptrType$32.methods = [{prop: "Addrs", name: "Addrs", pkg: "", typ: $funcType([], [sliceType$7, $error], false)}, {prop: "MulticastAddrs", name: "MulticastAddrs", pkg: "", typ: $funcType([], [sliceType$7, $error], false)}];
Flags.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
ptrType$81.methods = [{prop: "update", name: "update", pkg: "net", typ: $funcType([sliceType$8], [], false)}];
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)}];
ptrType$82.methods = [{prop: "UnmarshalText", name: "UnmarshalText", pkg: "", typ: $funcType([sliceType$1], [$error], false)}];
IPMask.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int, $Int], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
ptrType$37.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)}];
ptrType$6.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)}];
ptrType$39.methods = [{prop: "ReadFromIP", name: "ReadFromIP", pkg: "", typ: $funcType([sliceType$1], [$Int, ptrType$6, $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$6, $error], false)}, {prop: "WriteToIP", name: "WriteToIP", pkg: "", typ: $funcType([sliceType$1, ptrType$6], [$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$6], [$Int, $Int, $error], false)}, {prop: "readFrom", name: "readFrom", pkg: "net", typ: $funcType([sliceType$1], [$Int, ptrType$6, $error], false)}, {prop: "readMsg", name: "readMsg", pkg: "net", typ: $funcType([sliceType$1, sliceType$1], [$Int, $Int, $Int, ptrType$6, $error], false)}, {prop: "writeTo", name: "writeTo", pkg: "net", typ: $funcType([sliceType$1, ptrType$6], [$Int, $error], false)}, {prop: "writeMsg", name: "writeMsg", pkg: "net", typ: $funcType([sliceType$1, sliceType$1, ptrType$6], [$Int, $Int, $error], false)}];
addrList.methods = [{prop: "first", name: "first", pkg: "net", typ: $funcType([funcType$5], [Addr], false)}, {prop: "partition", name: "partition", pkg: "net", typ: $funcType([funcType$5], [addrList, addrList], false)}];
ptrType$3.methods = [{prop: "resolveAddrList", name: "resolveAddrList", pkg: "net", typ: $funcType([context.Context, $String, $String, $String, Addr], [addrList, $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$2, $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$14, $error], false)}, {prop: "LookupMX", name: "LookupMX", pkg: "", typ: $funcType([context.Context, $String], [sliceType$15, $error], false)}, {prop: "LookupNS", name: "LookupNS", pkg: "", typ: $funcType([context.Context, $String], [sliceType$16, $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: "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$2, $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$14, $error], false)}, {prop: "lookupMX", name: "lookupMX", pkg: "net", typ: $funcType([context.Context, $String], [sliceType$15, $error], false)}, {prop: "lookupNS", name: "lookupNS", pkg: "net", typ: $funcType([context.Context, $String], [sliceType$16, $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)}];
HardwareAddr.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
ptrType$54.methods = [{prop: "writeBuffers", name: "writeBuffers", pkg: "net", typ: $funcType([ptrType$2], [$Int64, $error], false)}, {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$30, $error], false)}];
ptrType$55.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)}];
ptrType$83.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)}];
ptrType$84.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
ptrType$56.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)}];
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)}];
ptrType$57.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)}];
ptrType$2.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)}];
ptrType$4.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)}];
ptrType$8.methods = [{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)}];
ptrType$60.methods = [{prop: "AcceptTCP", name: "AcceptTCP", pkg: "", typ: $funcType([], [ptrType$8, $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$30, $error], false)}, {prop: "ok", name: "ok", pkg: "net", typ: $funcType([], [$Bool], false)}, {prop: "accept", name: "accept", pkg: "net", typ: $funcType([], [ptrType$8, $error], false)}, {prop: "close", name: "close", pkg: "net", typ: $funcType([], [$error], false)}, {prop: "file", name: "file", pkg: "net", typ: $funcType([], [ptrType$30, $error], false)}];
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)}];
ptrType$61.methods = [{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)}];
ptrType$9.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)}];
ptrType$62.methods = [{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$9, $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$9, $error], false)}, {prop: "WriteToUnix", name: "WriteToUnix", pkg: "", typ: $funcType([sliceType$1, ptrType$9], [$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$9], [$Int, $Int, $error], false)}, {prop: "readFrom", name: "readFrom", pkg: "net", typ: $funcType([sliceType$1], [$Int, ptrType$9, $error], false)}, {prop: "readMsg", name: "readMsg", pkg: "net", typ: $funcType([sliceType$1, sliceType$1], [$Int, $Int, $Int, ptrType$9, $error], false)}, {prop: "writeTo", name: "writeTo", pkg: "net", typ: $funcType([sliceType$1, ptrType$9], [$Int, $error], false)}, {prop: "writeMsg", name: "writeMsg", pkg: "net", typ: $funcType([sliceType$1, sliceType$1, ptrType$9], [$Int, $Int, $error], false)}];
Dialer.init("", [{prop: "Timeout", name: "Timeout", exported: true, typ: time.Duration, tag: ""}, {prop: "Deadline", name: "Deadline", exported: true, typ: time.Time, tag: ""}, {prop: "LocalAddr", name: "LocalAddr", exported: true, typ: Addr, tag: ""}, {prop: "DualStack", name: "DualStack", exported: true, typ: $Bool, tag: ""}, {prop: "FallbackDelay", name: "FallbackDelay", exported: true, typ: time.Duration, tag: ""}, {prop: "KeepAlive", name: "KeepAlive", exported: true, typ: time.Duration, tag: ""}, {prop: "Resolver", name: "Resolver", exported: true, typ: ptrType$3, tag: ""}, {prop: "Cancel", name: "Cancel", exported: true, typ: chanType, tag: ""}]);
dialParam.init("net", [{prop: "Dialer", name: "", exported: true, typ: Dialer, tag: ""}, {prop: "network", name: "network", exported: false, typ: $String, tag: ""}, {prop: "address", name: "address", exported: false, typ: $String, tag: ""}]);
SRV.init("", [{prop: "Target", name: "Target", exported: true, typ: $String, tag: ""}, {prop: "Port", name: "Port", exported: true, typ: $Uint16, tag: ""}, {prop: "Priority", name: "Priority", exported: true, typ: $Uint16, tag: ""}, {prop: "Weight", name: "Weight", exported: true, typ: $Uint16, tag: ""}]);
byPriorityWeight.init(ptrType$40);
MX.init("", [{prop: "Host", name: "Host", exported: true, typ: $String, tag: ""}, {prop: "Pref", name: "Pref", exported: true, typ: $Uint16, tag: ""}]);
byPref.init(ptrType$48);
NS.init("", [{prop: "Host", name: "Host", exported: true, typ: $String, tag: ""}]);
dnsRR_Header.init("", [{prop: "Name", name: "Name", exported: true, typ: $String, tag: ""}, {prop: "Rrtype", name: "Rrtype", exported: true, typ: $Uint16, tag: ""}, {prop: "Class", name: "Class", exported: true, typ: $Uint16, tag: ""}, {prop: "Ttl", name: "Ttl", exported: true, typ: $Uint32, tag: ""}, {prop: "Rdlength", name: "Rdlength", exported: true, typ: $Uint16, tag: ""}]);
dnsRR_CNAME.init("", [{prop: "Hdr", name: "Hdr", exported: true, typ: dnsRR_Header, tag: ""}, {prop: "Cname", name: "Cname", exported: true, typ: $String, tag: ""}]);
dnsRR_MX.init("", [{prop: "Hdr", name: "Hdr", exported: true, typ: dnsRR_Header, tag: ""}, {prop: "Pref", name: "Pref", exported: true, typ: $Uint16, tag: ""}, {prop: "Mx", name: "Mx", exported: true, typ: $String, tag: ""}]);
dnsRR_NS.init("", [{prop: "Hdr", name: "Hdr", exported: true, typ: dnsRR_Header, tag: ""}, {prop: "Ns", name: "Ns", exported: true, typ: $String, tag: ""}]);
dnsRR_PTR.init("", [{prop: "Hdr", name: "Hdr", exported: true, typ: dnsRR_Header, tag: ""}, {prop: "Ptr", name: "Ptr", exported: true, typ: $String, tag: ""}]);
dnsRR_SOA.init("", [{prop: "Hdr", name: "Hdr", exported: true, typ: dnsRR_Header, tag: ""}, {prop: "Ns", name: "Ns", exported: true, typ: $String, tag: ""}, {prop: "Mbox", name: "Mbox", exported: true, typ: $String, tag: ""}, {prop: "Serial", name: "Serial", exported: true, typ: $Uint32, tag: ""}, {prop: "Refresh", name: "Refresh", exported: true, typ: $Uint32, tag: ""}, {prop: "Retry", name: "Retry", exported: true, typ: $Uint32, tag: ""}, {prop: "Expire", name: "Expire", exported: true, typ: $Uint32, tag: ""}, {prop: "Minttl", name: "Minttl", exported: true, typ: $Uint32, tag: ""}]);
dnsRR_TXT.init("", [{prop: "Hdr", name: "Hdr", exported: true, typ: dnsRR_Header, tag: ""}, {prop: "Txt", name: "Txt", exported: true, typ: $String, tag: ""}]);
dnsRR_SRV.init("", [{prop: "Hdr", name: "Hdr", exported: true, typ: dnsRR_Header, tag: ""}, {prop: "Priority", name: "Priority", exported: true, typ: $Uint16, tag: ""}, {prop: "Weight", name: "Weight", exported: true, typ: $Uint16, tag: ""}, {prop: "Port", name: "Port", exported: true, typ: $Uint16, tag: ""}, {prop: "Target", name: "Target", exported: true, typ: $String, tag: ""}]);
dnsRR_A.init("", [{prop: "Hdr", name: "Hdr", exported: true, typ: dnsRR_Header, tag: ""}, {prop: "A", name: "A", exported: true, typ: $Uint32, tag: ""}]);
dnsRR_AAAA.init("", [{prop: "Hdr", name: "Hdr", exported: true, typ: dnsRR_Header, tag: ""}, {prop: "AAAA", name: "AAAA", exported: true, typ: arrayType, tag: ""}]);
fdMutex.init("net", [{prop: "state", name: "state", exported: false, typ: $Uint64, tag: ""}, {prop: "rsema", name: "rsema", exported: false, typ: $Uint32, tag: ""}, {prop: "wsema", name: "wsema", exported: false, typ: $Uint32, tag: ""}]);
pollDesc.init("net", [{prop: "runtimeCtx", name: "runtimeCtx", exported: false, typ: $Uintptr, tag: ""}]);
operation.init("net", [{prop: "o", name: "o", exported: false, typ: syscall.Overlapped, tag: ""}, {prop: "runtimeCtx", name: "runtimeCtx", exported: false, typ: $Uintptr, tag: ""}, {prop: "mode", name: "mode", exported: false, typ: $Int32, tag: ""}, {prop: "errno", name: "errno", exported: false, typ: $Int32, tag: ""}, {prop: "qty", name: "qty", exported: false, typ: $Uint32, tag: ""}, {prop: "fd", name: "fd", exported: false, typ: ptrType$21, tag: ""}, {prop: "errc", name: "errc", exported: false, typ: chanType$1, tag: ""}, {prop: "buf", name: "buf", exported: false, typ: syscall.WSABuf, tag: ""}, {prop: "sa", name: "sa", exported: false, typ: syscall.Sockaddr, tag: ""}, {prop: "rsa", name: "rsa", exported: false, typ: ptrType$22, tag: ""}, {prop: "rsan", name: "rsan", exported: false, typ: $Int32, tag: ""}, {prop: "handle", name: "handle", exported: false, typ: syscall.Handle, tag: ""}, {prop: "flags", name: "flags", exported: false, typ: $Uint32, tag: ""}, {prop: "bufs", name: "bufs", exported: false, typ: sliceType$5, tag: ""}]);
ioSrv.init("net", [{prop: "req", name: "req", exported: false, typ: chanType$2, tag: ""}]);
ioSrvReq.init("net", [{prop: "o", name: "o", exported: false, typ: ptrType$80, tag: ""}, {prop: "submit", name: "submit", exported: false, typ: funcType$3, tag: ""}]);
netFD.init("net", [{prop: "fdmu", name: "fdmu", exported: false, typ: fdMutex, tag: ""}, {prop: "sysfd", name: "sysfd", exported: false, typ: syscall.Handle, tag: ""}, {prop: "family", name: "family", exported: false, typ: $Int, tag: ""}, {prop: "sotype", name: "sotype", exported: false, typ: $Int, tag: ""}, {prop: "isStream", name: "isStream", exported: false, typ: $Bool, tag: ""}, {prop: "isConnected", name: "isConnected", exported: false, typ: $Bool, tag: ""}, {prop: "skipSyncNotif", name: "skipSyncNotif", exported: false, typ: $Bool, tag: ""}, {prop: "net", name: "net", exported: false, typ: $String, tag: ""}, {prop: "laddr", name: "laddr", exported: false, typ: Addr, tag: ""}, {prop: "raddr", name: "raddr", exported: false, typ: Addr, tag: ""}, {prop: "rop", name: "rop", exported: false, typ: operation, tag: ""}, {prop: "wop", name: "wop", exported: false, typ: operation, tag: ""}, {prop: "pd", name: "pd", exported: false, typ: pollDesc, tag: ""}]);
Interface.init("", [{prop: "Index", name: "Index", exported: true, typ: $Int, tag: ""}, {prop: "MTU", name: "MTU", exported: true, typ: $Int, tag: ""}, {prop: "Name", name: "Name", exported: true, typ: $String, tag: ""}, {prop: "HardwareAddr", name: "HardwareAddr", exported: true, typ: HardwareAddr, tag: ""}, {prop: "Flags", name: "Flags", exported: true, typ: Flags, tag: ""}]);
ipv6ZoneCache.init("net", [{prop: "RWMutex", name: "", exported: true, typ: sync.RWMutex, tag: ""}, {prop: "lastFetched", name: "lastFetched", exported: false, typ: time.Time, tag: ""}, {prop: "toIndex", name: "toIndex", exported: false, typ: mapType$1, tag: ""}, {prop: "toName", name: "toName", exported: false, typ: mapType$2, tag: ""}]);
IP.init($Uint8);
IPMask.init($Uint8);
IPNet.init("", [{prop: "IP", name: "IP", exported: true, typ: IP, tag: ""}, {prop: "Mask", name: "Mask", exported: true, typ: IPMask, tag: ""}]);
IPAddr.init("", [{prop: "IP", name: "IP", exported: true, typ: IP, tag: ""}, {prop: "Zone", name: "Zone", exported: true, typ: $String, tag: ""}]);
IPConn.init("net", [{prop: "conn", name: "", exported: false, typ: conn, tag: ""}]);
addrList.init(Addr);
Resolver.init("", [{prop: "PreferGo", name: "PreferGo", exported: true, typ: $Bool, tag: ""}]);
HardwareAddr.init($Uint8);
Addr.init([{prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]);
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)}]);
conn.init("net", [{prop: "fd", name: "fd", exported: false, typ: ptrType$21, tag: ""}]);
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)}]);
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)}]);
OpError.init("", [{prop: "Op", name: "Op", exported: true, typ: $String, tag: ""}, {prop: "Net", name: "Net", exported: true, typ: $String, tag: ""}, {prop: "Source", name: "Source", exported: true, typ: Addr, tag: ""}, {prop: "Addr", name: "Addr", exported: true, typ: Addr, tag: ""}, {prop: "Err", name: "Err", exported: true, typ: $error, tag: ""}]);
timeout.init([{prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]);
temporary.init([{prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}]);
timeoutError.init("", []);
ParseError.init("", [{prop: "Type", name: "Type", exported: true, typ: $String, tag: ""}, {prop: "Text", name: "Text", exported: true, typ: $String, tag: ""}]);
AddrError.init("", [{prop: "Err", name: "Err", exported: true, typ: $String, tag: ""}, {prop: "Addr", name: "Addr", exported: true, typ: $String, tag: ""}]);
DNSError.init("", [{prop: "Err", name: "Err", exported: true, typ: $String, tag: ""}, {prop: "Name", name: "Name", exported: true, typ: $String, tag: ""}, {prop: "Server", name: "Server", exported: true, typ: $String, tag: ""}, {prop: "IsTimeout", name: "IsTimeout", exported: true, typ: $Bool, tag: ""}, {prop: "IsTemporary", name: "IsTemporary", exported: true, typ: $Bool, tag: ""}]);
writerOnly.init("", [{prop: "Writer", name: "", exported: true, typ: io.Writer, tag: ""}]);
buffersWriter.init([{prop: "writeBuffers", name: "writeBuffers", pkg: "net", typ: $funcType([ptrType$2], [$Int64, $error], false)}]);
Buffers.init(sliceType$1);
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)}]);
TCPAddr.init("", [{prop: "IP", name: "IP", exported: true, typ: IP, tag: ""}, {prop: "Port", name: "Port", exported: true, typ: $Int, tag: ""}, {prop: "Zone", name: "Zone", exported: true, typ: $String, tag: ""}]);
TCPConn.init("net", [{prop: "conn", name: "", exported: false, typ: conn, tag: ""}]);
TCPListener.init("net", [{prop: "fd", name: "fd", exported: false, typ: ptrType$21, tag: ""}]);
UDPAddr.init("", [{prop: "IP", name: "IP", exported: true, typ: IP, tag: ""}, {prop: "Port", name: "Port", exported: true, typ: $Int, tag: ""}, {prop: "Zone", name: "Zone", exported: true, typ: $String, tag: ""}]);
UDPConn.init("net", [{prop: "conn", name: "", exported: false, typ: conn, tag: ""}]);
UnixAddr.init("", [{prop: "Name", name: "Name", exported: true, typ: $String, tag: ""}, {prop: "Net", name: "Net", exported: true, typ: $String, tag: ""}]);
UnixConn.init("net", [{prop: "conn", name: "", exported: false, typ: conn, tag: ""}]);
dialResult.init("net", [{prop: "Conn", name: "", exported: true, typ: Conn, tag: ""}, {prop: "error", name: "", exported: false, typ: $error, tag: ""}, {prop: "primary", name: "primary", exported: false, typ: $Bool, tag: ""}, {prop: "done", name: "done", exported: false, typ: $Bool, tag: ""}]);
result.init("net", [{prop: "proto", name: "proto", exported: false, typ: $Int, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}]);
ret.init("net", [{prop: "addrs", name: "addrs", exported: false, typ: sliceType$2, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = context.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = js.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = nettrace.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = race.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = singleflight.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = windows.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = rand.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = os.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = runtime.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sort.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sync.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = atomic.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = syscall.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = time.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
serverInit = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
initErr = $ifaceNil;
ioSync = new $Uint64(0, 0);
canCancelIO = false;
skipSyncNotif = false;
hasLoadSetFileCompletionNotificationModes = false;
rsrv = ptrType.nil;
wsrv = ptrType.nil;
onceStartServer = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
testHookDialTCP = $throwNilPointerError;
supportsVistaIP = false;
supportsIPv4 = false;
supportsIPv6 = false;
supportsIPv4map = false;
lookupGroup = new singleflight.Group.ptr(new sync.Mutex.ptr(0, 0), false);
netGo = false;
rr_mk = $makeMap($Int.keyFor, [{ k: 5, v: (function() {
var $ptr;
return new dnsRR_CNAME.ptr(new dnsRR_Header.ptr("", 0, 0, 0, 0), "");
}) }, { k: 15, v: (function() {
var $ptr;
return new dnsRR_MX.ptr(new dnsRR_Header.ptr("", 0, 0, 0, 0), 0, "");
}) }, { k: 2, v: (function() {
var $ptr;
return new dnsRR_NS.ptr(new dnsRR_Header.ptr("", 0, 0, 0, 0), "");
}) }, { k: 12, v: (function() {
var $ptr;
return new dnsRR_PTR.ptr(new dnsRR_Header.ptr("", 0, 0, 0, 0), "");
}) }, { k: 6, v: (function() {
var $ptr;
return new dnsRR_SOA.ptr(new dnsRR_Header.ptr("", 0, 0, 0, 0), "", "", 0, 0, 0, 0, 0);
}) }, { k: 16, v: (function() {
var $ptr;
return new dnsRR_TXT.ptr(new dnsRR_Header.ptr("", 0, 0, 0, 0), "");
}) }, { k: 33, v: (function() {
var $ptr;
return new dnsRR_SRV.ptr(new dnsRR_Header.ptr("", 0, 0, 0, 0), 0, 0, 0, "");
}) }, { k: 1, v: (function() {
var $ptr;
return new dnsRR_A.ptr(new dnsRR_Header.ptr("", 0, 0, 0, 0), 0);
}) }, { k: 28, v: (function() {
var $ptr;
return new dnsRR_AAAA.ptr(new dnsRR_Header.ptr("", 0, 0, 0, 0), arrayType.zero());
}) }]);
testHookLookupIP = (function $b(ctx, fn, host) {
var $ptr, _r, ctx, fn, host, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = fn(ctx, host); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f.ctx = ctx; $f.fn = fn; $f.host = host; $f.$s = $s; $f.$r = $r; return $f;
});
testHookSetKeepAlive = (function() {
var $ptr;
});
testHookDialChannel = (function $b() {
var $ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = time.Sleep(new time.Duration(0, 1000000)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
});
socketFunc = syscall.Socket;
closeFunc = syscall.Closesocket;
connectFunc = syscall.Connect;
connectExFunc = syscall.ConnectEx;
listenFunc = syscall.Listen;
acceptFunc = syscall.AcceptEx;
errInvalidInterface = errors.New("invalid network interface");
errInvalidInterfaceIndex = errors.New("invalid network interface index");
errInvalidInterfaceName = errors.New("invalid network interface name");
errNoSuchInterface = errors.New("no such network interface");
errNoSuchMulticastInterface = errors.New("no such multicast network interface");
flagNames = new sliceType(["up", "broadcast", "loopback", "pointtopoint", "multicast"]);
zoneCache = new ipv6ZoneCache.ptr(new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0), new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil), {}, {});
v4InV6Prefix = new sliceType$1([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255]);
$pkg.IPv4bcast = IPv4(255, 255, 255, 255);
$pkg.IPv4allsys = IPv4(224, 0, 0, 1);
$pkg.IPv4allrouter = IPv4(224, 0, 0, 2);
$pkg.IPv4zero = IPv4(0, 0, 0, 0);
$pkg.IPv6zero = new IP([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
$pkg.IPv6unspecified = new IP([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
$pkg.IPv6loopback = new IP([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]);
classAMask = IPv4Mask(255, 0, 0, 0);
classBMask = IPv4Mask(255, 255, 0, 0);
classCMask = IPv4Mask(255, 255, 255, 0);
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 }]);
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 }]) }]);
$pkg.DefaultResolver = new Resolver.ptr(false);
listenerBacklog = maxListenerBacklog();
errNoSuitableAddress = errors.New("no suitable address found");
errMissingAddress = errors.New("missing address");
errTimeout = new timeoutError.ptr();
errCanceled = errors.New("operation was canceled");
errClosing = errors.New("use of closed network connection");
$pkg.ErrWriteToConnected = errors.New("use of WriteTo with pre-connected connection");
aLongTimeAgo = $clone(time.Unix(new $Int64(0, 1), new $Int64(0, 0)), time.Time);
noDeadline = new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil);
errNoSuchHost = errors.New("no such host");
threadLimit = new $Chan(structType$1, 500);
testHookDidWritev = (function(wrote) {
var $ptr, wrote;
});
init();
init$1();
init$2();
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["github.com/StackExchange/dnscontrol/pkg/dnsresolver"] = (function() {
var $pkg = {}, $init, json, errors, ioutil, net, sync;
json = $packages["encoding/json"];
errors = $packages["github.com/StackExchange/dnscontrol/vendor/github.com/pkg/errors"];
ioutil = $packages["io/ioutil"];
net = $packages["net"];
sync = $packages["sync"];
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = json.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = ioutil.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = net.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sync.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["github.com/StackExchange/dnscontrol/pkg/spflib"] = (function() {
var $pkg = {}, $init, bytes, fmt, dnsresolver, io, strings, SPFRecord, SPFPart, sliceType, ptrType, sliceType$1, ptrType$1, sliceType$2, sliceType$3, arrayType, mapType, qualifiers, matchesFlatSpec, Lookup, Parse, dump;
bytes = $packages["bytes"];
fmt = $packages["fmt"];
dnsresolver = $packages["github.com/StackExchange/dnscontrol/pkg/dnsresolver"];
io = $packages["io"];
strings = $packages["strings"];
SPFRecord = $pkg.SPFRecord = $newType(0, $kindStruct, "spflib.SPFRecord", true, "github.com/StackExchange/dnscontrol/pkg/spflib", true, function(Parts_) {
this.$val = this;
if (arguments.length === 0) {
this.Parts = sliceType$1.nil;
return;
}
this.Parts = Parts_;
});
SPFPart = $pkg.SPFPart = $newType(0, $kindStruct, "spflib.SPFPart", true, "github.com/StackExchange/dnscontrol/pkg/spflib", true, function(Text_, IsLookup_, IncludeRecord_, IncludeDomain_) {
this.$val = this;
if (arguments.length === 0) {
this.Text = "";
this.IsLookup = false;
this.IncludeRecord = ptrType$1.nil;
this.IncludeDomain = "";
return;
}
this.Text = Text_;
this.IsLookup = IsLookup_;
this.IncludeRecord = IncludeRecord_;
this.IncludeDomain = IncludeDomain_;
});
sliceType = $sliceType($emptyInterface);
ptrType = $ptrType(SPFPart);
sliceType$1 = $sliceType(ptrType);
ptrType$1 = $ptrType(SPFRecord);
sliceType$2 = $sliceType($String);
sliceType$3 = $sliceType($Uint8);
arrayType = $arrayType($Uint8, 64);
mapType = $mapType($String, $String);
SPFRecord.ptr.prototype.TXT = function() {
var $ptr, _i, _ref, p, s, text;
s = this;
text = "v=spf1";
_ref = s.Parts;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
text = text + (" " + p.Text);
_i++;
}
return text;
};
SPFRecord.prototype.TXT = function() { return this.$val.TXT(); };
SPFRecord.ptr.prototype.TXTSplit = function(pattern) {
var $ptr, m, pattern, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; m = $f.m; pattern = $f.pattern; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
s = this;
m = $makeMap($String.keyFor, []);
$r = s.split("@", pattern, 1, m); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return m;
/* */ } return; } if ($f === undefined) { $f = { $blk: SPFRecord.ptr.prototype.TXTSplit }; } $f.$ptr = $ptr; $f.m = m; $f.pattern = pattern; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
SPFRecord.prototype.TXTSplit = function(pattern) { return this.$val.TXTSplit(pattern); };
SPFRecord.ptr.prototype.split = function(thisfqdn, pattern, nextIdx, m) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
s = this;
base = s.TXT();
if (base.length <= 255) {
_key = thisfqdn; (m || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: base };
$s = -1; return;
}
_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; }
nextFQDN = _r;
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]));
tail = " include:" + nextFQDN + " " + lastPart.Text;
thisText = "v=spf1";
newRec = new SPFRecord.ptr(sliceType$1.nil);
over = false;
addedCount = 0;
_ref = s.Parts;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
part = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (!over) {
if ((((thisText.length + 1 >> 0) + part.Text.length >> 0) + tail.length >> 0) <= 255) {
thisText = thisText + (" " + part.Text);
addedCount = addedCount + (1) >> 0;
} else {
over = true;
if (addedCount === 0) {
_key$1 = thisfqdn; (m || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$1)] = { k: _key$1, v: base };
$s = -1; return;
}
}
}
if (over) {
newRec.Parts = $append(newRec.Parts, part);
}
_i++;
}
_key$2 = thisfqdn; (m || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$2)] = { k: _key$2, v: thisText + tail };
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: SPFRecord.ptr.prototype.split }; } $f.$ptr = $ptr; $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;
};
SPFRecord.prototype.split = function(thisfqdn, pattern, nextIdx, m) { return this.$val.split(thisfqdn, pattern, nextIdx, m); };
SPFRecord.ptr.prototype.Flatten = function(spec) {
var $ptr, _i, _i$1, _ref, _ref$1, childPart, flattenedChild, newRec, p, s, spec;
s = this;
newRec = new SPFRecord.ptr(sliceType$1.nil);
_ref = s.Parts;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (p.IncludeRecord === ptrType$1.nil) {
newRec.Parts = $append(newRec.Parts, p);
} else if (!matchesFlatSpec(spec, p.IncludeDomain)) {
newRec.Parts = $append(newRec.Parts, p);
} else {
flattenedChild = p.IncludeRecord.Flatten(spec);
_ref$1 = $subslice(flattenedChild.Parts, 0, (flattenedChild.Parts.$length - 1 >> 0));
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
childPart = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
newRec.Parts = $append(newRec.Parts, childPart);
_i$1++;
}
}
_i++;
}
return newRec;
};
SPFRecord.prototype.Flatten = function(spec) { return this.$val.Flatten(spec); };
matchesFlatSpec = function(spec, fqdn) {
var $ptr, _i, _ref, fqdn, p, spec;
if (spec === "*") {
return true;
}
_ref = strings.Split(spec, ",");
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (p === fqdn) {
return true;
}
_i++;
}
return false;
};
SPFRecord.ptr.prototype.Lookups = function() {
var $ptr, _i, _ref, count, p, s;
s = this;
count = 0;
_ref = s.Parts;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (p.IsLookup) {
count = count + (1) >> 0;
}
if (!(p.IncludeRecord === ptrType$1.nil)) {
count = count + (p.IncludeRecord.Lookups()) >> 0;
}
_i++;
}
return count;
};
SPFRecord.prototype.Lookups = function() { return this.$val.Lookups(); };
Lookup = function(target, dnsres) {
var $ptr, _i, _r, _r$1, _r$2, _ref, _tuple, dnsres, err, result, target, txt, txts, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _tuple = $f._tuple; dnsres = $f.dnsres; err = $f.err; result = $f.result; target = $f.target; txt = $f.txt; txts = $f.txts; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = dnsres.GetTxt(target); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
txts = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return ["", err];
}
result = sliceType$2.nil;
_ref = txts;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
txt = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (strings.HasPrefix(txt, "v=spf1 ")) {
result = $append(result, txt);
}
_i++;
}
/* */ if (result.$length === 0) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (result.$length === 0) { */ case 2:
_r$1 = fmt.Errorf("%s has no spf TXT records", new sliceType([new $String(target)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return ["", _r$1];
/* } */ case 3:
/* */ if (!((result.$length === 1))) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (!((result.$length === 1))) { */ case 5:
_r$2 = fmt.Errorf("%s has multiple spf TXT records", new sliceType([new $String(target)])); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$s = -1; return ["", _r$2];
/* } */ case 6:
$s = -1; return [(0 >= result.$length ? ($throwRuntimeError("index out of range"), undefined) : result.$array[result.$offset + 0]), $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Lookup }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._tuple = _tuple; $f.dnsres = dnsres; $f.err = err; $f.result = result; $f.target = target; $f.txt = txt; $f.txts = txts; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Lookup = Lookup;
Parse = function(text, dnsres) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
/* */ if (!strings.HasPrefix(text, "v=spf1 ")) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!strings.HasPrefix(text, "v=spf1 ")) { */ case 1:
_r = fmt.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; }
$s = -1; return [ptrType$1.nil, _r];
/* } */ case 2:
parts = strings.Split(text, " ");
rec = new SPFRecord.ptr(sliceType$1.nil);
_ref = $subslice(parts, 1);
_i = 0;
/* while (true) { */ case 4:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; }
part = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
p = new SPFPart.ptr(part, false, ptrType$1.nil, "");
if ((_entry = qualifiers[$Uint8.keyFor(part.charCodeAt(0))], _entry !== undefined ? _entry.v : false)) {
part = $substring(part, 1);
}
rec.Parts = $append(rec.Parts, p);
/* */ if (part === "all") { $s = 6; continue; }
/* */ if (strings.HasPrefix(part, "a") || strings.HasPrefix(part, "mx")) { $s = 7; continue; }
/* */ if (strings.HasPrefix(part, "ip4:") || strings.HasPrefix(part, "ip6:")) { $s = 8; continue; }
/* */ if (strings.HasPrefix(part, "include:")) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (part === "all") { */ case 6:
/* break; */ $s = 5; continue;
$s = 11; continue;
/* } else if (strings.HasPrefix(part, "a") || strings.HasPrefix(part, "mx")) { */ case 7:
p.IsLookup = true;
$s = 11; continue;
/* } else if (strings.HasPrefix(part, "ip4:") || strings.HasPrefix(part, "ip6:")) { */ case 8:
_i++;
/* continue; */ $s = 4; continue;
$s = 11; continue;
/* } else if (strings.HasPrefix(part, "include:")) { */ case 9:
p.IsLookup = true;
p.IncludeDomain = strings.TrimPrefix(part, "include:");
/* */ if (!($interfaceIsEqual(dnsres, $ifaceNil))) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (!($interfaceIsEqual(dnsres, $ifaceNil))) { */ case 12:
_r$1 = Lookup(p.IncludeDomain, dnsres); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
subRecord = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$1.nil, err];
}
_r$2 = Parse(subRecord, dnsres); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$1 = _r$2;
p.IncludeRecord = _tuple$1[0];
err = _tuple$1[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 16:
_r$3 = fmt.Errorf("In included spf: %s", new sliceType([err])); /* */ $s = 18; case 18: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
$s = -1; return [ptrType$1.nil, _r$3];
/* } */ case 17:
/* } */ case 13:
$s = 11; continue;
/* } else { */ case 10:
_r$4 = fmt.Errorf("Unsupported spf part %s", new sliceType([new $String(part)])); /* */ $s = 19; case 19: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
$s = -1; return [ptrType$1.nil, _r$4];
/* } */ case 11:
_i++;
/* } */ $s = 4; continue; case 5:
$s = -1; return [rec, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Parse }; } $f.$ptr = $ptr; $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;
};
$pkg.Parse = Parse;
dump = function(rec, indent, w) {
var $ptr, _i, _i$1, _r, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, indent, p, p$1, rec, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_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; }
_r;
_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; }
_r$1;
_ref = rec.Parts;
_i = 0;
/* while (true) { */ case 3:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; }
p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_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; }
_r$2;
_i++;
/* } */ $s = 3; continue; case 4:
_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; }
_r$3;
indent = indent + ("\t");
_ref$1 = rec.Parts;
_i$1 = 0;
/* while (true) { */ case 7:
/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 8; continue; }
p$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
/* */ if (p$1.IsLookup) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (p$1.IsLookup) { */ case 9:
_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; }
_r$4;
/* } */ case 10:
/* */ if (!(p$1.IncludeRecord === ptrType$1.nil)) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (!(p$1.IncludeRecord === ptrType$1.nil)) { */ case 12:
$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; }
/* } */ case 13:
_i$1++;
/* } */ $s = 7; continue; case 8:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: dump }; } $f.$ptr = $ptr; $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;
};
SPFRecord.ptr.prototype.Print = function() {
var $ptr, rec, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; rec = $f.rec; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
rec = this;
w = new bytes.Buffer.ptr(sliceType$3.nil, 0, arrayType.zero(), 0);
$r = dump(rec, "", w); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return w.String();
/* */ } return; } if ($f === undefined) { $f = { $blk: SPFRecord.ptr.prototype.Print }; } $f.$ptr = $ptr; $f.rec = rec; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
SPFRecord.prototype.Print = function() { return this.$val.Print(); };
ptrType$1.methods = [{prop: "TXT", name: "TXT", pkg: "", typ: $funcType([], [$String], false)}, {prop: "TXTSplit", name: "TXTSplit", pkg: "", typ: $funcType([$String], [mapType], false)}, {prop: "split", name: "split", pkg: "github.com/StackExchange/dnscontrol/pkg/spflib", typ: $funcType([$String, $String, $Int, mapType], [], 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)}];
SPFRecord.init("", [{prop: "Parts", name: "Parts", exported: true, typ: sliceType$1, tag: ""}]);
SPFPart.init("", [{prop: "Text", name: "Text", exported: true, typ: $String, tag: ""}, {prop: "IsLookup", name: "IsLookup", exported: true, typ: $Bool, tag: ""}, {prop: "IncludeRecord", name: "IncludeRecord", exported: true, typ: ptrType$1, tag: ""}, {prop: "IncludeDomain", name: "IncludeDomain", exported: true, typ: $String, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = dnsresolver.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strings.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
qualifiers = $makeMap($Uint8.keyFor, [{ k: 63, v: true }, { k: 126, v: true }, { k: 45, v: true }, { k: 43, v: true }]);
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["github.com/gopherjs/jquery"] = (function() {
var $pkg = {}, $init, js, JQuery, Event, JQueryCoordinates, sliceType, funcType$1, mapType, sliceType$1, funcType$2, funcType$3, ptrType, sliceType$2, ptrType$1, NewJQuery;
js = $packages["github.com/gopherjs/gopherjs/js"];
JQuery = $pkg.JQuery = $newType(0, $kindStruct, "jquery.JQuery", true, "github.com/gopherjs/jquery", true, function(o_, Jquery_, Selector_, Length_, Context_) {
this.$val = this;
if (arguments.length === 0) {
this.o = null;
this.Jquery = "";
this.Selector = "";
this.Length = 0;
this.Context = "";
return;
}
this.o = o_;
this.Jquery = Jquery_;
this.Selector = Selector_;
this.Length = Length_;
this.Context = Context_;
});
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_, PageX_, PageY_, Type_) {
this.$val = this;
if (arguments.length === 0) {
this.Object = null;
this.KeyCode = 0;
this.Target = null;
this.CurrentTarget = null;
this.DelegateTarget = null;
this.RelatedTarget = null;
this.Data = null;
this.Result = null;
this.Which = 0;
this.Namespace = "";
this.MetaKey = false;
this.PageX = 0;
this.PageY = 0;
this.Type = "";
return;
}
this.Object = Object_;
this.KeyCode = KeyCode_;
this.Target = Target_;
this.CurrentTarget = CurrentTarget_;
this.DelegateTarget = DelegateTarget_;
this.RelatedTarget = RelatedTarget_;
this.Data = Data_;
this.Result = Result_;
this.Which = Which_;
this.Namespace = Namespace_;
this.MetaKey = MetaKey_;
this.PageX = PageX_;
this.PageY = PageY_;
this.Type = Type_;
});
JQueryCoordinates = $pkg.JQueryCoordinates = $newType(0, $kindStruct, "jquery.JQueryCoordinates", true, "github.com/gopherjs/jquery", true, function(Left_, Top_) {
this.$val = this;
if (arguments.length === 0) {
this.Left = 0;
this.Top = 0;
return;
}
this.Left = Left_;
this.Top = Top_;
});
sliceType = $sliceType($emptyInterface);
funcType$1 = $funcType([$Int, $emptyInterface], [], false);
mapType = $mapType($String, $emptyInterface);
sliceType$1 = $sliceType($String);
funcType$2 = $funcType([$Int, $String], [$String], false);
funcType$3 = $funcType([], [], false);
ptrType = $ptrType(js.Object);
sliceType$2 = $sliceType($Bool);
ptrType$1 = $ptrType(Event);
Event.ptr.prototype.PreventDefault = function() {
var $ptr, event;
event = this;
event.Object.preventDefault();
};
Event.prototype.PreventDefault = function() { return this.$val.PreventDefault(); };
Event.ptr.prototype.IsDefaultPrevented = function() {
var $ptr, event;
event = this;
return !!(event.Object.isDefaultPrevented());
};
Event.prototype.IsDefaultPrevented = function() { return this.$val.IsDefaultPrevented(); };
Event.ptr.prototype.IsImmediatePropogationStopped = function() {
var $ptr, event;
event = this;
return !!(event.Object.isImmediatePropogationStopped());
};
Event.prototype.IsImmediatePropogationStopped = function() { return this.$val.IsImmediatePropogationStopped(); };
Event.ptr.prototype.IsPropagationStopped = function() {
var $ptr, event;
event = this;
return !!(event.Object.isPropagationStopped());
};
Event.prototype.IsPropagationStopped = function() { return this.$val.IsPropagationStopped(); };
Event.ptr.prototype.StopImmediatePropagation = function() {
var $ptr, event;
event = this;
event.Object.stopImmediatePropagation();
};
Event.prototype.StopImmediatePropagation = function() { return this.$val.StopImmediatePropagation(); };
Event.ptr.prototype.StopPropagation = function() {
var $ptr, event;
event = this;
event.Object.stopPropagation();
};
Event.prototype.StopPropagation = function() { return this.$val.StopPropagation(); };
NewJQuery = function(args) {
var $ptr, args;
return new JQuery.ptr(new ($global.Function.prototype.bind.apply($global.jQuery, [undefined].concat($externalize(args, sliceType)))), "", "", 0, "");
};
$pkg.NewJQuery = NewJQuery;
JQuery.ptr.prototype.Each = function(fn) {
var $ptr, fn, j;
j = this;
j.o = j.o.each($externalize(fn, funcType$1));
return j;
};
JQuery.prototype.Each = function(fn) { return this.$val.Each(fn); };
JQuery.ptr.prototype.Call = function(name, args) {
var $ptr, args, j, name, obj;
j = this;
return NewJQuery(new sliceType([new $jsObjectPtr((obj = j.o, obj[$externalize(name, $String)].apply(obj, $externalize(args, sliceType))))]));
};
JQuery.prototype.Call = function(name, args) { return this.$val.Call(name, args); };
JQuery.ptr.prototype.Underlying = function() {
var $ptr, j;
j = this;
return j.o;
};
JQuery.prototype.Underlying = function() { return this.$val.Underlying(); };
JQuery.ptr.prototype.Get = function(i) {
var $ptr, i, j, obj;
j = this;
return (obj = j.o, obj.get.apply(obj, $externalize(i, sliceType)));
};
JQuery.prototype.Get = function(i) { return this.$val.Get(i); };
JQuery.ptr.prototype.Append = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.append.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Append = function(i) { return this.$val.Append(i); };
JQuery.ptr.prototype.Empty = function() {
var $ptr, j;
j = this;
j.o = j.o.empty();
return j;
};
JQuery.prototype.Empty = function() { return this.$val.Empty(); };
JQuery.ptr.prototype.Detach = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.detach.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Detach = function(i) { return this.$val.Detach(i); };
JQuery.ptr.prototype.Eq = function(idx) {
var $ptr, idx, j;
j = this;
j.o = j.o.eq(idx);
return j;
};
JQuery.prototype.Eq = function(idx) { return this.$val.Eq(idx); };
JQuery.ptr.prototype.FadeIn = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.fadeIn.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.FadeIn = function(i) { return this.$val.FadeIn(i); };
JQuery.ptr.prototype.Delay = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.delay.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Delay = function(i) { return this.$val.Delay(i); };
JQuery.ptr.prototype.ToArray = function() {
var $ptr, j;
j = this;
return $assertType($internalize(j.o.toArray(), $emptyInterface), sliceType);
};
JQuery.prototype.ToArray = function() { return this.$val.ToArray(); };
JQuery.ptr.prototype.Remove = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.remove.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Remove = function(i) { return this.$val.Remove(i); };
JQuery.ptr.prototype.Stop = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.stop.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Stop = function(i) { return this.$val.Stop(i); };
JQuery.ptr.prototype.AddBack = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.addBack.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.AddBack = function(i) { return this.$val.AddBack(i); };
JQuery.ptr.prototype.Css = function(name) {
var $ptr, j, name;
j = this;
return $internalize(j.o.css($externalize(name, $String)), $String);
};
JQuery.prototype.Css = function(name) { return this.$val.Css(name); };
JQuery.ptr.prototype.CssArray = function(arr) {
var $ptr, arr, j;
j = this;
return $assertType($internalize(j.o.css($externalize(arr, sliceType$1)), $emptyInterface), mapType);
};
JQuery.prototype.CssArray = function(arr) { return this.$val.CssArray(arr); };
JQuery.ptr.prototype.SetCss = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.css.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.SetCss = function(i) { return this.$val.SetCss(i); };
JQuery.ptr.prototype.Text = function() {
var $ptr, j;
j = this;
return $internalize(j.o.text(), $String);
};
JQuery.prototype.Text = function() { return this.$val.Text(); };
JQuery.ptr.prototype.SetText = function(i) {
var $ptr, _ref, i, j;
j = this;
_ref = i;
if ($assertType(_ref, funcType$2, true)[1] || $assertType(_ref, $String, true)[1]) {
} else {
console.log("SetText Argument should be 'string' or 'func(int, string) string'");
}
j.o = j.o.text($externalize(i, $emptyInterface));
return j;
};
JQuery.prototype.SetText = function(i) { return this.$val.SetText(i); };
JQuery.ptr.prototype.Val = function() {
var $ptr, j;
j = this;
return $internalize(j.o.val(), $String);
};
JQuery.prototype.Val = function() { return this.$val.Val(); };
JQuery.ptr.prototype.SetVal = function(i) {
var $ptr, i, j;
j = this;
j.o.val($externalize(i, $emptyInterface));
return j;
};
JQuery.prototype.SetVal = function(i) { return this.$val.SetVal(i); };
JQuery.ptr.prototype.Prop = function(property) {
var $ptr, j, property;
j = this;
return $internalize(j.o.prop($externalize(property, $String)), $emptyInterface);
};
JQuery.prototype.Prop = function(property) { return this.$val.Prop(property); };
JQuery.ptr.prototype.SetProp = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.prop.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.SetProp = function(i) { return this.$val.SetProp(i); };
JQuery.ptr.prototype.RemoveProp = function(property) {
var $ptr, j, property;
j = this;
j.o = j.o.removeProp($externalize(property, $String));
return j;
};
JQuery.prototype.RemoveProp = function(property) { return this.$val.RemoveProp(property); };
JQuery.ptr.prototype.Attr = function(property) {
var $ptr, attr, j, property;
j = this;
attr = j.o.attr($externalize(property, $String));
if (attr === undefined) {
return "";
}
return $internalize(attr, $String);
};
JQuery.prototype.Attr = function(property) { return this.$val.Attr(property); };
JQuery.ptr.prototype.SetAttr = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.attr.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.SetAttr = function(i) { return this.$val.SetAttr(i); };
JQuery.ptr.prototype.RemoveAttr = function(property) {
var $ptr, j, property;
j = this;
j.o = j.o.removeAttr($externalize(property, $String));
return j;
};
JQuery.prototype.RemoveAttr = function(property) { return this.$val.RemoveAttr(property); };
JQuery.ptr.prototype.HasClass = function(class$1) {
var $ptr, class$1, j;
j = this;
return !!(j.o.hasClass($externalize(class$1, $String)));
};
JQuery.prototype.HasClass = function(class$1) { return this.$val.HasClass(class$1); };
JQuery.ptr.prototype.AddClass = function(i) {
var $ptr, _ref, i, j;
j = this;
_ref = i;
if ($assertType(_ref, funcType$2, true)[1] || $assertType(_ref, $String, true)[1]) {
} else {
console.log("addClass Argument should be 'string' or 'func(int, string) string'");
}
j.o = j.o.addClass($externalize(i, $emptyInterface));
return j;
};
JQuery.prototype.AddClass = function(i) { return this.$val.AddClass(i); };
JQuery.ptr.prototype.RemoveClass = function(property) {
var $ptr, j, property;
j = this;
j.o = j.o.removeClass($externalize(property, $String));
return j;
};
JQuery.prototype.RemoveClass = function(property) { return this.$val.RemoveClass(property); };
JQuery.ptr.prototype.ToggleClass = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.toggleClass.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.ToggleClass = function(i) { return this.$val.ToggleClass(i); };
JQuery.ptr.prototype.Focus = function() {
var $ptr, j;
j = this;
j.o = j.o.focus();
return j;
};
JQuery.prototype.Focus = function() { return this.$val.Focus(); };
JQuery.ptr.prototype.Blur = function() {
var $ptr, j;
j = this;
j.o = j.o.blur();
return j;
};
JQuery.prototype.Blur = function() { return this.$val.Blur(); };
JQuery.ptr.prototype.ReplaceAll = function(i) {
var $ptr, i, j;
j = this;
j.o = j.o.replaceAll($externalize(i, $emptyInterface));
return j;
};
JQuery.prototype.ReplaceAll = function(i) { return this.$val.ReplaceAll(i); };
JQuery.ptr.prototype.ReplaceWith = function(i) {
var $ptr, i, j;
j = this;
j.o = j.o.replaceWith($externalize(i, $emptyInterface));
return j;
};
JQuery.prototype.ReplaceWith = function(i) { return this.$val.ReplaceWith(i); };
JQuery.ptr.prototype.After = function(i) {
var $ptr, i, j;
j = this;
j.o = j.o.after($externalize(i, sliceType));
return j;
};
JQuery.prototype.After = function(i) { return this.$val.After(i); };
JQuery.ptr.prototype.Before = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.before.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Before = function(i) { return this.$val.Before(i); };
JQuery.ptr.prototype.Prepend = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.prepend.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Prepend = function(i) { return this.$val.Prepend(i); };
JQuery.ptr.prototype.PrependTo = function(i) {
var $ptr, i, j;
j = this;
j.o = j.o.prependTo($externalize(i, $emptyInterface));
return j;
};
JQuery.prototype.PrependTo = function(i) { return this.$val.PrependTo(i); };
JQuery.ptr.prototype.AppendTo = function(i) {
var $ptr, i, j;
j = this;
j.o = j.o.appendTo($externalize(i, $emptyInterface));
return j;
};
JQuery.prototype.AppendTo = function(i) { return this.$val.AppendTo(i); };
JQuery.ptr.prototype.InsertAfter = function(i) {
var $ptr, i, j;
j = this;
j.o = j.o.insertAfter($externalize(i, $emptyInterface));
return j;
};
JQuery.prototype.InsertAfter = function(i) { return this.$val.InsertAfter(i); };
JQuery.ptr.prototype.InsertBefore = function(i) {
var $ptr, i, j;
j = this;
j.o = j.o.insertBefore($externalize(i, $emptyInterface));
return j;
};
JQuery.prototype.InsertBefore = function(i) { return this.$val.InsertBefore(i); };
JQuery.ptr.prototype.Show = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.show.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Show = function(i) { return this.$val.Show(i); };
JQuery.ptr.prototype.Hide = function(i) {
var $ptr, i, j, obj;
j = this;
(obj = j.o, obj.hide.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Hide = function(i) { return this.$val.Hide(i); };
JQuery.ptr.prototype.Toggle = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.toggle.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Toggle = function(i) { return this.$val.Toggle(i); };
JQuery.ptr.prototype.Contents = function() {
var $ptr, j;
j = this;
j.o = j.o.contents();
return j;
};
JQuery.prototype.Contents = function() { return this.$val.Contents(); };
JQuery.ptr.prototype.Html = function() {
var $ptr, j;
j = this;
return $internalize(j.o.html(), $String);
};
JQuery.prototype.Html = function() { return this.$val.Html(); };
JQuery.ptr.prototype.SetHtml = function(i) {
var $ptr, _ref, i, j;
j = this;
_ref = i;
if ($assertType(_ref, funcType$2, true)[1] || $assertType(_ref, $String, true)[1]) {
} else {
console.log("SetHtml Argument should be 'string' or 'func(int, string) string'");
}
j.o = j.o.html($externalize(i, $emptyInterface));
return j;
};
JQuery.prototype.SetHtml = function(i) { return this.$val.SetHtml(i); };
JQuery.ptr.prototype.Closest = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.closest.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Closest = function(i) { return this.$val.Closest(i); };
JQuery.ptr.prototype.End = function() {
var $ptr, j;
j = this;
j.o = j.o.end();
return j;
};
JQuery.prototype.End = function() { return this.$val.End(); };
JQuery.ptr.prototype.Add = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.add.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Add = function(i) { return this.$val.Add(i); };
JQuery.ptr.prototype.Clone = function(b) {
var $ptr, b, j, obj;
j = this;
j.o = (obj = j.o, obj.clone.apply(obj, $externalize(b, sliceType)));
return j;
};
JQuery.prototype.Clone = function(b) { return this.$val.Clone(b); };
JQuery.ptr.prototype.Height = function() {
var $ptr, j;
j = this;
return $parseInt(j.o.height()) >> 0;
};
JQuery.prototype.Height = function() { return this.$val.Height(); };
JQuery.ptr.prototype.SetHeight = function(value) {
var $ptr, j, value;
j = this;
j.o = j.o.height($externalize(value, $String));
return j;
};
JQuery.prototype.SetHeight = function(value) { return this.$val.SetHeight(value); };
JQuery.ptr.prototype.Width = function() {
var $ptr, j;
j = this;
return $parseInt(j.o.width()) >> 0;
};
JQuery.prototype.Width = function() { return this.$val.Width(); };
JQuery.ptr.prototype.SetWidth = function(i) {
var $ptr, _ref, i, j;
j = this;
_ref = i;
if ($assertType(_ref, funcType$2, true)[1] || $assertType(_ref, $String, true)[1]) {
} else {
console.log("SetWidth Argument should be 'string' or 'func(int, string) string'");
}
j.o = j.o.width($externalize(i, $emptyInterface));
return j;
};
JQuery.prototype.SetWidth = function(i) { return this.$val.SetWidth(i); };
JQuery.ptr.prototype.InnerHeight = function() {
var $ptr, j;
j = this;
return $parseInt(j.o.innerHeight()) >> 0;
};
JQuery.prototype.InnerHeight = function() { return this.$val.InnerHeight(); };
JQuery.ptr.prototype.InnerWidth = function() {
var $ptr, j;
j = this;
return $parseInt(j.o.innerWidth()) >> 0;
};
JQuery.prototype.InnerWidth = function() { return this.$val.InnerWidth(); };
JQuery.ptr.prototype.Offset = function() {
var $ptr, j, obj;
j = this;
obj = j.o.offset();
return new JQueryCoordinates.ptr($parseInt(obj.left) >> 0, $parseInt(obj.top) >> 0);
};
JQuery.prototype.Offset = function() { return this.$val.Offset(); };
JQuery.ptr.prototype.SetOffset = function(jc) {
var $ptr, j, jc;
j = this;
j.o = j.o.offset($externalize(jc, JQueryCoordinates));
return j;
};
JQuery.prototype.SetOffset = function(jc) { return this.$val.SetOffset(jc); };
JQuery.ptr.prototype.OuterHeight = function(includeMargin) {
var $ptr, includeMargin, j;
j = this;
if (includeMargin.$length === 0) {
return $parseInt(j.o.outerHeight()) >> 0;
}
return $parseInt(j.o.outerHeight($externalize((0 >= includeMargin.$length ? ($throwRuntimeError("index out of range"), undefined) : includeMargin.$array[includeMargin.$offset + 0]), $Bool))) >> 0;
};
JQuery.prototype.OuterHeight = function(includeMargin) { return this.$val.OuterHeight(includeMargin); };
JQuery.ptr.prototype.OuterWidth = function(includeMargin) {
var $ptr, includeMargin, j;
j = this;
if (includeMargin.$length === 0) {
return $parseInt(j.o.outerWidth()) >> 0;
}
return $parseInt(j.o.outerWidth($externalize((0 >= includeMargin.$length ? ($throwRuntimeError("index out of range"), undefined) : includeMargin.$array[includeMargin.$offset + 0]), $Bool))) >> 0;
};
JQuery.prototype.OuterWidth = function(includeMargin) { return this.$val.OuterWidth(includeMargin); };
JQuery.ptr.prototype.Position = function() {
var $ptr, j, obj;
j = this;
obj = j.o.position();
return new JQueryCoordinates.ptr($parseInt(obj.left) >> 0, $parseInt(obj.top) >> 0);
};
JQuery.prototype.Position = function() { return this.$val.Position(); };
JQuery.ptr.prototype.ScrollLeft = function() {
var $ptr, j;
j = this;
return $parseInt(j.o.scrollLeft()) >> 0;
};
JQuery.prototype.ScrollLeft = function() { return this.$val.ScrollLeft(); };
JQuery.ptr.prototype.SetScrollLeft = function(value) {
var $ptr, j, value;
j = this;
j.o = j.o.scrollLeft(value);
return j;
};
JQuery.prototype.SetScrollLeft = function(value) { return this.$val.SetScrollLeft(value); };
JQuery.ptr.prototype.ScrollTop = function() {
var $ptr, j;
j = this;
return $parseInt(j.o.scrollTop()) >> 0;
};
JQuery.prototype.ScrollTop = function() { return this.$val.ScrollTop(); };
JQuery.ptr.prototype.SetScrollTop = function(value) {
var $ptr, j, value;
j = this;
j.o = j.o.scrollTop(value);
return j;
};
JQuery.prototype.SetScrollTop = function(value) { return this.$val.SetScrollTop(value); };
JQuery.ptr.prototype.ClearQueue = function(queueName) {
var $ptr, j, queueName;
j = this;
j.o = j.o.clearQueue($externalize(queueName, $String));
return j;
};
JQuery.prototype.ClearQueue = function(queueName) { return this.$val.ClearQueue(queueName); };
JQuery.ptr.prototype.SetData = function(key, value) {
var $ptr, j, key, value;
j = this;
j.o = j.o.data($externalize(key, $String), $externalize(value, $emptyInterface));
return j;
};
JQuery.prototype.SetData = function(key, value) { return this.$val.SetData(key, value); };
JQuery.ptr.prototype.Data = function(key) {
var $ptr, j, key, result;
j = this;
result = j.o.data($externalize(key, $String));
if (result === undefined) {
return $ifaceNil;
}
return $internalize(result, $emptyInterface);
};
JQuery.prototype.Data = function(key) { return this.$val.Data(key); };
JQuery.ptr.prototype.Dequeue = function(queueName) {
var $ptr, j, queueName;
j = this;
j.o = j.o.dequeue($externalize(queueName, $String));
return j;
};
JQuery.prototype.Dequeue = function(queueName) { return this.$val.Dequeue(queueName); };
JQuery.ptr.prototype.RemoveData = function(name) {
var $ptr, j, name;
j = this;
j.o = j.o.removeData($externalize(name, $String));
return j;
};
JQuery.prototype.RemoveData = function(name) { return this.$val.RemoveData(name); };
JQuery.ptr.prototype.OffsetParent = function() {
var $ptr, j;
j = this;
j.o = j.o.offsetParent();
return j;
};
JQuery.prototype.OffsetParent = function() { return this.$val.OffsetParent(); };
JQuery.ptr.prototype.Parent = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.parent.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Parent = function(i) { return this.$val.Parent(i); };
JQuery.ptr.prototype.Parents = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.parents.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Parents = function(i) { return this.$val.Parents(i); };
JQuery.ptr.prototype.ParentsUntil = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.parentsUntil.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.ParentsUntil = function(i) { return this.$val.ParentsUntil(i); };
JQuery.ptr.prototype.Prev = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.prev.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Prev = function(i) { return this.$val.Prev(i); };
JQuery.ptr.prototype.PrevAll = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.prevAll.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.PrevAll = function(i) { return this.$val.PrevAll(i); };
JQuery.ptr.prototype.PrevUntil = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.prevUntil.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.PrevUntil = function(i) { return this.$val.PrevUntil(i); };
JQuery.ptr.prototype.Siblings = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.siblings.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Siblings = function(i) { return this.$val.Siblings(i); };
JQuery.ptr.prototype.Slice = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.slice.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Slice = function(i) { return this.$val.Slice(i); };
JQuery.ptr.prototype.Children = function(selector) {
var $ptr, j, selector;
j = this;
j.o = j.o.children($externalize(selector, $emptyInterface));
return j;
};
JQuery.prototype.Children = function(selector) { return this.$val.Children(selector); };
JQuery.ptr.prototype.Unwrap = function() {
var $ptr, j;
j = this;
j.o = j.o.unwrap();
return j;
};
JQuery.prototype.Unwrap = function() { return this.$val.Unwrap(); };
JQuery.ptr.prototype.Wrap = function(obj) {
var $ptr, j, obj;
j = this;
j.o = j.o.wrap($externalize(obj, $emptyInterface));
return j;
};
JQuery.prototype.Wrap = function(obj) { return this.$val.Wrap(obj); };
JQuery.ptr.prototype.WrapAll = function(i) {
var $ptr, i, j;
j = this;
j.o = j.o.wrapAll($externalize(i, $emptyInterface));
return j;
};
JQuery.prototype.WrapAll = function(i) { return this.$val.WrapAll(i); };
JQuery.ptr.prototype.WrapInner = function(i) {
var $ptr, i, j;
j = this;
j.o = j.o.wrapInner($externalize(i, $emptyInterface));
return j;
};
JQuery.prototype.WrapInner = function(i) { return this.$val.WrapInner(i); };
JQuery.ptr.prototype.Next = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.next.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Next = function(i) { return this.$val.Next(i); };
JQuery.ptr.prototype.NextAll = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.nextAll.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.NextAll = function(i) { return this.$val.NextAll(i); };
JQuery.ptr.prototype.NextUntil = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.nextUntil.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.NextUntil = function(i) { return this.$val.NextUntil(i); };
JQuery.ptr.prototype.Not = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.not.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Not = function(i) { return this.$val.Not(i); };
JQuery.ptr.prototype.Filter = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.filter.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Filter = function(i) { return this.$val.Filter(i); };
JQuery.ptr.prototype.Find = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.find.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Find = function(i) { return this.$val.Find(i); };
JQuery.ptr.prototype.First = function() {
var $ptr, j;
j = this;
j.o = j.o.first();
return j;
};
JQuery.prototype.First = function() { return this.$val.First(); };
JQuery.ptr.prototype.Has = function(selector) {
var $ptr, j, selector;
j = this;
j.o = j.o.has($externalize(selector, $String));
return j;
};
JQuery.prototype.Has = function(selector) { return this.$val.Has(selector); };
JQuery.ptr.prototype.Is = function(i) {
var $ptr, i, j, obj;
j = this;
return !!((obj = j.o, obj.is.apply(obj, $externalize(i, sliceType))));
};
JQuery.prototype.Is = function(i) { return this.$val.Is(i); };
JQuery.ptr.prototype.Last = function() {
var $ptr, j;
j = this;
j.o = j.o.last();
return j;
};
JQuery.prototype.Last = function() { return this.$val.Last(); };
JQuery.ptr.prototype.Ready = function(handler) {
var $ptr, handler, j;
j = this;
j.o = j.o.ready($externalize(handler, funcType$3));
return j;
};
JQuery.prototype.Ready = function(handler) { return this.$val.Ready(handler); };
JQuery.ptr.prototype.Resize = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.resize.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Resize = function(i) { return this.$val.Resize(i); };
JQuery.ptr.prototype.Scroll = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.scroll.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Scroll = function(i) { return this.$val.Scroll(i); };
JQuery.ptr.prototype.FadeOut = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.fadeOut.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.FadeOut = function(i) { return this.$val.FadeOut(i); };
JQuery.ptr.prototype.FadeToggle = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.fadeToggle.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.FadeToggle = function(i) { return this.$val.FadeToggle(i); };
JQuery.ptr.prototype.SlideDown = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.slideDown.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.SlideDown = function(i) { return this.$val.SlideDown(i); };
JQuery.ptr.prototype.SlideToggle = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.slideToggle.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.SlideToggle = function(i) { return this.$val.SlideToggle(i); };
JQuery.ptr.prototype.SlideUp = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.slideUp.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.SlideUp = function(i) { return this.$val.SlideUp(i); };
JQuery.ptr.prototype.Select = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.select.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Select = function(i) { return this.$val.Select(i); };
JQuery.ptr.prototype.Submit = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.submit.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Submit = function(i) { return this.$val.Submit(i); };
JQuery.ptr.prototype.Trigger = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.trigger.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Trigger = function(i) { return this.$val.Trigger(i); };
JQuery.ptr.prototype.On = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.on.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.On = function(i) { return this.$val.On(i); };
JQuery.ptr.prototype.One = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.one.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.One = function(i) { return this.$val.One(i); };
JQuery.ptr.prototype.Off = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.off.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Off = function(i) { return this.$val.Off(i); };
JQuery.ptr.prototype.Load = function(i) {
var $ptr, i, j, obj;
j = this;
j.o = (obj = j.o, obj.load.apply(obj, $externalize(i, sliceType)));
return j;
};
JQuery.prototype.Load = function(i) { return this.$val.Load(i); };
JQuery.ptr.prototype.Serialize = function() {
var $ptr, j;
j = this;
return $internalize(j.o.serialize(), $String);
};
JQuery.prototype.Serialize = function() { return this.$val.Serialize(); };
JQuery.ptr.prototype.SerializeArray = function() {
var $ptr, j;
j = this;
return j.o.serializeArray();
};
JQuery.prototype.SerializeArray = function() { return this.$val.SerializeArray(); };
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: "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)}];
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)}];
JQuery.init("github.com/gopherjs/jquery", [{prop: "o", name: "o", exported: false, typ: ptrType, tag: ""}, {prop: "Jquery", name: "Jquery", exported: true, typ: $String, tag: "js:\"jquery\""}, {prop: "Selector", name: "Selector", exported: true, typ: $String, tag: "js:\"selector\""}, {prop: "Length", name: "Length", exported: true, typ: $Int, tag: "js:\"length\""}, {prop: "Context", name: "Context", exported: true, typ: $String, tag: "js:\"context\""}]);
Event.init("", [{prop: "Object", name: "", exported: true, typ: ptrType, tag: ""}, {prop: "KeyCode", name: "KeyCode", exported: true, typ: $Int, tag: "js:\"keyCode\""}, {prop: "Target", name: "Target", exported: true, typ: ptrType, tag: "js:\"target\""}, {prop: "CurrentTarget", name: "CurrentTarget", exported: true, typ: ptrType, tag: "js:\"currentTarget\""}, {prop: "DelegateTarget", name: "DelegateTarget", exported: true, typ: ptrType, tag: "js:\"delegateTarget\""}, {prop: "RelatedTarget", name: "RelatedTarget", exported: true, typ: ptrType, tag: "js:\"relatedTarget\""}, {prop: "Data", name: "Data", exported: true, typ: ptrType, tag: "js:\"data\""}, {prop: "Result", name: "Result", exported: true, typ: ptrType, tag: "js:\"result\""}, {prop: "Which", name: "Which", exported: true, typ: $Int, tag: "js:\"which\""}, {prop: "Namespace", name: "Namespace", exported: true, typ: $String, tag: "js:\"namespace\""}, {prop: "MetaKey", name: "MetaKey", exported: true, typ: $Bool, tag: "js:\"metaKey\""}, {prop: "PageX", name: "PageX", exported: true, typ: $Int, tag: "js:\"pageX\""}, {prop: "PageY", name: "PageY", exported: true, typ: $Int, tag: "js:\"pageY\""}, {prop: "Type", name: "Type", exported: true, typ: $String, tag: "js:\"type\""}]);
JQueryCoordinates.init("", [{prop: "Left", name: "Left", exported: true, typ: $Int, tag: ""}, {prop: "Top", name: "Top", exported: true, typ: $Int, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["bufio"] = (function() {
var $pkg = {}, $init, bytes, errors, io, utf8, Reader, Writer, ReadWriter, sliceType, ptrType, sliceType$1, ptrType$1, errNegativeRead, errNegativeWrite, NewReaderSize, NewReader, NewWriterSize, NewWriter, NewReadWriter;
bytes = $packages["bytes"];
errors = $packages["errors"];
io = $packages["io"];
utf8 = $packages["unicode/utf8"];
Reader = $pkg.Reader = $newType(0, $kindStruct, "bufio.Reader", true, "bufio", true, function(buf_, rd_, r_, w_, err_, lastByte_, lastRuneSize_) {
this.$val = this;
if (arguments.length === 0) {
this.buf = sliceType.nil;
this.rd = $ifaceNil;
this.r = 0;
this.w = 0;
this.err = $ifaceNil;
this.lastByte = 0;
this.lastRuneSize = 0;
return;
}
this.buf = buf_;
this.rd = rd_;
this.r = r_;
this.w = w_;
this.err = err_;
this.lastByte = lastByte_;
this.lastRuneSize = lastRuneSize_;
});
Writer = $pkg.Writer = $newType(0, $kindStruct, "bufio.Writer", true, "bufio", true, function(err_, buf_, n_, wr_) {
this.$val = this;
if (arguments.length === 0) {
this.err = $ifaceNil;
this.buf = sliceType.nil;
this.n = 0;
this.wr = $ifaceNil;
return;
}
this.err = err_;
this.buf = buf_;
this.n = n_;
this.wr = wr_;
});
ReadWriter = $pkg.ReadWriter = $newType(0, $kindStruct, "bufio.ReadWriter", true, "bufio", true, function(Reader_, Writer_) {
this.$val = this;
if (arguments.length === 0) {
this.Reader = ptrType.nil;
this.Writer = ptrType$1.nil;
return;
}
this.Reader = Reader_;
this.Writer = Writer_;
});
sliceType = $sliceType($Uint8);
ptrType = $ptrType(Reader);
sliceType$1 = $sliceType(sliceType);
ptrType$1 = $ptrType(Writer);
NewReaderSize = function(rd, size) {
var $ptr, _tuple, b, ok, r, rd, size;
_tuple = $assertType(rd, ptrType, true);
b = _tuple[0];
ok = _tuple[1];
if (ok && b.buf.$length >= size) {
return b;
}
if (size < 16) {
size = 16;
}
r = new Reader.ptr(sliceType.nil, $ifaceNil, 0, 0, $ifaceNil, 0, 0);
r.reset($makeSlice(sliceType, size), rd);
return r;
};
$pkg.NewReaderSize = NewReaderSize;
NewReader = function(rd) {
var $ptr, rd;
return NewReaderSize(rd, 4096);
};
$pkg.NewReader = NewReader;
Reader.ptr.prototype.Reset = function(r) {
var $ptr, b, r;
b = this;
b.reset(b.buf, r);
};
Reader.prototype.Reset = function(r) { return this.$val.Reset(r); };
Reader.ptr.prototype.reset = function(buf, r) {
var $ptr, b, buf, r;
b = this;
Reader.copy(b, new Reader.ptr(buf, r, 0, 0, $ifaceNil, -1, -1));
};
Reader.prototype.reset = function(buf, r) { return this.$val.reset(buf, r); };
Reader.ptr.prototype.fill = function() {
var $ptr, _r, _tuple, b, err, i, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
b = this;
if (b.r > 0) {
$copySlice(b.buf, $subslice(b.buf, b.r, b.w));
b.w = b.w - (b.r) >> 0;
b.r = 0;
}
if (b.w >= b.buf.$length) {
$panic(new $String("bufio: tried to fill full buffer"));
}
i = 100;
/* while (true) { */ case 1:
/* if (!(i > 0)) { break; } */ if(!(i > 0)) { $s = 2; continue; }
_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; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
if (n < 0) {
$panic(errNegativeRead);
}
b.w = b.w + (n) >> 0;
if (!($interfaceIsEqual(err, $ifaceNil))) {
b.err = err;
$s = -1; return;
}
if (n > 0) {
$s = -1; return;
}
i = i - (1) >> 0;
/* } */ $s = 1; continue; case 2:
b.err = io.ErrNoProgress;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.fill }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.fill = function() { return this.$val.fill(); };
Reader.ptr.prototype.readErr = function() {
var $ptr, b, err;
b = this;
err = b.err;
b.err = $ifaceNil;
return err;
};
Reader.prototype.readErr = function() { return this.$val.readErr(); };
Reader.ptr.prototype.Peek = function(n) {
var $ptr, avail, b, err, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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:
b = this;
if (n < 0) {
$s = -1; return [sliceType.nil, $pkg.ErrNegativeCount];
}
/* while (true) { */ case 1:
/* 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; }
$r = b.fill(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ $s = 1; continue; case 2:
if (n > b.buf.$length) {
$s = -1; return [$subslice(b.buf, b.r, b.w), $pkg.ErrBufferFull];
}
err = $ifaceNil;
avail = b.w - b.r >> 0;
if (avail < n) {
n = avail;
err = b.readErr();
if ($interfaceIsEqual(err, $ifaceNil)) {
err = $pkg.ErrBufferFull;
}
}
$s = -1; return [$subslice(b.buf, b.r, (b.r + n >> 0)), err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.Peek }; } $f.$ptr = $ptr; $f.avail = avail; $f.b = b; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
};
Reader.prototype.Peek = function(n) { return this.$val.Peek(n); };
Reader.ptr.prototype.Discard = function(n) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, b, discarded, err, n, remain, skip, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
discarded = 0;
err = $ifaceNil;
b = this;
if (n < 0) {
_tmp = 0;
_tmp$1 = $pkg.ErrNegativeCount;
discarded = _tmp;
err = _tmp$1;
$s = -1; return [discarded, err];
}
if (n === 0) {
$s = -1; return [discarded, err];
}
remain = n;
/* while (true) { */ case 1:
skip = b.Buffered();
/* */ if (skip === 0) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (skip === 0) { */ case 3:
$r = b.fill(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
skip = b.Buffered();
/* } */ case 4:
if (skip > remain) {
skip = remain;
}
b.r = b.r + (skip) >> 0;
remain = remain - (skip) >> 0;
if (remain === 0) {
_tmp$2 = n;
_tmp$3 = $ifaceNil;
discarded = _tmp$2;
err = _tmp$3;
$s = -1; return [discarded, err];
}
if (!($interfaceIsEqual(b.err, $ifaceNil))) {
_tmp$4 = n - remain >> 0;
_tmp$5 = b.readErr();
discarded = _tmp$4;
err = _tmp$5;
$s = -1; return [discarded, err];
}
/* } */ $s = 1; continue; case 2:
$s = -1; return [discarded, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.Discard }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.Discard = function(n) { return this.$val.Discard(n); };
Reader.ptr.prototype.Read = function(p) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
b = this;
n = p.$length;
if (n === 0) {
_tmp = 0;
_tmp$1 = b.readErr();
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
/* */ if (b.r === b.w) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (b.r === b.w) { */ case 1:
if (!($interfaceIsEqual(b.err, $ifaceNil))) {
_tmp$2 = 0;
_tmp$3 = b.readErr();
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
}
/* */ if (p.$length >= b.buf.$length) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (p.$length >= b.buf.$length) { */ case 3:
_r = b.rd.Read(p); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
b.err = _tuple[1];
if (n < 0) {
$panic(errNegativeRead);
}
if (n > 0) {
b.lastByte = (((x = n - 1 >> 0, ((x < 0 || x >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x])) >> 0));
b.lastRuneSize = -1;
}
_tmp$4 = n;
_tmp$5 = b.readErr();
n = _tmp$4;
err = _tmp$5;
$s = -1; return [n, err];
/* } */ case 4:
b.r = 0;
b.w = 0;
_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; }
_tuple$1 = _r$1;
n = _tuple$1[0];
b.err = _tuple$1[1];
if (n < 0) {
$panic(errNegativeRead);
}
if (n === 0) {
_tmp$6 = 0;
_tmp$7 = b.readErr();
n = _tmp$6;
err = _tmp$7;
$s = -1; return [n, err];
}
b.w = b.w + (n) >> 0;
/* } */ case 2:
n = $copySlice(p, $subslice(b.buf, b.r, b.w));
b.r = b.r + (n) >> 0;
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));
b.lastRuneSize = -1;
_tmp$8 = n;
_tmp$9 = $ifaceNil;
n = _tmp$8;
err = _tmp$9;
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.Read }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.Read = function(p) { return this.$val.Read(p); };
Reader.ptr.prototype.ReadByte = function() {
var $ptr, b, c, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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:
b = this;
b.lastRuneSize = -1;
/* while (true) { */ case 1:
/* if (!(b.r === b.w)) { break; } */ if(!(b.r === b.w)) { $s = 2; continue; }
if (!($interfaceIsEqual(b.err, $ifaceNil))) {
$s = -1; return [0, b.readErr()];
}
$r = b.fill(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ $s = 1; continue; case 2:
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]));
b.r = b.r + (1) >> 0;
b.lastByte = ((c >> 0));
$s = -1; return [c, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadByte }; } $f.$ptr = $ptr; $f.b = b; $f.c = c; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
};
Reader.prototype.ReadByte = function() { return this.$val.ReadByte(); };
Reader.ptr.prototype.UnreadByte = function() {
var $ptr, b, x, x$1;
b = this;
if (b.lastByte < 0 || (b.r === 0) && b.w > 0) {
return $pkg.ErrInvalidUnreadByte;
}
if (b.r > 0) {
b.r = b.r - (1) >> 0;
} else {
b.w = 1;
}
(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))));
b.lastByte = -1;
b.lastRuneSize = -1;
return $ifaceNil;
};
Reader.prototype.UnreadByte = function() { return this.$val.UnreadByte(); };
Reader.ptr.prototype.ReadRune = function() {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
r = 0;
size = 0;
err = $ifaceNil;
b = this;
/* while (true) { */ case 1:
/* 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; }
$r = b.fill(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ $s = 1; continue; case 2:
b.lastRuneSize = -1;
if (b.r === b.w) {
_tmp = 0;
_tmp$1 = 0;
_tmp$2 = b.readErr();
r = _tmp;
size = _tmp$1;
err = _tmp$2;
$s = -1; return [r, size, err];
}
_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));
_tmp$4 = 1;
r = _tmp$3;
size = _tmp$4;
if (r >= 128) {
_tuple = utf8.DecodeRune($subslice(b.buf, b.r, b.w));
r = _tuple[0];
size = _tuple[1];
}
b.r = b.r + (size) >> 0;
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));
b.lastRuneSize = size;
_tmp$5 = r;
_tmp$6 = size;
_tmp$7 = $ifaceNil;
r = _tmp$5;
size = _tmp$6;
err = _tmp$7;
$s = -1; return [r, size, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadRune }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.ReadRune = function() { return this.$val.ReadRune(); };
Reader.ptr.prototype.UnreadRune = function() {
var $ptr, b;
b = this;
if (b.lastRuneSize < 0 || b.r < b.lastRuneSize) {
return $pkg.ErrInvalidUnreadRune;
}
b.r = b.r - (b.lastRuneSize) >> 0;
b.lastByte = -1;
b.lastRuneSize = -1;
return $ifaceNil;
};
Reader.prototype.UnreadRune = function() { return this.$val.UnreadRune(); };
Reader.ptr.prototype.Buffered = function() {
var $ptr, b;
b = this;
return b.w - b.r >> 0;
};
Reader.prototype.Buffered = function() { return this.$val.Buffered(); };
Reader.ptr.prototype.ReadSlice = function(delim) {
var $ptr, b, delim, err, i, i$1, line, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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:
line = sliceType.nil;
err = $ifaceNil;
b = this;
/* while (true) { */ case 1:
i = bytes.IndexByte($subslice(b.buf, b.r, b.w), delim);
if (i >= 0) {
line = $subslice(b.buf, b.r, ((b.r + i >> 0) + 1 >> 0));
b.r = b.r + ((i + 1 >> 0)) >> 0;
/* break; */ $s = 2; continue;
}
if (!($interfaceIsEqual(b.err, $ifaceNil))) {
line = $subslice(b.buf, b.r, b.w);
b.r = b.w;
err = b.readErr();
/* break; */ $s = 2; continue;
}
if (b.Buffered() >= b.buf.$length) {
b.r = b.w;
line = b.buf;
err = $pkg.ErrBufferFull;
/* break; */ $s = 2; continue;
}
$r = b.fill(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ $s = 1; continue; case 2:
i$1 = line.$length - 1 >> 0;
if (i$1 >= 0) {
b.lastByte = ((((i$1 < 0 || i$1 >= line.$length) ? ($throwRuntimeError("index out of range"), undefined) : line.$array[line.$offset + i$1]) >> 0));
b.lastRuneSize = -1;
}
$s = -1; return [line, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadSlice }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.ReadSlice = function(delim) { return this.$val.ReadSlice(delim); };
Reader.ptr.prototype.ReadLine = function() {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tuple, b, drop, err, isPrefix, line, x, x$1, x$2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
line = sliceType.nil;
isPrefix = false;
err = $ifaceNil;
b = this;
_r = b.ReadSlice(10); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
line = _tuple[0];
err = _tuple[1];
if ($interfaceIsEqual(err, $pkg.ErrBufferFull)) {
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)) {
if (b.r === 0) {
$panic(new $String("bufio: tried to rewind past start of buffer"));
}
b.r = b.r - (1) >> 0;
line = $subslice(line, 0, (line.$length - 1 >> 0));
}
_tmp = line;
_tmp$1 = true;
_tmp$2 = $ifaceNil;
line = _tmp;
isPrefix = _tmp$1;
err = _tmp$2;
$s = -1; return [line, isPrefix, err];
}
if (line.$length === 0) {
if (!($interfaceIsEqual(err, $ifaceNil))) {
line = sliceType.nil;
}
$s = -1; return [line, isPrefix, err];
}
err = $ifaceNil;
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) {
drop = 1;
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)) {
drop = 2;
}
line = $subslice(line, 0, (line.$length - drop >> 0));
}
$s = -1; return [line, isPrefix, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadLine }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.ReadLine = function() { return this.$val.ReadLine(); };
Reader.ptr.prototype.ReadBytes = function(delim) {
var $ptr, _i, _i$1, _r, _ref, _ref$1, _tuple, b, buf, buf$1, delim, e, err, frag, full, i, i$1, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
b = this;
frag = sliceType.nil;
full = sliceType$1.nil;
err = $ifaceNil;
/* while (true) { */ case 1:
e = $ifaceNil;
_r = b.ReadSlice(delim); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
frag = _tuple[0];
e = _tuple[1];
if ($interfaceIsEqual(e, $ifaceNil)) {
/* break; */ $s = 2; continue;
}
if (!($interfaceIsEqual(e, $pkg.ErrBufferFull))) {
err = e;
/* break; */ $s = 2; continue;
}
buf = $makeSlice(sliceType, frag.$length);
$copySlice(buf, frag);
full = $append(full, buf);
/* } */ $s = 1; continue; case 2:
n = 0;
_ref = full;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
n = n + (((i < 0 || i >= full.$length) ? ($throwRuntimeError("index out of range"), undefined) : full.$array[full.$offset + i]).$length) >> 0;
_i++;
}
n = n + (frag.$length) >> 0;
buf$1 = $makeSlice(sliceType, n);
n = 0;
_ref$1 = full;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
i$1 = _i$1;
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;
_i$1++;
}
$copySlice($subslice(buf$1, n), frag);
$s = -1; return [buf$1, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadBytes }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.ReadBytes = function(delim) { return this.$val.ReadBytes(delim); };
Reader.ptr.prototype.ReadString = function(delim) {
var $ptr, _r, _tuple, b, bytes$1, delim, err, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
b = this;
_r = b.ReadBytes(delim); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
bytes$1 = _tuple[0];
err = _tuple[1];
$s = -1; return [($bytesToString(bytes$1)), err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadString }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.ReadString = function(delim) { return this.$val.ReadString(delim); };
Reader.ptr.prototype.WriteTo = function(w) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = new $Int64(0, 0);
err = $ifaceNil;
b = this;
_r = b.writeBuf(w); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [n, err];
}
_tuple$1 = $assertType(b.rd, io.WriterTo, true);
r = _tuple$1[0];
ok = _tuple$1[1];
/* */ if (ok) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (ok) { */ case 2:
_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; }
_tuple$2 = _r$1;
m = _tuple$2[0];
err$1 = _tuple$2[1];
n = (x = m, new $Int64(n.$high + x.$high, n.$low + x.$low));
_tmp = n;
_tmp$1 = err$1;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
/* } */ case 3:
_tuple$3 = $assertType(w, io.ReaderFrom, true);
w$1 = _tuple$3[0];
ok$1 = _tuple$3[1];
/* */ if (ok$1) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (ok$1) { */ case 5:
_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; }
_tuple$4 = _r$2;
m$1 = _tuple$4[0];
err$2 = _tuple$4[1];
n = (x$1 = m$1, new $Int64(n.$high + x$1.$high, n.$low + x$1.$low));
_tmp$2 = n;
_tmp$3 = err$2;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
/* } */ case 6:
/* */ if ((b.w - b.r >> 0) < b.buf.$length) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if ((b.w - b.r >> 0) < b.buf.$length) { */ case 8:
$r = b.fill(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 9:
/* while (true) { */ case 11:
/* if (!(b.r < b.w)) { break; } */ if(!(b.r < b.w)) { $s = 12; continue; }
_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; }
_tuple$5 = _r$3;
m$2 = _tuple$5[0];
err$3 = _tuple$5[1];
n = (x$2 = m$2, new $Int64(n.$high + x$2.$high, n.$low + x$2.$low));
if (!($interfaceIsEqual(err$3, $ifaceNil))) {
_tmp$4 = n;
_tmp$5 = err$3;
n = _tmp$4;
err = _tmp$5;
$s = -1; return [n, err];
}
$r = b.fill(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ $s = 11; continue; case 12:
if ($interfaceIsEqual(b.err, io.EOF)) {
b.err = $ifaceNil;
}
_tmp$6 = n;
_tmp$7 = b.readErr();
n = _tmp$6;
err = _tmp$7;
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.WriteTo }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.WriteTo = function(w) { return this.$val.WriteTo(w); };
Reader.ptr.prototype.writeBuf = function(w) {
var $ptr, _r, _tuple, b, err, n, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
b = this;
_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; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
if (n < 0) {
$panic(errNegativeWrite);
}
b.r = b.r + (n) >> 0;
$s = -1; return [(new $Int64(0, n)), err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.writeBuf }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.writeBuf = function(w) { return this.$val.writeBuf(w); };
NewWriterSize = function(w, size) {
var $ptr, _tuple, b, ok, size, w;
_tuple = $assertType(w, ptrType$1, true);
b = _tuple[0];
ok = _tuple[1];
if (ok && b.buf.$length >= size) {
return b;
}
if (size <= 0) {
size = 4096;
}
return new Writer.ptr($ifaceNil, $makeSlice(sliceType, size), 0, w);
};
$pkg.NewWriterSize = NewWriterSize;
NewWriter = function(w) {
var $ptr, w;
return NewWriterSize(w, 4096);
};
$pkg.NewWriter = NewWriter;
Writer.ptr.prototype.Reset = function(w) {
var $ptr, b, w;
b = this;
b.err = $ifaceNil;
b.n = 0;
b.wr = w;
};
Writer.prototype.Reset = function(w) { return this.$val.Reset(w); };
Writer.ptr.prototype.Flush = function() {
var $ptr, _r, _tuple, b, err, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
b = this;
if (!($interfaceIsEqual(b.err, $ifaceNil))) {
$s = -1; return b.err;
}
if (b.n === 0) {
$s = -1; return $ifaceNil;
}
_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; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
if (n < b.n && $interfaceIsEqual(err, $ifaceNil)) {
err = io.ErrShortWrite;
}
if (!($interfaceIsEqual(err, $ifaceNil))) {
if (n > 0 && n < b.n) {
$copySlice($subslice(b.buf, 0, (b.n - n >> 0)), $subslice(b.buf, n, b.n));
}
b.n = b.n - (n) >> 0;
b.err = err;
$s = -1; return err;
}
b.n = 0;
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: Writer.ptr.prototype.Flush }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
};
Writer.prototype.Flush = function() { return this.$val.Flush(); };
Writer.ptr.prototype.Available = function() {
var $ptr, b;
b = this;
return b.buf.$length - b.n >> 0;
};
Writer.prototype.Available = function() { return this.$val.Available(); };
Writer.ptr.prototype.Buffered = function() {
var $ptr, b;
b = this;
return b.n;
};
Writer.prototype.Buffered = function() { return this.$val.Buffered(); };
Writer.ptr.prototype.Write = function(p) {
var $ptr, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, err, n, n$1, nn, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
nn = 0;
err = $ifaceNil;
b = this;
/* while (true) { */ case 1:
/* if (!(p.$length > b.Available() && $interfaceIsEqual(b.err, $ifaceNil))) { break; } */ if(!(p.$length > b.Available() && $interfaceIsEqual(b.err, $ifaceNil))) { $s = 2; continue; }
n = 0;
/* */ if (b.Buffered() === 0) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (b.Buffered() === 0) { */ case 3:
_r = b.wr.Write(p); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
b.err = _tuple[1];
$s = 5; continue;
/* } else { */ case 4:
n = $copySlice($subslice(b.buf, b.n), p);
b.n = b.n + (n) >> 0;
_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; }
_r$1;
/* } */ case 5:
nn = nn + (n) >> 0;
p = $subslice(p, n);
/* } */ $s = 1; continue; case 2:
if (!($interfaceIsEqual(b.err, $ifaceNil))) {
_tmp = nn;
_tmp$1 = b.err;
nn = _tmp;
err = _tmp$1;
$s = -1; return [nn, err];
}
n$1 = $copySlice($subslice(b.buf, b.n), p);
b.n = b.n + (n$1) >> 0;
nn = nn + (n$1) >> 0;
_tmp$2 = nn;
_tmp$3 = $ifaceNil;
nn = _tmp$2;
err = _tmp$3;
$s = -1; return [nn, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Writer.ptr.prototype.Write }; } $f.$ptr = $ptr; $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;
};
Writer.prototype.Write = function(p) { return this.$val.Write(p); };
Writer.ptr.prototype.WriteByte = function(c) {
var $ptr, _r, _v, b, c, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
b = this;
if (!($interfaceIsEqual(b.err, $ifaceNil))) {
$s = -1; return b.err;
}
if (!(b.Available() <= 0)) { _v = false; $s = 3; continue s; }
_r = b.Flush(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_v = !($interfaceIsEqual(_r, $ifaceNil)); case 3:
/* */ if (_v) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (_v) { */ case 1:
$s = -1; return b.err;
/* } */ case 2:
(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));
b.n = b.n + (1) >> 0;
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: Writer.ptr.prototype.WriteByte }; } $f.$ptr = $ptr; $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;
};
Writer.prototype.WriteByte = function(c) { return this.$val.WriteByte(c); };
Writer.ptr.prototype.WriteRune = function(r) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
size = 0;
err = $ifaceNil;
b = this;
/* */ if (r < 128) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (r < 128) { */ case 1:
_r = b.WriteByte(((r << 24 >>> 24))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = 0;
_tmp$1 = err;
size = _tmp;
err = _tmp$1;
$s = -1; return [size, err];
}
_tmp$2 = 1;
_tmp$3 = $ifaceNil;
size = _tmp$2;
err = _tmp$3;
$s = -1; return [size, err];
/* } */ case 2:
if (!($interfaceIsEqual(b.err, $ifaceNil))) {
_tmp$4 = 0;
_tmp$5 = b.err;
size = _tmp$4;
err = _tmp$5;
$s = -1; return [size, err];
}
n = b.Available();
/* */ if (n < 4) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (n < 4) { */ case 4:
_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; }
_r$1;
if (!($interfaceIsEqual(b.err, $ifaceNil))) {
_tmp$6 = 0;
_tmp$7 = b.err;
size = _tmp$6;
err = _tmp$7;
$s = -1; return [size, err];
}
n = b.Available();
/* */ if (n < 4) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (n < 4) { */ case 7:
_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; }
_tuple = _r$2;
size = _tuple[0];
err = _tuple[1];
$s = -1; return [size, err];
/* } */ case 8:
/* } */ case 5:
size = utf8.EncodeRune($subslice(b.buf, b.n), r);
b.n = b.n + (size) >> 0;
_tmp$8 = size;
_tmp$9 = $ifaceNil;
size = _tmp$8;
err = _tmp$9;
$s = -1; return [size, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Writer.ptr.prototype.WriteRune }; } $f.$ptr = $ptr; $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;
};
Writer.prototype.WriteRune = function(r) { return this.$val.WriteRune(r); };
Writer.ptr.prototype.WriteString = function(s) {
var $ptr, _r, b, n, n$1, nn, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
b = this;
nn = 0;
/* while (true) { */ case 1:
/* if (!(s.length > b.Available() && $interfaceIsEqual(b.err, $ifaceNil))) { break; } */ if(!(s.length > b.Available() && $interfaceIsEqual(b.err, $ifaceNil))) { $s = 2; continue; }
n = $copyString($subslice(b.buf, b.n), s);
b.n = b.n + (n) >> 0;
nn = nn + (n) >> 0;
s = $substring(s, n);
_r = b.Flush(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
/* } */ $s = 1; continue; case 2:
if (!($interfaceIsEqual(b.err, $ifaceNil))) {
$s = -1; return [nn, b.err];
}
n$1 = $copyString($subslice(b.buf, b.n), s);
b.n = b.n + (n$1) >> 0;
nn = nn + (n$1) >> 0;
$s = -1; return [nn, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Writer.ptr.prototype.WriteString }; } $f.$ptr = $ptr; $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;
};
Writer.prototype.WriteString = function(s) { return this.$val.WriteString(s); };
Writer.ptr.prototype.ReadFrom = function(r) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = new $Int64(0, 0);
err = $ifaceNil;
b = this;
/* */ if (b.Buffered() === 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (b.Buffered() === 0) { */ case 1:
_tuple = $assertType(b.wr, io.ReaderFrom, true);
w = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (ok) { */ case 3:
_r = w.ReadFrom(r); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
n = _tuple$1[0];
err = _tuple$1[1];
$s = -1; return [n, err];
/* } */ case 4:
/* } */ case 2:
m = 0;
/* while (true) { */ case 6:
/* */ if (b.Available() === 0) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (b.Available() === 0) { */ case 8:
_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; }
err1 = _r$1;
if (!($interfaceIsEqual(err1, $ifaceNil))) {
_tmp = n;
_tmp$1 = err1;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
/* } */ case 9:
nr = 0;
/* while (true) { */ case 11:
/* if (!(nr < 100)) { break; } */ if(!(nr < 100)) { $s = 12; continue; }
_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; }
_tuple$2 = _r$2;
m = _tuple$2[0];
err = _tuple$2[1];
if (!((m === 0)) || !($interfaceIsEqual(err, $ifaceNil))) {
/* break; */ $s = 12; continue;
}
nr = nr + (1) >> 0;
/* } */ $s = 11; continue; case 12:
if (nr === 100) {
_tmp$2 = n;
_tmp$3 = io.ErrNoProgress;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
}
b.n = b.n + (m) >> 0;
n = (x = (new $Int64(0, m)), new $Int64(n.$high + x.$high, n.$low + x.$low));
if (!($interfaceIsEqual(err, $ifaceNil))) {
/* break; */ $s = 7; continue;
}
/* } */ $s = 6; continue; case 7:
/* */ if ($interfaceIsEqual(err, io.EOF)) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if ($interfaceIsEqual(err, io.EOF)) { */ case 14:
/* */ if (b.Available() === 0) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (b.Available() === 0) { */ case 16:
_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; }
err = _r$3;
$s = 18; continue;
/* } else { */ case 17:
err = $ifaceNil;
/* } */ case 18:
/* } */ case 15:
_tmp$4 = n;
_tmp$5 = err;
n = _tmp$4;
err = _tmp$5;
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Writer.ptr.prototype.ReadFrom }; } $f.$ptr = $ptr; $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;
};
Writer.prototype.ReadFrom = function(r) { return this.$val.ReadFrom(r); };
NewReadWriter = function(r, w) {
var $ptr, r, w;
return new ReadWriter.ptr(r, w);
};
$pkg.NewReadWriter = NewReadWriter;
ptrType.methods = [{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)}];
ptrType$1.methods = [{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)}];
Reader.init("bufio", [{prop: "buf", name: "buf", exported: false, typ: sliceType, tag: ""}, {prop: "rd", name: "rd", exported: false, typ: io.Reader, tag: ""}, {prop: "r", name: "r", exported: false, typ: $Int, tag: ""}, {prop: "w", name: "w", exported: false, typ: $Int, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}, {prop: "lastByte", name: "lastByte", exported: false, typ: $Int, tag: ""}, {prop: "lastRuneSize", name: "lastRuneSize", exported: false, typ: $Int, tag: ""}]);
Writer.init("bufio", [{prop: "err", name: "err", exported: false, typ: $error, tag: ""}, {prop: "buf", name: "buf", exported: false, typ: sliceType, tag: ""}, {prop: "n", name: "n", exported: false, typ: $Int, tag: ""}, {prop: "wr", name: "wr", exported: false, typ: io.Writer, tag: ""}]);
ReadWriter.init("", [{prop: "Reader", name: "", exported: true, typ: ptrType, tag: ""}, {prop: "Writer", name: "", exported: true, typ: ptrType$1, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = utf8.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$pkg.ErrInvalidUnreadByte = errors.New("bufio: invalid use of UnreadByte");
$pkg.ErrInvalidUnreadRune = errors.New("bufio: invalid use of UnreadRune");
$pkg.ErrBufferFull = errors.New("bufio: buffer full");
$pkg.ErrNegativeCount = errors.New("bufio: negative count");
errNegativeRead = errors.New("bufio: reader returned negative count from Read");
errNegativeWrite = errors.New("bufio: writer returned negative count from Write");
$pkg.ErrTooLong = errors.New("bufio.Scanner: token too long");
$pkg.ErrNegativeAdvance = errors.New("bufio.Scanner: SplitFunc returns negative advance count");
$pkg.ErrAdvanceTooFar = errors.New("bufio.Scanner: SplitFunc returns advance count beyond input");
$pkg.ErrFinalToken = errors.New("final token");
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["compress/flate"] = (function() {
var $pkg = {}, $init, bufio, fmt, io, math, 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, reverseByte, newHuffmanBitWriter, init, maxNode, newHuffmanEncoder, generateFixedLiteralEncoding, generateFixedOffsetEncoding, makeReader, fixedHuffmanDecoderInit, NewReader, reverseUint16, reverseBits;
bufio = $packages["bufio"];
fmt = $packages["fmt"];
io = $packages["io"];
math = $packages["math"];
sort = $packages["sort"];
strconv = $packages["strconv"];
sync = $packages["sync"];
dictDecoder = $pkg.dictDecoder = $newType(0, $kindStruct, "flate.dictDecoder", true, "compress/flate", false, function(hist_, wrPos_, rdPos_, full_) {
this.$val = this;
if (arguments.length === 0) {
this.hist = sliceType$4.nil;
this.wrPos = 0;
this.rdPos = 0;
this.full = false;
return;
}
this.hist = hist_;
this.wrPos = wrPos_;
this.rdPos = rdPos_;
this.full = full_;
});
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_) {
this.$val = this;
if (arguments.length === 0) {
this.writer = $ifaceNil;
this.bits = new $Uint64(0, 0);
this.nbits = 0;
this.bytes = arrayType$5.zero();
this.codegenFreq = arrayType$6.zero();
this.nbytes = 0;
this.literalFreq = sliceType$7.nil;
this.offsetFreq = sliceType$7.nil;
this.codegen = sliceType$4.nil;
this.literalEncoding = ptrType.nil;
this.offsetEncoding = ptrType.nil;
this.codegenEncoding = ptrType.nil;
this.err = $ifaceNil;
return;
}
this.writer = writer_;
this.bits = bits_;
this.nbits = nbits_;
this.bytes = bytes_;
this.codegenFreq = codegenFreq_;
this.nbytes = nbytes_;
this.literalFreq = literalFreq_;
this.offsetFreq = offsetFreq_;
this.codegen = codegen_;
this.literalEncoding = literalEncoding_;
this.offsetEncoding = offsetEncoding_;
this.codegenEncoding = codegenEncoding_;
this.err = err_;
});
hcode = $pkg.hcode = $newType(0, $kindStruct, "flate.hcode", true, "compress/flate", false, function(code_, len_) {
this.$val = this;
if (arguments.length === 0) {
this.code = 0;
this.len = 0;
return;
}
this.code = code_;
this.len = len_;
});
huffmanEncoder = $pkg.huffmanEncoder = $newType(0, $kindStruct, "flate.huffmanEncoder", true, "compress/flate", false, function(codes_, freqcache_, bitCount_, lns_, lfs_) {
this.$val = this;
if (arguments.length === 0) {
this.codes = sliceType$8.nil;
this.freqcache = sliceType$9.nil;
this.bitCount = arrayType$7.zero();
this.lns = byLiteral.nil;
this.lfs = byFreq.nil;
return;
}
this.codes = codes_;
this.freqcache = freqcache_;
this.bitCount = bitCount_;
this.lns = lns_;
this.lfs = lfs_;
});
literalNode = $pkg.literalNode = $newType(0, $kindStruct, "flate.literalNode", true, "compress/flate", false, function(literal_, freq_) {
this.$val = this;
if (arguments.length === 0) {
this.literal = 0;
this.freq = 0;
return;
}
this.literal = literal_;
this.freq = freq_;
});
levelInfo = $pkg.levelInfo = $newType(0, $kindStruct, "flate.levelInfo", true, "compress/flate", false, function(level_, lastFreq_, nextCharFreq_, nextPairFreq_, needed_) {
this.$val = this;
if (arguments.length === 0) {
this.level = 0;
this.lastFreq = 0;
this.nextCharFreq = 0;
this.nextPairFreq = 0;
this.needed = 0;
return;
}
this.level = level_;
this.lastFreq = lastFreq_;
this.nextCharFreq = nextCharFreq_;
this.nextPairFreq = nextPairFreq_;
this.needed = needed_;
});
byLiteral = $pkg.byLiteral = $newType(12, $kindSlice, "flate.byLiteral", true, "compress/flate", false, null);
byFreq = $pkg.byFreq = $newType(12, $kindSlice, "flate.byFreq", true, "compress/flate", false, null);
CorruptInputError = $pkg.CorruptInputError = $newType(8, $kindInt64, "flate.CorruptInputError", true, "compress/flate", true, null);
InternalError = $pkg.InternalError = $newType(8, $kindString, "flate.InternalError", true, "compress/flate", true, null);
Resetter = $pkg.Resetter = $newType(8, $kindInterface, "flate.Resetter", true, "compress/flate", true, null);
huffmanDecoder = $pkg.huffmanDecoder = $newType(0, $kindStruct, "flate.huffmanDecoder", true, "compress/flate", false, function(min_, chunks_, links_, linkMask_) {
this.$val = this;
if (arguments.length === 0) {
this.min = 0;
this.chunks = arrayType.zero();
this.links = sliceType$1.nil;
this.linkMask = 0;
return;
}
this.min = min_;
this.chunks = chunks_;
this.links = links_;
this.linkMask = linkMask_;
});
Reader = $pkg.Reader = $newType(8, $kindInterface, "flate.Reader", true, "compress/flate", true, null);
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_) {
this.$val = this;
if (arguments.length === 0) {
this.r = $ifaceNil;
this.roffset = new $Int64(0, 0);
this.b = 0;
this.nb = 0;
this.h1 = new huffmanDecoder.ptr(0, arrayType.zero(), sliceType$1.nil, 0);
this.h2 = new huffmanDecoder.ptr(0, arrayType.zero(), sliceType$1.nil, 0);
this.bits = ptrType$11.nil;
this.codebits = ptrType$12.nil;
this.dict = new dictDecoder.ptr(sliceType$4.nil, 0, 0, false);
this.buf = arrayType$15.zero();
this.step = $throwNilPointerError;
this.stepState = 0;
this.final$12 = false;
this.err = $ifaceNil;
this.toRead = sliceType$4.nil;
this.hl = ptrType$9.nil;
this.hd = ptrType$9.nil;
this.copyLen = 0;
this.copyDist = 0;
return;
}
this.r = r_;
this.roffset = roffset_;
this.b = b_;
this.nb = nb_;
this.h1 = h1_;
this.h2 = h2_;
this.bits = bits_;
this.codebits = codebits_;
this.dict = dict_;
this.buf = buf_;
this.step = step_;
this.stepState = stepState_;
this.final$12 = final$12_;
this.err = err_;
this.toRead = toRead_;
this.hl = hl_;
this.hd = hd_;
this.copyLen = copyLen_;
this.copyDist = copyDist_;
});
token = $pkg.token = $newType(4, $kindUint32, "flate.token", true, "compress/flate", false, null);
ptrType = $ptrType(huffmanEncoder);
arrayType = $arrayType($Uint32, 512);
sliceType = $sliceType($Uint32);
sliceType$1 = $sliceType(sliceType);
sliceType$4 = $sliceType($Uint8);
sliceType$5 = $sliceType(token);
ptrType$3 = $ptrType(huffmanBitWriter);
arrayType$5 = $arrayType($Uint8, 248);
arrayType$6 = $arrayType($Int32, 19);
sliceType$7 = $sliceType($Int32);
sliceType$8 = $sliceType(hcode);
sliceType$9 = $sliceType(literalNode);
arrayType$7 = $arrayType($Int32, 17);
arrayType$8 = $arrayType(levelInfo, 16);
arrayType$9 = $arrayType($Int32, 16);
arrayType$10 = $arrayType(arrayType$9, 16);
ptrType$7 = $ptrType(byLiteral);
ptrType$8 = $ptrType(byFreq);
arrayType$11 = $arrayType($Int, 16);
ptrType$9 = $ptrType(huffmanDecoder);
sliceType$10 = $sliceType($Int);
ptrType$10 = $ptrType(decompressor);
arrayType$12 = $arrayType($Int, 288);
arrayType$13 = $arrayType($Int, 316);
ptrType$11 = $ptrType(arrayType$13);
arrayType$14 = $arrayType($Int, 19);
ptrType$12 = $ptrType(arrayType$14);
arrayType$15 = $arrayType($Uint8, 4);
ptrType$13 = $ptrType(dictDecoder);
ptrType$14 = $ptrType(hcode);
funcType$3 = $funcType([ptrType$10], [], false);
dictDecoder.ptr.prototype.init = function(size, dict) {
var $ptr, dd, dict, size;
dd = this;
dictDecoder.copy(dd, new dictDecoder.ptr(dd.hist, 0, 0, false));
if (dd.hist.$capacity < size) {
dd.hist = $makeSlice(sliceType$4, size);
}
dd.hist = $subslice(dd.hist, 0, size);
if (dict.$length > dd.hist.$length) {
dict = $subslice(dict, (dict.$length - dd.hist.$length >> 0));
}
dd.wrPos = $copySlice(dd.hist, dict);
if (dd.wrPos === dd.hist.$length) {
dd.wrPos = 0;
dd.full = true;
}
dd.rdPos = dd.wrPos;
};
dictDecoder.prototype.init = function(size, dict) { return this.$val.init(size, dict); };
dictDecoder.ptr.prototype.histSize = function() {
var $ptr, dd;
dd = this;
if (dd.full) {
return dd.hist.$length;
}
return dd.wrPos;
};
dictDecoder.prototype.histSize = function() { return this.$val.histSize(); };
dictDecoder.ptr.prototype.availRead = function() {
var $ptr, dd;
dd = this;
return dd.wrPos - dd.rdPos >> 0;
};
dictDecoder.prototype.availRead = function() { return this.$val.availRead(); };
dictDecoder.ptr.prototype.availWrite = function() {
var $ptr, dd;
dd = this;
return dd.hist.$length - dd.wrPos >> 0;
};
dictDecoder.prototype.availWrite = function() { return this.$val.availWrite(); };
dictDecoder.ptr.prototype.writeSlice = function() {
var $ptr, dd;
dd = this;
return $subslice(dd.hist, dd.wrPos);
};
dictDecoder.prototype.writeSlice = function() { return this.$val.writeSlice(); };
dictDecoder.ptr.prototype.writeMark = function(cnt) {
var $ptr, cnt, dd;
dd = this;
dd.wrPos = dd.wrPos + (cnt) >> 0;
};
dictDecoder.prototype.writeMark = function(cnt) { return this.$val.writeMark(cnt); };
dictDecoder.ptr.prototype.writeByte = function(c) {
var $ptr, c, dd, x, x$1;
dd = this;
(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));
dd.wrPos = dd.wrPos + (1) >> 0;
};
dictDecoder.prototype.writeByte = function(c) { return this.$val.writeByte(c); };
dictDecoder.ptr.prototype.writeCopy = function(dist, length) {
var $ptr, dd, dist, dstBase, dstPos, endPos, length, srcPos;
dd = this;
dstBase = dd.wrPos;
dstPos = dstBase;
srcPos = dstPos - dist >> 0;
endPos = dstPos + length >> 0;
if (endPos > dd.hist.$length) {
endPos = dd.hist.$length;
}
if (srcPos < 0) {
srcPos = srcPos + (dd.hist.$length) >> 0;
dstPos = dstPos + ($copySlice($subslice(dd.hist, dstPos, endPos), $subslice(dd.hist, srcPos))) >> 0;
srcPos = 0;
}
while (true) {
if (!(dstPos < endPos)) { break; }
dstPos = dstPos + ($copySlice($subslice(dd.hist, dstPos, endPos), $subslice(dd.hist, srcPos, dstPos))) >> 0;
}
dd.wrPos = dstPos;
return dstPos - dstBase >> 0;
};
dictDecoder.prototype.writeCopy = function(dist, length) { return this.$val.writeCopy(dist, length); };
dictDecoder.ptr.prototype.tryWriteCopy = function(dist, length) {
var $ptr, dd, dist, dstBase, dstPos, endPos, length, srcPos, $s;
/* */ $s = 0; s: while (true) { switch ($s) { case 0:
dd = this;
dstPos = dd.wrPos;
endPos = dstPos + length >> 0;
if (dstPos < dist || endPos > dd.hist.$length) {
$s = -1; return 0;
}
dstBase = dstPos;
srcPos = dstPos - dist >> 0;
/* loop: */ case 1:
dstPos = dstPos + ($copySlice($subslice(dd.hist, dstPos, endPos), $subslice(dd.hist, srcPos, dstPos))) >> 0;
/* */ if (dstPos < endPos) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (dstPos < endPos) { */ case 2:
/* goto loop */ $s = 1; continue;
/* } */ case 3:
dd.wrPos = dstPos;
$s = -1; return dstPos - dstBase >> 0;
/* */ } return; }
};
dictDecoder.prototype.tryWriteCopy = function(dist, length) { return this.$val.tryWriteCopy(dist, length); };
dictDecoder.ptr.prototype.readFlush = function() {
var $ptr, _tmp, _tmp$1, dd, toRead;
dd = this;
toRead = $subslice(dd.hist, dd.rdPos, dd.wrPos);
dd.rdPos = dd.wrPos;
if (dd.wrPos === dd.hist.$length) {
_tmp = 0;
_tmp$1 = 0;
dd.wrPos = _tmp;
dd.rdPos = _tmp$1;
dd.full = true;
}
return toRead;
};
dictDecoder.prototype.readFlush = function() { return this.$val.readFlush(); };
newHuffmanBitWriter = function(w) {
var $ptr, w;
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);
};
init = function() {
var $ptr, w, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; w = $f.w; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
w = newHuffmanBitWriter($ifaceNil);
(x = w.offsetFreq, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 1));
huffOffset = newHuffmanEncoder(30);
$r = huffOffset.generate(w.offsetFreq, 15); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: init }; } $f.$ptr = $ptr; $f.w = w; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
hcode.ptr.prototype.set = function(code, length) {
var $ptr, code, h, length;
h = this;
h.len = length;
h.code = code;
};
hcode.prototype.set = function(code, length) { return this.$val.set(code, length); };
maxNode = function() {
var $ptr;
return new literalNode.ptr(65535, 2147483647);
};
newHuffmanEncoder = function(size) {
var $ptr, size;
return new huffmanEncoder.ptr($makeSlice(sliceType$8, size), sliceType$9.nil, arrayType$7.zero(), byLiteral.nil, byFreq.nil);
};
generateFixedLiteralEncoding = function() {
var $ptr, bits, ch, codes, h, size;
h = newHuffmanEncoder(286);
codes = h.codes;
ch = 0;
ch = 0;
while (true) {
if (!(ch < 286)) { break; }
bits = 0;
size = 0;
switch (0) { default:
if (ch < 144) {
bits = ch + 48 << 16 >>> 16;
size = 8;
break;
} else if (ch < 256) {
bits = (ch + 400 << 16 >>> 16) - 144 << 16 >>> 16;
size = 9;
break;
} else if (ch < 280) {
bits = ch - 256 << 16 >>> 16;
size = 7;
break;
} else {
bits = (ch + 192 << 16 >>> 16) - 280 << 16 >>> 16;
size = 8;
}
}
hcode.copy(((ch < 0 || ch >= codes.$length) ? ($throwRuntimeError("index out of range"), undefined) : codes.$array[codes.$offset + ch]), new hcode.ptr(reverseBits(bits, ((size << 24 >>> 24))), size));
ch = ch + (1) << 16 >>> 16;
}
return h;
};
generateFixedOffsetEncoding = function() {
var $ptr, _i, _ref, ch, codes, h;
h = newHuffmanEncoder(30);
codes = h.codes;
_ref = codes;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
ch = _i;
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));
_i++;
}
return h;
};
huffmanEncoder.ptr.prototype.bitCounts = function(list, maxBits) {
var $ptr, bitCount, bits, 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;
h = this;
if (maxBits >= 16) {
$panic(new $String("flate: maxBits too large"));
}
n = ((list.$length >> 0));
list = $subslice(list, 0, (n + 1 >> 0));
literalNode.copy(((n < 0 || n >= list.$length) ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + n]), maxNode());
if (maxBits > (n - 1 >> 0)) {
maxBits = n - 1 >> 0;
}
levels$1 = arrayType$8.zero();
leafCounts = arrayType$10.zero();
level = 1;
while (true) {
if (!(level <= maxBits)) { break; }
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));
(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));
if (level === 1) {
((level < 0 || level >= levels$1.length) ? ($throwRuntimeError("index out of range"), undefined) : levels$1[level]).nextPairFreq = 2147483647;
}
level = level + (1) >> 0;
}
((maxBits < 0 || maxBits >= levels$1.length) ? ($throwRuntimeError("index out of range"), undefined) : levels$1[maxBits]).needed = ($imul(2, n)) - 4 >> 0;
level$1 = maxBits;
while (true) {
l = ((level$1 < 0 || level$1 >= levels$1.length) ? ($throwRuntimeError("index out of range"), undefined) : levels$1[level$1]);
if ((l.nextPairFreq === 2147483647) && (l.nextCharFreq === 2147483647)) {
l.needed = 0;
(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;
level$1 = level$1 + (1) >> 0;
continue;
}
prevFreq = l.lastFreq;
if (l.nextCharFreq < l.nextPairFreq) {
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;
l.lastFreq = l.nextCharFreq;
(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));
l.nextCharFreq = ((n$1 < 0 || n$1 >= list.$length) ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + n$1]).freq;
} else {
l.lastFreq = l.nextPairFreq;
$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));
(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;
}
l.needed = l.needed - (1) >> 0;
if (l.needed === 0) {
if (l.level === maxBits) {
break;
}
(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;
level$1 = level$1 + (1) >> 0;
} else {
while (true) {
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; }
level$1 = level$1 - (1) >> 0;
}
}
}
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))) {
$panic(new $String("leafCounts[maxBits][maxBits] != n"));
}
bitCount = $subslice(new sliceType$7(h.bitCount), 0, (maxBits + 1 >> 0));
bits = 1;
counts = ((maxBits < 0 || maxBits >= leafCounts.length) ? ($throwRuntimeError("index out of range"), undefined) : leafCounts[maxBits]);
level$2 = maxBits;
while (true) {
if (!(level$2 > 0)) { break; }
((bits < 0 || bits >= bitCount.$length) ? ($throwRuntimeError("index out of range"), undefined) : bitCount.$array[bitCount.$offset + bits] = ((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));
bits = bits + (1) >> 0;
level$2 = level$2 - (1) >> 0;
}
return bitCount;
};
huffmanEncoder.prototype.bitCounts = function(list, maxBits) { return this.$val.bitCounts(list, maxBits); };
huffmanEncoder.ptr.prototype.assignEncodingAndSize = function(bitCount, list) {
var $ptr, _i, _i$1, _ref, _ref$1, bitCount, bits, chunk, code, h, list, n, node, x, x$1, y, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _i$1 = $f._i$1; _ref = $f._ref; _ref$1 = $f._ref$1; bitCount = $f.bitCount; bits = $f.bits; 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:
h = this;
code = 0;
_ref = bitCount;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
n = _i;
bits = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
code = (y = (1), y < 32 ? (code << y) : 0) << 16 >>> 16;
/* */ if ((n === 0) || (bits === 0)) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if ((n === 0) || (bits === 0)) { */ case 3:
_i++;
/* continue; */ $s = 1; continue;
/* } */ case 4:
chunk = $subslice(list, (list.$length - ((bits >> 0)) >> 0));
$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; }
_ref$1 = chunk;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
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);
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))));
code = code + (1) << 16 >>> 16;
_i$1++;
}
list = $subslice(list, 0, (list.$length - ((bits >> 0)) >> 0));
_i++;
/* } */ $s = 1; continue; case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: huffmanEncoder.ptr.prototype.assignEncodingAndSize }; } $f.$ptr = $ptr; $f._i = _i; $f._i$1 = _i$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f.bitCount = bitCount; $f.bits = bits; $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;
};
huffmanEncoder.prototype.assignEncodingAndSize = function(bitCount, list) { return this.$val.assignEncodingAndSize(bitCount, list); };
huffmanEncoder.ptr.prototype.generate = function(freq, maxBits) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
h = this;
if (h.freqcache === sliceType$9.nil) {
h.freqcache = $makeSlice(sliceType$9, 287);
}
list = $subslice(h.freqcache, 0, (freq.$length + 1 >> 0));
count = 0;
_ref = freq;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (!((f === 0))) {
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));
count = count + (1) >> 0;
} else {
literalNode.copy(((count < 0 || count >= list.$length) ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + count]), new literalNode.ptr(0, 0));
(x = h.codes, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])).len = 0;
}
_i++;
}
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));
list = $subslice(list, 0, count);
if (count <= 2) {
_ref$1 = list;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
i$1 = _i$1;
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);
(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);
_i$1++;
}
$s = -1; return;
}
$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; }
bitCount = h.bitCounts(list, maxBits);
$r = h.assignEncodingAndSize(bitCount, list); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: huffmanEncoder.ptr.prototype.generate }; } $f.$ptr = $ptr; $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;
};
huffmanEncoder.prototype.generate = function(freq, maxBits) { return this.$val.generate(freq, maxBits); };
$ptrType(byLiteral).prototype.sort = function(a) {
var $ptr, a, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; a = $f.a; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
s = this;
s.$set(($subslice(new byLiteral(a.$array), a.$offset, a.$offset + a.$length)));
$r = sort.Sort(s); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $ptrType(byLiteral).prototype.sort }; } $f.$ptr = $ptr; $f.a = a; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
byLiteral.prototype.Len = function() {
var $ptr, s;
s = this;
return s.$length;
};
$ptrType(byLiteral).prototype.Len = function() { return this.$get().Len(); };
byLiteral.prototype.Less = function(i, j) {
var $ptr, i, j, s;
s = this;
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;
};
$ptrType(byLiteral).prototype.Less = function(i, j) { return this.$get().Less(i, j); };
byLiteral.prototype.Swap = function(i, j) {
var $ptr, _tmp, _tmp$1, i, j, s;
s = this;
_tmp = $clone(((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]), literalNode);
_tmp$1 = $clone(((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]), literalNode);
literalNode.copy(((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]), _tmp);
literalNode.copy(((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]), _tmp$1);
};
$ptrType(byLiteral).prototype.Swap = function(i, j) { return this.$get().Swap(i, j); };
$ptrType(byFreq).prototype.sort = function(a) {
var $ptr, a, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; a = $f.a; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
s = this;
s.$set(($subslice(new byFreq(a.$array), a.$offset, a.$offset + a.$length)));
$r = sort.Sort(s); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $ptrType(byFreq).prototype.sort }; } $f.$ptr = $ptr; $f.a = a; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
byFreq.prototype.Len = function() {
var $ptr, s;
s = this;
return s.$length;
};
$ptrType(byFreq).prototype.Len = function() { return this.$get().Len(); };
byFreq.prototype.Less = function(i, j) {
var $ptr, i, j, s;
s = this;
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) {
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;
}
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;
};
$ptrType(byFreq).prototype.Less = function(i, j) { return this.$get().Less(i, j); };
byFreq.prototype.Swap = function(i, j) {
var $ptr, _tmp, _tmp$1, i, j, s;
s = this;
_tmp = $clone(((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]), literalNode);
_tmp$1 = $clone(((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]), literalNode);
literalNode.copy(((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]), _tmp);
literalNode.copy(((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]), _tmp$1);
};
$ptrType(byFreq).prototype.Swap = function(i, j) { return this.$get().Swap(i, j); };
CorruptInputError.prototype.Error = function() {
var $ptr, e;
e = this;
return "flate: corrupt input before offset " + strconv.FormatInt((new $Int64(e.$high, e.$low)), 10);
};
$ptrType(CorruptInputError).prototype.Error = function() { return this.$get().Error(); };
InternalError.prototype.Error = function() {
var $ptr, e;
e = this.$val;
return "flate: internal error: " + (e);
};
$ptrType(InternalError).prototype.Error = function() { return new InternalError(this.$get()).Error(); };
huffmanDecoder.ptr.prototype.init = function(bits) {
var $ptr, _i, _i$1, _i$2, _i$3, _i$4, _r, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _tmp, _tmp$1, bits, 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$10, x$11, 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;
h = this;
if (!((h.min === 0))) {
huffmanDecoder.copy(h, new huffmanDecoder.ptr(0, arrayType.zero(), sliceType$1.nil, 0));
}
count = arrayType$11.zero();
_tmp = 0;
_tmp$1 = 0;
min = _tmp;
max = _tmp$1;
_ref = bits;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
n = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (n === 0) {
_i++;
continue;
}
if ((min === 0) || n < min) {
min = n;
}
if (n > max) {
max = n;
}
((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));
_i++;
}
if (max === 0) {
return true;
}
code = 0;
nextcode = arrayType$11.zero();
i = min;
while (true) {
if (!(i <= max)) { break; }
code = (y = (1), y < 32 ? (code << y) : 0) >> 0;
((i < 0 || i >= nextcode.length) ? ($throwRuntimeError("index out of range"), undefined) : nextcode[i] = code);
code = code + (((i < 0 || i >= count.length) ? ($throwRuntimeError("index out of range"), undefined) : count[i])) >> 0;
i = i + (1) >> 0;
}
if (!((code === ((y$1 = ((max >>> 0)), y$1 < 32 ? (1 << y$1) : 0) >> 0))) && !((code === 1) && (max === 1))) {
return false;
}
h.min = min;
if (max > 9) {
numLinks = (y$2 = ((((max >>> 0)) - 9 >>> 0)), y$2 < 32 ? (1 << y$2) : 0) >> 0;
h.linkMask = (((numLinks - 1 >> 0) >>> 0));
link = nextcode[10] >> 1 >> 0;
h.links = $makeSlice(sliceType$1, (512 - link >> 0));
j = ((link >>> 0));
while (true) {
if (!(j < 512)) { break; }
reverse = (((x = j >>> 8 >>> 0, ((x < 0 || x >= reverseByte.length) ? ($throwRuntimeError("index out of range"), undefined) : reverseByte[x])) >> 0)) | ((((x$1 = (j & 255) >>> 0, ((x$1 < 0 || x$1 >= reverseByte.length) ? ($throwRuntimeError("index out of range"), undefined) : reverseByte[x$1])) >> 0)) << 8 >> 0);
reverse = (reverse >> $min((7), 31)) >> 0;
off = j - ((link >>> 0)) >>> 0;
if (false && !(((x$2 = h.chunks, ((reverse < 0 || reverse >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[reverse])) === 0))) {
$panic(new $String("impossible: overwriting existing chunk"));
}
(x$3 = h.chunks, ((reverse < 0 || reverse >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[reverse] = (((((off << 4 >>> 0) | 10) >>> 0) >>> 0))));
(x$4 = h.links, ((off < 0 || off >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + off] = $makeSlice(sliceType, numLinks)));
j = j + (1) >>> 0;
}
}
_ref$1 = bits;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
i$1 = _i$1;
n$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
if (n$1 === 0) {
_i$1++;
continue;
}
code$1 = ((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] = (((n$1 < 0 || n$1 >= nextcode.length) ? ($throwRuntimeError("index out of range"), undefined) : nextcode[n$1]) + (1) >> 0));
chunk = ((((i$1 << 4 >> 0) | n$1) >>> 0));
reverse$1 = (((x$5 = code$1 >> 8 >> 0, ((x$5 < 0 || x$5 >= reverseByte.length) ? ($throwRuntimeError("index out of range"), undefined) : reverseByte[x$5])) >> 0)) | ((((x$6 = code$1 & 255, ((x$6 < 0 || x$6 >= reverseByte.length) ? ($throwRuntimeError("index out of range"), undefined) : reverseByte[x$6])) >> 0)) << 8 >> 0);
reverse$1 = (reverse$1 >> $min(((((16 - n$1 >> 0) >>> 0))), 31)) >> 0;
if (n$1 <= 9) {
off$1 = reverse$1;
while (true) {
if (!(off$1 < 512)) { break; }
if (false && !(((x$7 = h.chunks, ((off$1 < 0 || off$1 >= x$7.length) ? ($throwRuntimeError("index out of range"), undefined) : x$7[off$1])) === 0))) {
$panic(new $String("impossible: overwriting existing chunk"));
}
(x$8 = h.chunks, ((off$1 < 0 || off$1 >= x$8.length) ? ($throwRuntimeError("index out of range"), undefined) : x$8[off$1] = chunk));
off$1 = off$1 + (((y$3 = ((n$1 >>> 0)), y$3 < 32 ? (1 << y$3) : 0) >> 0)) >> 0;
}
} else {
j$1 = reverse$1 & 511;
if (false && !(((((x$9 = h.chunks, ((j$1 < 0 || j$1 >= x$9.length) ? ($throwRuntimeError("index out of range"), undefined) : x$9[j$1])) & 15) >>> 0) === 10))) {
$panic(new $String("impossible: not an indirect chunk"));
}
value = (x$10 = h.chunks, ((j$1 < 0 || j$1 >= x$10.length) ? ($throwRuntimeError("index out of range"), undefined) : x$10[j$1])) >>> 4 >>> 0;
linktab = (x$11 = h.links, ((value < 0 || value >= x$11.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$11.$array[x$11.$offset + value]));
reverse$1 = (reverse$1 >> $min((9), 31)) >> 0;
off$2 = reverse$1;
while (true) {
if (!(off$2 < linktab.$length)) { break; }
if (false && !((((off$2 < 0 || off$2 >= linktab.$length) ? ($throwRuntimeError("index out of range"), undefined) : linktab.$array[linktab.$offset + off$2]) === 0))) {
$panic(new $String("impossible: overwriting existing chunk"));
}
((off$2 < 0 || off$2 >= linktab.$length) ? ($throwRuntimeError("index out of range"), undefined) : linktab.$array[linktab.$offset + off$2] = chunk);
off$2 = off$2 + (((y$4 = (((n$1 - 9 >> 0) >>> 0)), y$4 < 32 ? (1 << y$4) : 0) >> 0)) >> 0;
}
}
_i$1++;
}
if (false) {
_ref$2 = h.chunks;
_i$2 = 0;
while (true) {
if (!(_i$2 < 512)) { break; }
i$2 = _i$2;
chunk$1 = ((_i$2 < 0 || _i$2 >= _ref$2.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2[_i$2]);
if (chunk$1 === 0) {
if ((code === 1) && ((_r = i$2 % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 1)) {
_i$2++;
continue;
}
$panic(new $String("impossible: missing chunk"));
}
_i$2++;
}
_ref$3 = h.links;
_i$3 = 0;
while (true) {
if (!(_i$3 < _ref$3.$length)) { break; }
linktab$1 = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]);
_ref$4 = linktab$1;
_i$4 = 0;
while (true) {
if (!(_i$4 < _ref$4.$length)) { break; }
chunk$2 = ((_i$4 < 0 || _i$4 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$4]);
if (chunk$2 === 0) {
$panic(new $String("impossible: missing chunk"));
}
_i$4++;
}
_i$3++;
}
}
return true;
};
huffmanDecoder.prototype.init = function(bits) { return this.$val.init(bits); };
decompressor.ptr.prototype.nextBlock = function() {
var $ptr, _1, _r, _r$1, f, typ, x, y, y$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
f = this;
/* while (true) { */ case 1:
/* if (!(f.nb < 3)) { break; } */ if(!(f.nb < 3)) { $s = 2; continue; }
_r = f.moreBits(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
f.err = _r;
if (!($interfaceIsEqual(f.err, $ifaceNil))) {
$s = -1; return;
}
/* } */ $s = 1; continue; case 2:
f.final$12 = ((f.b & 1) >>> 0) === 1;
f.b = (y = (1), y < 32 ? (f.b >>> y) : 0) >>> 0;
typ = (f.b & 3) >>> 0;
f.b = (y$1 = (2), y$1 < 32 ? (f.b >>> y$1) : 0) >>> 0;
f.nb = f.nb - (3) >>> 0;
_1 = typ;
/* */ if (_1 === (0)) { $s = 5; continue; }
/* */ if (_1 === (1)) { $s = 6; continue; }
/* */ if (_1 === (2)) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (_1 === (0)) { */ case 5:
$r = f.dataBlock(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 9; continue;
/* } else if (_1 === (1)) { */ case 6:
f.hl = fixedHuffmanDecoder;
f.hd = ptrType$9.nil;
$r = f.huffmanBlock(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 9; continue;
/* } else if (_1 === (2)) { */ case 7:
_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; }
f.err = _r$1;
if (!($interfaceIsEqual(f.err, $ifaceNil))) {
/* break; */ $s = 4; continue;
}
f.hl = f.h1;
f.hd = f.h2;
$r = f.huffmanBlock(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 9; continue;
/* } else { */ case 8:
f.err = ((x = f.roffset, new CorruptInputError(x.$high, x.$low)));
/* } */ case 9:
case 4:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: decompressor.ptr.prototype.nextBlock }; } $f.$ptr = $ptr; $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;
};
decompressor.prototype.nextBlock = function() { return this.$val.nextBlock(); };
decompressor.ptr.prototype.Read = function(b) {
var $ptr, b, f, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; b = $f.b; f = $f.f; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
f = this;
/* while (true) { */ case 1:
if (f.toRead.$length > 0) {
n = $copySlice(b, f.toRead);
f.toRead = $subslice(f.toRead, n);
if (f.toRead.$length === 0) {
$s = -1; return [n, f.err];
}
$s = -1; return [n, $ifaceNil];
}
if (!($interfaceIsEqual(f.err, $ifaceNil))) {
$s = -1; return [0, f.err];
}
$r = f.step(f); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (!($interfaceIsEqual(f.err, $ifaceNil)) && (f.toRead.$length === 0)) {
f.toRead = f.dict.readFlush();
}
/* } */ $s = 1; continue; case 2:
$s = -1; return [0, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: decompressor.ptr.prototype.Read }; } $f.$ptr = $ptr; $f.b = b; $f.f = f; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
};
decompressor.prototype.Read = function(b) { return this.$val.Read(b); };
decompressor.ptr.prototype.Close = function() {
var $ptr, f;
f = this;
if ($interfaceIsEqual(f.err, io.EOF)) {
return $ifaceNil;
}
return f.err;
};
decompressor.prototype.Close = function() { return this.$val.Close(); };
decompressor.ptr.prototype.readHuffman = function() {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
f = this;
/* while (true) { */ case 1:
/* if (!(f.nb < 14)) { break; } */ if(!(f.nb < 14)) { $s = 2; continue; }
_r = f.moreBits(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
/* } */ $s = 1; continue; case 2:
nlit = ((((f.b & 31) >>> 0) >> 0)) + 257 >> 0;
if (nlit > 286) {
$s = -1; return ((x = f.roffset, new CorruptInputError(x.$high, x.$low)));
}
f.b = (y = (5), y < 32 ? (f.b >>> y) : 0) >>> 0;
ndist = ((((f.b & 31) >>> 0) >> 0)) + 1 >> 0;
if (ndist > 30) {
$s = -1; return ((x$1 = f.roffset, new CorruptInputError(x$1.$high, x$1.$low)));
}
f.b = (y$1 = (5), y$1 < 32 ? (f.b >>> y$1) : 0) >>> 0;
nclen = ((((f.b & 15) >>> 0) >> 0)) + 4 >> 0;
f.b = (y$2 = (4), y$2 < 32 ? (f.b >>> y$2) : 0) >>> 0;
f.nb = f.nb - (14) >>> 0;
i = 0;
/* while (true) { */ case 4:
/* if (!(i < nclen)) { break; } */ if(!(i < nclen)) { $s = 5; continue; }
/* while (true) { */ case 6:
/* if (!(f.nb < 3)) { break; } */ if(!(f.nb < 3)) { $s = 7; continue; }
_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; }
err$1 = _r$1;
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return err$1;
}
/* } */ $s = 6; continue; case 7:
(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))));
f.b = (y$3 = (3), y$3 < 32 ? (f.b >>> y$3) : 0) >>> 0;
f.nb = f.nb - (3) >>> 0;
i = i + (1) >> 0;
/* } */ $s = 4; continue; case 5:
i$1 = nclen;
while (true) {
if (!(i$1 < 19)) { break; }
(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));
i$1 = i$1 + (1) >> 0;
}
if (!f.h1.init($subslice(new sliceType$10(f.codebits), 0))) {
$s = -1; return ((x$6 = f.roffset, new CorruptInputError(x$6.$high, x$6.$low)));
}
_tmp = 0;
_tmp$1 = nlit + ndist >> 0;
i$2 = _tmp;
n = _tmp$1;
/* while (true) { */ case 9:
/* if (!(i$2 < n)) { break; } */ if(!(i$2 < n)) { $s = 10; continue; }
_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; }
_tuple = _r$2;
x$7 = _tuple[0];
err$2 = _tuple[1];
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return err$2;
}
/* */ if (x$7 < 16) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (x$7 < 16) { */ case 12:
(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));
i$2 = i$2 + (1) >> 0;
/* continue; */ $s = 9; continue;
/* } */ case 13:
rep = 0;
nb = 0;
b = 0;
_1 = x$7;
if (_1 === (16)) {
rep = 3;
nb = 2;
if (i$2 === 0) {
$s = -1; return ((x$9 = f.roffset, new CorruptInputError(x$9.$high, x$9.$low)));
}
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])));
} else if (_1 === (17)) {
rep = 3;
nb = 3;
b = 0;
} else if (_1 === (18)) {
rep = 11;
nb = 7;
b = 0;
} else {
$s = -1; return new InternalError("unexpected length code");
}
/* while (true) { */ case 14:
/* if (!(f.nb < nb)) { break; } */ if(!(f.nb < nb)) { $s = 15; continue; }
_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; }
err$3 = _r$3;
if (!($interfaceIsEqual(err$3, $ifaceNil))) {
$s = -1; return err$3;
}
/* } */ $s = 14; continue; case 15:
rep = rep + (((((f.b & ((((y$4 = nb, y$4 < 32 ? (1 << y$4) : 0) >>> 0) - 1 >>> 0))) >>> 0) >> 0))) >> 0;
f.b = (y$5 = (nb), y$5 < 32 ? (f.b >>> y$5) : 0) >>> 0;
f.nb = f.nb - (nb) >>> 0;
if ((i$2 + rep >> 0) > n) {
$s = -1; return ((x$12 = f.roffset, new CorruptInputError(x$12.$high, x$12.$low)));
}
j = 0;
while (true) {
if (!(j < rep)) { break; }
(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));
i$2 = i$2 + (1) >> 0;
j = j + (1) >> 0;
}
/* } */ $s = 9; continue; case 10:
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)))) {
$s = -1; return ((x$14 = f.roffset, new CorruptInputError(x$14.$high, x$14.$low)));
}
if (f.h1.min < (x$15 = f.bits, (x$15.nilCheck, x$15[256]))) {
f.h1.min = (x$16 = f.bits, (x$16.nilCheck, x$16[256]));
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: decompressor.ptr.prototype.readHuffman }; } $f.$ptr = $ptr; $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;
};
decompressor.prototype.readHuffman = function() { return this.$val.readHuffman(); };
decompressor.ptr.prototype.huffmanBlock = function() {
var $ptr, _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, x$3, y, y$1, y$2, y$3, y$4, y$5, y$6, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; x$3 = $f.x$3; 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:
f = this;
_1 = f.stepState;
/* */ if (_1 === (0)) { $s = 2; continue; }
/* */ if (_1 === (1)) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (_1 === (0)) { */ case 2:
/* goto readLiteral */ $s = 5; continue;
$s = 4; continue;
/* } else if (_1 === (1)) { */ case 3:
/* goto copyHistory */ $s = 6; continue;
/* } */ case 4:
case 1:
/* readLiteral: */ case 5:
_r = f.huffSym(f.hl); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
v = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
f.err = err;
$s = -1; return;
}
n = 0;
length = 0;
/* */ if (v < 256) { $s = 9; continue; }
/* */ if ((v === 256)) { $s = 10; continue; }
/* */ if (v < 265) { $s = 11; continue; }
/* */ if (v < 269) { $s = 12; continue; }
/* */ if (v < 273) { $s = 13; continue; }
/* */ if (v < 277) { $s = 14; continue; }
/* */ if (v < 281) { $s = 15; continue; }
/* */ if (v < 285) { $s = 16; continue; }
/* */ if (v < 286) { $s = 17; continue; }
/* */ $s = 18; continue;
/* if (v < 256) { */ case 9:
f.dict.writeByte(((v << 24 >>> 24)));
if (f.dict.availWrite() === 0) {
f.toRead = f.dict.readFlush();
f.step = $methodExpr(ptrType$10, "huffmanBlock");
f.stepState = 0;
$s = -1; return;
}
/* goto readLiteral */ $s = 5; continue;
$s = 19; continue;
/* } else if ((v === 256)) { */ case 10:
f.finishBlock();
$s = -1; return;
/* } else if (v < 265) { */ case 11:
length = v - 254 >> 0;
n = 0;
$s = 19; continue;
/* } else if (v < 269) { */ case 12:
length = ($imul(v, 2)) - 519 >> 0;
n = 1;
$s = 19; continue;
/* } else if (v < 273) { */ case 13:
length = ($imul(v, 4)) - 1057 >> 0;
n = 2;
$s = 19; continue;
/* } else if (v < 277) { */ case 14:
length = ($imul(v, 8)) - 2149 >> 0;
n = 3;
$s = 19; continue;
/* } else if (v < 281) { */ case 15:
length = ($imul(v, 16)) - 4365 >> 0;
n = 4;
$s = 19; continue;
/* } else if (v < 285) { */ case 16:
length = ($imul(v, 32)) - 8861 >> 0;
n = 5;
$s = 19; continue;
/* } else if (v < 286) { */ case 17:
length = 258;
n = 0;
$s = 19; continue;
/* } else { */ case 18:
f.err = ((x = f.roffset, new CorruptInputError(x.$high, x.$low)));
$s = -1; return;
/* } */ case 19:
case 8:
/* */ if (n > 0) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if (n > 0) { */ case 20:
/* while (true) { */ case 22:
/* if (!(f.nb < n)) { break; } */ if(!(f.nb < n)) { $s = 23; continue; }
_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; }
err = _r$1;
if (!($interfaceIsEqual(err, $ifaceNil))) {
f.err = err;
$s = -1; return;
}
/* } */ $s = 22; continue; case 23:
length = length + (((((f.b & ((((y = n, y < 32 ? (1 << y) : 0) >>> 0) - 1 >>> 0))) >>> 0) >> 0))) >> 0;
f.b = (y$1 = (n), y$1 < 32 ? (f.b >>> y$1) : 0) >>> 0;
f.nb = f.nb - (n) >>> 0;
/* } */ case 21:
dist = 0;
/* */ if (f.hd === ptrType$9.nil) { $s = 25; continue; }
/* */ $s = 26; continue;
/* if (f.hd === ptrType$9.nil) { */ case 25:
/* while (true) { */ case 28:
/* if (!(f.nb < 5)) { break; } */ if(!(f.nb < 5)) { $s = 29; continue; }
_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; }
err = _r$2;
if (!($interfaceIsEqual(err, $ifaceNil))) {
f.err = err;
$s = -1; return;
}
/* } */ $s = 28; continue; case 29:
dist = (((x$1 = (((f.b & 31) >>> 0)) << 3 >>> 0, ((x$1 < 0 || x$1 >= reverseByte.length) ? ($throwRuntimeError("index out of range"), undefined) : reverseByte[x$1])) >> 0));
f.b = (y$2 = (5), y$2 < 32 ? (f.b >>> y$2) : 0) >>> 0;
f.nb = f.nb - (5) >>> 0;
$s = 27; continue;
/* } else { */ case 26:
_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; }
_tuple$1 = _r$3;
dist = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
f.err = err;
$s = -1; return;
}
/* } */ case 27:
/* */ if (dist < 4) { $s = 33; continue; }
/* */ if (dist < 30) { $s = 34; continue; }
/* */ $s = 35; continue;
/* if (dist < 4) { */ case 33:
dist = dist + (1) >> 0;
$s = 36; continue;
/* } else if (dist < 30) { */ case 34:
nb = (((dist - 2 >> 0) >>> 0)) >>> 1 >>> 0;
extra = (y$3 = nb, y$3 < 32 ? (((dist & 1)) << y$3) : 0) >> 0;
/* while (true) { */ case 37:
/* if (!(f.nb < nb)) { break; } */ if(!(f.nb < nb)) { $s = 38; continue; }
_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; }
err = _r$4;
if (!($interfaceIsEqual(err, $ifaceNil))) {
f.err = err;
$s = -1; return;
}
/* } */ $s = 37; continue; case 38:
extra = extra | (((((f.b & ((((y$4 = nb, y$4 < 32 ? (1 << y$4) : 0) >>> 0) - 1 >>> 0))) >>> 0) >> 0)));
f.b = (y$5 = (nb), y$5 < 32 ? (f.b >>> y$5) : 0) >>> 0;
f.nb = f.nb - (nb) >>> 0;
dist = (((y$6 = ((nb + 1 >>> 0)), y$6 < 32 ? (1 << y$6) : 0) >> 0) + 1 >> 0) + extra >> 0;
$s = 36; continue;
/* } else { */ case 35:
f.err = ((x$2 = f.roffset, new CorruptInputError(x$2.$high, x$2.$low)));
$s = -1; return;
/* } */ case 36:
case 32:
if (dist > f.dict.histSize()) {
f.err = ((x$3 = f.roffset, new CorruptInputError(x$3.$high, x$3.$low)));
$s = -1; return;
}
_tmp = length;
_tmp$1 = dist;
f.copyLen = _tmp;
f.copyDist = _tmp$1;
/* goto copyHistory */ $s = 6; continue;
/* copyHistory: */ case 6:
cnt = f.dict.tryWriteCopy(f.copyDist, f.copyLen);
if (cnt === 0) {
cnt = f.dict.writeCopy(f.copyDist, f.copyLen);
}
f.copyLen = f.copyLen - (cnt) >> 0;
if ((f.dict.availWrite() === 0) || f.copyLen > 0) {
f.toRead = f.dict.readFlush();
f.step = $methodExpr(ptrType$10, "huffmanBlock");
f.stepState = 1;
$s = -1; return;
}
/* goto readLiteral */ $s = 5; continue;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: decompressor.ptr.prototype.huffmanBlock }; } $f.$ptr = $ptr; $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.x$3 = x$3; $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;
};
decompressor.prototype.huffmanBlock = function() { return this.$val.huffmanBlock(); };
decompressor.ptr.prototype.dataBlock = function() {
var $ptr, _r, _tuple, err, f, n, nn, nr, x, x$1, x$2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
f = this;
f.nb = 0;
f.b = 0;
_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; }
_tuple = _r;
nr = _tuple[0];
err = _tuple[1];
f.roffset = (x = f.roffset, x$1 = (new $Int64(0, nr)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
if (!($interfaceIsEqual(err, $ifaceNil))) {
if ($interfaceIsEqual(err, io.EOF)) {
err = io.ErrUnexpectedEOF;
}
f.err = err;
$s = -1; return;
}
n = ((f.buf[0] >> 0)) | (((f.buf[1] >> 0)) << 8 >> 0);
nn = ((f.buf[2] >> 0)) | (((f.buf[3] >> 0)) << 8 >> 0);
if (!((((nn << 16 >>> 16)) === (((~n >> 0) << 16 >>> 16))))) {
f.err = ((x$2 = f.roffset, new CorruptInputError(x$2.$high, x$2.$low)));
$s = -1; return;
}
if (n === 0) {
f.toRead = f.dict.readFlush();
f.finishBlock();
$s = -1; return;
}
f.copyLen = n;
$r = f.copyData(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: decompressor.ptr.prototype.dataBlock }; } $f.$ptr = $ptr; $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;
};
decompressor.prototype.dataBlock = function() { return this.$val.dataBlock(); };
decompressor.ptr.prototype.copyData = function() {
var $ptr, _r, _tuple, buf, cnt, err, f, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
f = this;
buf = f.dict.writeSlice();
if (buf.$length > f.copyLen) {
buf = $subslice(buf, 0, f.copyLen);
}
_r = io.ReadFull(f.r, buf); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
cnt = _tuple[0];
err = _tuple[1];
f.roffset = (x = f.roffset, x$1 = (new $Int64(0, cnt)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
f.copyLen = f.copyLen - (cnt) >> 0;
f.dict.writeMark(cnt);
if (!($interfaceIsEqual(err, $ifaceNil))) {
if ($interfaceIsEqual(err, io.EOF)) {
err = io.ErrUnexpectedEOF;
}
f.err = err;
$s = -1; return;
}
if ((f.dict.availWrite() === 0) || f.copyLen > 0) {
f.toRead = f.dict.readFlush();
f.step = $methodExpr(ptrType$10, "copyData");
$s = -1; return;
}
f.finishBlock();
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: decompressor.ptr.prototype.copyData }; } $f.$ptr = $ptr; $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;
};
decompressor.prototype.copyData = function() { return this.$val.copyData(); };
decompressor.ptr.prototype.finishBlock = function() {
var $ptr, f;
f = this;
if (f.final$12) {
if (f.dict.availRead() > 0) {
f.toRead = f.dict.readFlush();
}
f.err = io.EOF;
}
f.step = $methodExpr(ptrType$10, "nextBlock");
};
decompressor.prototype.finishBlock = function() { return this.$val.finishBlock(); };
decompressor.ptr.prototype.moreBits = function() {
var $ptr, _r, _tuple, c, err, f, x, x$1, y, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
f = this;
_r = f.r.ReadByte(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
c = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
if ($interfaceIsEqual(err, io.EOF)) {
err = io.ErrUnexpectedEOF;
}
$s = -1; return err;
}
f.roffset = (x = f.roffset, x$1 = new $Int64(0, 1), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
f.b = (f.b | (((y = f.nb, y < 32 ? (((c >>> 0)) << y) : 0) >>> 0))) >>> 0;
f.nb = f.nb + (8) >>> 0;
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: decompressor.ptr.prototype.moreBits }; } $f.$ptr = $ptr; $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;
};
decompressor.prototype.moreBits = function() { return this.$val.moreBits(); };
decompressor.ptr.prototype.huffSym = function(h) {
var $ptr, _r, chunk, err, f, h, n, x, x$1, x$2, x$3, x$4, x$5, x$6, y, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
f = this;
n = ((h.min >>> 0));
/* while (true) { */ case 1:
/* while (true) { */ case 3:
/* if (!(f.nb < n)) { break; } */ if(!(f.nb < n)) { $s = 4; continue; }
_r = f.moreBits(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [0, err];
}
/* } */ $s = 3; continue; case 4:
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]));
n = ((((chunk & 15) >>> 0) >>> 0));
if (n > 9) {
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]));
n = ((((chunk & 15) >>> 0) >>> 0));
}
if (n <= f.nb) {
if (n === 0) {
f.err = ((x$6 = f.roffset, new CorruptInputError(x$6.$high, x$6.$low)));
$s = -1; return [0, f.err];
}
f.b = (y = (n), y < 32 ? (f.b >>> y) : 0) >>> 0;
f.nb = f.nb - (n) >>> 0;
$s = -1; return [(((chunk >>> 4 >>> 0) >> 0)), $ifaceNil];
}
/* } */ $s = 1; continue; case 2:
$s = -1; return [0, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: decompressor.ptr.prototype.huffSym }; } $f.$ptr = $ptr; $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;
};
decompressor.prototype.huffSym = function(h) { return this.$val.huffSym(h); };
makeReader = function(r) {
var $ptr, _tuple, ok, r, rr;
_tuple = $assertType(r, Reader, true);
rr = _tuple[0];
ok = _tuple[1];
if (ok) {
return rr;
}
return bufio.NewReader(r);
};
fixedHuffmanDecoderInit = function() {
var $ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = fixedOnce.Do((function() {
var $ptr, bits, i, i$1, i$2, i$3;
bits = arrayType$12.zero();
i = 0;
while (true) {
if (!(i < 144)) { break; }
((i < 0 || i >= bits.length) ? ($throwRuntimeError("index out of range"), undefined) : bits[i] = 8);
i = i + (1) >> 0;
}
i$1 = 144;
while (true) {
if (!(i$1 < 256)) { break; }
((i$1 < 0 || i$1 >= bits.length) ? ($throwRuntimeError("index out of range"), undefined) : bits[i$1] = 9);
i$1 = i$1 + (1) >> 0;
}
i$2 = 256;
while (true) {
if (!(i$2 < 280)) { break; }
((i$2 < 0 || i$2 >= bits.length) ? ($throwRuntimeError("index out of range"), undefined) : bits[i$2] = 7);
i$2 = i$2 + (1) >> 0;
}
i$3 = 280;
while (true) {
if (!(i$3 < 288)) { break; }
((i$3 < 0 || i$3 >= bits.length) ? ($throwRuntimeError("index out of range"), undefined) : bits[i$3] = 8);
i$3 = i$3 + (1) >> 0;
}
fixedHuffmanDecoder.init(new sliceType$10(bits));
})); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: fixedHuffmanDecoderInit }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
};
decompressor.ptr.prototype.Reset = function(r, dict) {
var $ptr, dict, f, r;
f = this;
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));
f.dict.init(32768, dict);
return $ifaceNil;
};
decompressor.prototype.Reset = function(r, dict) { return this.$val.Reset(r, dict); };
NewReader = function(r) {
var $ptr, f, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
f = [f];
$r = fixedHuffmanDecoderInit(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
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);
f[0].r = makeReader(r);
f[0].bits = arrayType$13.zero();
f[0].codebits = arrayType$14.zero();
f[0].step = $methodExpr(ptrType$10, "nextBlock");
f[0].dict.init(32768, sliceType$4.nil);
$s = -1; return f[0];
/* */ } return; } if ($f === undefined) { $f = { $blk: NewReader }; } $f.$ptr = $ptr; $f.f = f; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.NewReader = NewReader;
reverseUint16 = function(v) {
var $ptr, v, x, x$1;
return ((((x = v >>> 8 << 16 >>> 16, ((x < 0 || x >= reverseByte.length) ? ($throwRuntimeError("index out of range"), undefined) : reverseByte[x])) << 16 >>> 16)) | ((((x$1 = (v & 255) >>> 0, ((x$1 < 0 || x$1 >= reverseByte.length) ? ($throwRuntimeError("index out of range"), undefined) : reverseByte[x$1])) << 16 >>> 16)) << 8 << 16 >>> 16)) >>> 0;
};
reverseBits = function(number, bitLength) {
var $ptr, bitLength, number, y;
return reverseUint16((y = ((16 - bitLength << 24 >>> 24)), y < 32 ? (number << y) : 0) << 16 >>> 16);
};
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)}];
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)}];
ptrType$14.methods = [{prop: "set", name: "set", pkg: "compress/flate", typ: $funcType([$Uint16, $Uint16], [], false)}];
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)}];
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)}];
ptrType$7.methods = [{prop: "sort", name: "sort", pkg: "compress/flate", typ: $funcType([sliceType$9], [], false)}];
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)}];
ptrType$8.methods = [{prop: "sort", name: "sort", pkg: "compress/flate", typ: $funcType([sliceType$9], [], false)}];
CorruptInputError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
InternalError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
ptrType$9.methods = [{prop: "init", name: "init", pkg: "compress/flate", typ: $funcType([sliceType$10], [$Bool], false)}];
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)}];
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)}];
dictDecoder.init("compress/flate", [{prop: "hist", name: "hist", exported: false, typ: sliceType$4, tag: ""}, {prop: "wrPos", name: "wrPos", exported: false, typ: $Int, tag: ""}, {prop: "rdPos", name: "rdPos", exported: false, typ: $Int, tag: ""}, {prop: "full", name: "full", exported: false, typ: $Bool, tag: ""}]);
huffmanBitWriter.init("compress/flate", [{prop: "writer", name: "writer", exported: false, typ: io.Writer, tag: ""}, {prop: "bits", name: "bits", exported: false, typ: $Uint64, tag: ""}, {prop: "nbits", name: "nbits", exported: false, typ: $Uint, tag: ""}, {prop: "bytes", name: "bytes", exported: false, typ: arrayType$5, tag: ""}, {prop: "codegenFreq", name: "codegenFreq", exported: false, typ: arrayType$6, tag: ""}, {prop: "nbytes", name: "nbytes", exported: false, typ: $Int, tag: ""}, {prop: "literalFreq", name: "literalFreq", exported: false, typ: sliceType$7, tag: ""}, {prop: "offsetFreq", name: "offsetFreq", exported: false, typ: sliceType$7, tag: ""}, {prop: "codegen", name: "codegen", exported: false, typ: sliceType$4, tag: ""}, {prop: "literalEncoding", name: "literalEncoding", exported: false, typ: ptrType, tag: ""}, {prop: "offsetEncoding", name: "offsetEncoding", exported: false, typ: ptrType, tag: ""}, {prop: "codegenEncoding", name: "codegenEncoding", exported: false, typ: ptrType, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}]);
hcode.init("compress/flate", [{prop: "code", name: "code", exported: false, typ: $Uint16, tag: ""}, {prop: "len", name: "len", exported: false, typ: $Uint16, tag: ""}]);
huffmanEncoder.init("compress/flate", [{prop: "codes", name: "codes", exported: false, typ: sliceType$8, tag: ""}, {prop: "freqcache", name: "freqcache", exported: false, typ: sliceType$9, tag: ""}, {prop: "bitCount", name: "bitCount", exported: false, typ: arrayType$7, tag: ""}, {prop: "lns", name: "lns", exported: false, typ: byLiteral, tag: ""}, {prop: "lfs", name: "lfs", exported: false, typ: byFreq, tag: ""}]);
literalNode.init("compress/flate", [{prop: "literal", name: "literal", exported: false, typ: $Uint16, tag: ""}, {prop: "freq", name: "freq", exported: false, typ: $Int32, tag: ""}]);
levelInfo.init("compress/flate", [{prop: "level", name: "level", exported: false, typ: $Int32, tag: ""}, {prop: "lastFreq", name: "lastFreq", exported: false, typ: $Int32, tag: ""}, {prop: "nextCharFreq", name: "nextCharFreq", exported: false, typ: $Int32, tag: ""}, {prop: "nextPairFreq", name: "nextPairFreq", exported: false, typ: $Int32, tag: ""}, {prop: "needed", name: "needed", exported: false, typ: $Int32, tag: ""}]);
byLiteral.init(literalNode);
byFreq.init(literalNode);
Resetter.init([{prop: "Reset", name: "Reset", pkg: "", typ: $funcType([io.Reader, sliceType$4], [$error], false)}]);
huffmanDecoder.init("compress/flate", [{prop: "min", name: "min", exported: false, typ: $Int, tag: ""}, {prop: "chunks", name: "chunks", exported: false, typ: arrayType, tag: ""}, {prop: "links", name: "links", exported: false, typ: sliceType$1, tag: ""}, {prop: "linkMask", name: "linkMask", exported: false, typ: $Uint32, tag: ""}]);
Reader.init([{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$4], [$Int, $error], false)}, {prop: "ReadByte", name: "ReadByte", pkg: "", typ: $funcType([], [$Uint8, $error], false)}]);
decompressor.init("compress/flate", [{prop: "r", name: "r", exported: false, typ: Reader, tag: ""}, {prop: "roffset", name: "roffset", exported: false, typ: $Int64, tag: ""}, {prop: "b", name: "b", exported: false, typ: $Uint32, tag: ""}, {prop: "nb", name: "nb", exported: false, typ: $Uint, tag: ""}, {prop: "h1", name: "h1", exported: false, typ: huffmanDecoder, tag: ""}, {prop: "h2", name: "h2", exported: false, typ: huffmanDecoder, tag: ""}, {prop: "bits", name: "bits", exported: false, typ: ptrType$11, tag: ""}, {prop: "codebits", name: "codebits", exported: false, typ: ptrType$12, tag: ""}, {prop: "dict", name: "dict", exported: false, typ: dictDecoder, tag: ""}, {prop: "buf", name: "buf", exported: false, typ: arrayType$15, tag: ""}, {prop: "step", name: "step", exported: false, typ: funcType$3, tag: ""}, {prop: "stepState", name: "stepState", exported: false, typ: $Int, tag: ""}, {prop: "final$12", name: "final", exported: false, typ: $Bool, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}, {prop: "toRead", name: "toRead", exported: false, typ: sliceType$4, tag: ""}, {prop: "hl", name: "hl", exported: false, typ: ptrType$9, tag: ""}, {prop: "hd", name: "hd", exported: false, typ: ptrType$9, tag: ""}, {prop: "copyLen", name: "copyLen", exported: false, typ: $Int, tag: ""}, {prop: "copyDist", name: "copyDist", exported: false, typ: $Int, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = math.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sort.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strconv.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sync.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
huffOffset = ptrType.nil;
fixedOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
fixedHuffmanDecoder = new huffmanDecoder.ptr(0, arrayType.zero(), sliceType$1.nil, 0);
codeOrder = $toNativeArray($kindInt, [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
reverseByte = $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]);
fixedLiteralEncoding = generateFixedLiteralEncoding();
fixedOffsetEncoding = generateFixedOffsetEncoding();
$r = init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["encoding/binary"] = (function() {
var $pkg = {}, $init, errors, io, math, reflect, littleEndian, bigEndian, sliceType, overflow;
errors = $packages["errors"];
io = $packages["io"];
math = $packages["math"];
reflect = $packages["reflect"];
littleEndian = $pkg.littleEndian = $newType(0, $kindStruct, "binary.littleEndian", true, "encoding/binary", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
bigEndian = $pkg.bigEndian = $newType(0, $kindStruct, "binary.bigEndian", true, "encoding/binary", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
sliceType = $sliceType($Uint8);
littleEndian.ptr.prototype.Uint16 = function(b) {
var $ptr, b;
$unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]));
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;
};
littleEndian.prototype.Uint16 = function(b) { return this.$val.Uint16(b); };
littleEndian.ptr.prototype.PutUint16 = function(b, v) {
var $ptr, b, v;
$unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]));
(0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = ((v << 24 >>> 24)));
(1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = (((v >>> 8 << 16 >>> 16) << 24 >>> 24)));
};
littleEndian.prototype.PutUint16 = function(b, v) { return this.$val.PutUint16(b, v); };
littleEndian.ptr.prototype.Uint32 = function(b) {
var $ptr, b;
$unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]));
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;
};
littleEndian.prototype.Uint32 = function(b) { return this.$val.Uint32(b); };
littleEndian.ptr.prototype.PutUint32 = function(b, v) {
var $ptr, b, v;
$unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]));
(0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = ((v << 24 >>> 24)));
(1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = (((v >>> 8 >>> 0) << 24 >>> 24)));
(2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2] = (((v >>> 16 >>> 0) << 24 >>> 24)));
(3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3] = (((v >>> 24 >>> 0) << 24 >>> 24)));
};
littleEndian.prototype.PutUint32 = function(b, v) { return this.$val.PutUint32(b, v); };
littleEndian.ptr.prototype.Uint64 = function(b) {
var $ptr, 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;
$unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]));
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));
};
littleEndian.prototype.Uint64 = function(b) { return this.$val.Uint64(b); };
littleEndian.ptr.prototype.PutUint64 = function(b, v) {
var $ptr, b, v;
$unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]));
(0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = ((v.$low << 24 >>> 24)));
(1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = (($shiftRightUint64(v, 8).$low << 24 >>> 24)));
(2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2] = (($shiftRightUint64(v, 16).$low << 24 >>> 24)));
(3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3] = (($shiftRightUint64(v, 24).$low << 24 >>> 24)));
(4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4] = (($shiftRightUint64(v, 32).$low << 24 >>> 24)));
(5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5] = (($shiftRightUint64(v, 40).$low << 24 >>> 24)));
(6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6] = (($shiftRightUint64(v, 48).$low << 24 >>> 24)));
(7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7] = (($shiftRightUint64(v, 56).$low << 24 >>> 24)));
};
littleEndian.prototype.PutUint64 = function(b, v) { return this.$val.PutUint64(b, v); };
littleEndian.ptr.prototype.String = function() {
var $ptr;
return "LittleEndian";
};
littleEndian.prototype.String = function() { return this.$val.String(); };
littleEndian.ptr.prototype.GoString = function() {
var $ptr;
return "binary.LittleEndian";
};
littleEndian.prototype.GoString = function() { return this.$val.GoString(); };
bigEndian.ptr.prototype.Uint16 = function(b) {
var $ptr, b;
$unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]));
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;
};
bigEndian.prototype.Uint16 = function(b) { return this.$val.Uint16(b); };
bigEndian.ptr.prototype.PutUint16 = function(b, v) {
var $ptr, b, v;
$unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]));
(0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = (((v >>> 8 << 16 >>> 16) << 24 >>> 24)));
(1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = ((v << 24 >>> 24)));
};
bigEndian.prototype.PutUint16 = function(b, v) { return this.$val.PutUint16(b, v); };
bigEndian.ptr.prototype.Uint32 = function(b) {
var $ptr, b;
$unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]));
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;
};
bigEndian.prototype.Uint32 = function(b) { return this.$val.Uint32(b); };
bigEndian.ptr.prototype.PutUint32 = function(b, v) {
var $ptr, b, v;
$unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]));
(0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = (((v >>> 24 >>> 0) << 24 >>> 24)));
(1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = (((v >>> 16 >>> 0) << 24 >>> 24)));
(2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2] = (((v >>> 8 >>> 0) << 24 >>> 24)));
(3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3] = ((v << 24 >>> 24)));
};
bigEndian.prototype.PutUint32 = function(b, v) { return this.$val.PutUint32(b, v); };
bigEndian.ptr.prototype.Uint64 = function(b) {
var $ptr, 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;
$unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]));
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));
};
bigEndian.prototype.Uint64 = function(b) { return this.$val.Uint64(b); };
bigEndian.ptr.prototype.PutUint64 = function(b, v) {
var $ptr, b, v;
$unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]));
(0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = (($shiftRightUint64(v, 56).$low << 24 >>> 24)));
(1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = (($shiftRightUint64(v, 48).$low << 24 >>> 24)));
(2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2] = (($shiftRightUint64(v, 40).$low << 24 >>> 24)));
(3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3] = (($shiftRightUint64(v, 32).$low << 24 >>> 24)));
(4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4] = (($shiftRightUint64(v, 24).$low << 24 >>> 24)));
(5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5] = (($shiftRightUint64(v, 16).$low << 24 >>> 24)));
(6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6] = (($shiftRightUint64(v, 8).$low << 24 >>> 24)));
(7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7] = ((v.$low << 24 >>> 24)));
};
bigEndian.prototype.PutUint64 = function(b, v) { return this.$val.PutUint64(b, v); };
bigEndian.ptr.prototype.String = function() {
var $ptr;
return "BigEndian";
};
bigEndian.prototype.String = function() { return this.$val.String(); };
bigEndian.ptr.prototype.GoString = function() {
var $ptr;
return "binary.BigEndian";
};
bigEndian.prototype.GoString = function() { return this.$val.GoString(); };
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)}];
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)}];
littleEndian.init("", []);
bigEndian.init("", []);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = math.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = reflect.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$pkg.LittleEndian = new littleEndian.ptr();
$pkg.BigEndian = new bigEndian.ptr();
overflow = errors.New("binary: varint overflows a 64-bit integer");
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["hash"] = (function() {
var $pkg = {}, $init, io, Hash, sliceType;
io = $packages["io"];
Hash = $pkg.Hash = $newType(8, $kindInterface, "hash.Hash", true, "hash", true, null);
sliceType = $sliceType($Uint8);
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)}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = io.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["hash/crc32"] = (function() {
var $pkg = {}, $init, hash, sync, Table, slicing8Table, ptrType, ptrType$1, arrayType, arrayType$1, castagnoliTable, updateCastagnoli, ieeeTable8, ieeeArchImpl, updateIEEE, ieeeOnce, ieeeInit, Update, ChecksumIEEE, simpleMakeTable, simplePopulateTable, simpleUpdate, slicingMakeTable, slicingUpdate, archAvailableIEEE, archInitIEEE, archUpdateIEEE;
hash = $packages["hash"];
sync = $packages["sync"];
Table = $pkg.Table = $newType(1024, $kindArray, "crc32.Table", true, "hash/crc32", true, null);
slicing8Table = $pkg.slicing8Table = $newType(8192, $kindArray, "crc32.slicing8Table", true, "hash/crc32", false, null);
ptrType = $ptrType(Table);
ptrType$1 = $ptrType(slicing8Table);
arrayType = $arrayType($Uint32, 256);
arrayType$1 = $arrayType(Table, 8);
ieeeInit = function() {
var $ptr;
ieeeArchImpl = archAvailableIEEE();
if (ieeeArchImpl) {
archInitIEEE();
updateIEEE = archUpdateIEEE;
} else {
ieeeTable8 = slicingMakeTable(3988292384);
updateIEEE = (function(crc, p) {
var $ptr, crc, p;
return slicingUpdate(crc, ieeeTable8, p);
});
}
};
Update = function(crc, tab, p) {
var $ptr, _1, _r, _r$1, crc, p, tab, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_1 = tab;
/* */ if ($equal(_1, (castagnoliTable), Table)) { $s = 2; continue; }
/* */ if ($equal(_1, ($pkg.IEEETable), Table)) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if ($equal(_1, (castagnoliTable), Table)) { */ case 2:
_r = updateCastagnoli(crc, p); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } else if ($equal(_1, ($pkg.IEEETable), Table)) { */ case 3:
$r = ieeeOnce.Do(ieeeInit); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_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; }
$s = -1; return _r$1;
/* } else { */ case 4:
$s = -1; return simpleUpdate(crc, tab, p);
/* } */ case 5:
case 1:
$s = -1; return 0;
/* */ } return; } if ($f === undefined) { $f = { $blk: Update }; } $f.$ptr = $ptr; $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;
};
$pkg.Update = Update;
ChecksumIEEE = function(data) {
var $ptr, _r, data, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; data = $f.data; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = ieeeOnce.Do(ieeeInit); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r = updateIEEE(0, data); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: ChecksumIEEE }; } $f.$ptr = $ptr; $f._r = _r; $f.data = data; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.ChecksumIEEE = ChecksumIEEE;
simpleMakeTable = function(poly) {
var $ptr, poly, t;
t = arrayType.zero();
simplePopulateTable(poly, t);
return t;
};
simplePopulateTable = function(poly, t) {
var $ptr, crc, i, j, poly, t, y;
i = 0;
while (true) {
if (!(i < 256)) { break; }
crc = ((i >>> 0));
j = 0;
while (true) {
if (!(j < 8)) { break; }
if (((crc & 1) >>> 0) === 1) {
crc = (((crc >>> 1 >>> 0)) ^ poly) >>> 0;
} else {
crc = (y = (1), y < 32 ? (crc >>> y) : 0) >>> 0;
}
j = j + (1) >> 0;
}
t.nilCheck, ((i < 0 || i >= t.length) ? ($throwRuntimeError("index out of range"), undefined) : t[i] = crc);
i = i + (1) >> 0;
}
};
simpleUpdate = function(crc, tab, p) {
var $ptr, _i, _ref, crc, p, tab, v, x;
crc = ~crc >>> 0;
_ref = p;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
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;
_i++;
}
return ~crc >>> 0;
};
slicingMakeTable = function(poly) {
var $ptr, crc, i, j, poly, t, x, x$1, x$2, x$3;
t = arrayType$1.zero();
simplePopulateTable(poly, (t.nilCheck, t[0]));
i = 0;
while (true) {
if (!(i < 256)) { break; }
crc = (x = (t.nilCheck, t[0]), ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i]));
j = 1;
while (true) {
if (!(j < 8)) { break; }
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;
(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));
j = j + (1) >> 0;
}
i = i + (1) >> 0;
}
return t;
};
slicingUpdate = function(crc, tab, p) {
var $ptr, 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;
if (p.$length >= 16) {
crc = ~crc >>> 0;
while (true) {
if (!(p.$length > 8)) { break; }
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;
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;
p = $subslice(p, 8);
}
crc = ~crc >>> 0;
}
if (p.$length === 0) {
return crc;
}
return simpleUpdate(crc, (tab.nilCheck, tab[0]), p);
};
archAvailableIEEE = function() {
var $ptr;
return false;
};
archInitIEEE = function() {
var $ptr;
$panic(new $String("not available"));
};
archUpdateIEEE = function(crc, p) {
var $ptr, crc, p;
$panic(new $String("not available"));
};
Table.init($Uint32, 256);
slicing8Table.init(Table, 8);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = hash.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sync.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
castagnoliTable = ptrType.nil;
updateCastagnoli = $throwNilPointerError;
ieeeTable8 = ptrType$1.nil;
ieeeArchImpl = false;
updateIEEE = $throwNilPointerError;
ieeeOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
$pkg.IEEETable = simpleMakeTable(3988292384);
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["compress/gzip"] = (function() {
var $pkg = {}, $init, bufio, flate, binary, errors, fmt, crc32, io, time, Header, Reader, sliceType, ptrType, arrayType, ptrType$1, sliceType$1, le, noEOF, NewReader;
bufio = $packages["bufio"];
flate = $packages["compress/flate"];
binary = $packages["encoding/binary"];
errors = $packages["errors"];
fmt = $packages["fmt"];
crc32 = $packages["hash/crc32"];
io = $packages["io"];
time = $packages["time"];
Header = $pkg.Header = $newType(0, $kindStruct, "gzip.Header", true, "compress/gzip", true, function(Comment_, Extra_, ModTime_, Name_, OS_) {
this.$val = this;
if (arguments.length === 0) {
this.Comment = "";
this.Extra = sliceType.nil;
this.ModTime = new time.Time.ptr(new $Int64(0, 0), 0, ptrType.nil);
this.Name = "";
this.OS = 0;
return;
}
this.Comment = Comment_;
this.Extra = Extra_;
this.ModTime = ModTime_;
this.Name = Name_;
this.OS = OS_;
});
Reader = $pkg.Reader = $newType(0, $kindStruct, "gzip.Reader", true, "compress/gzip", true, function(Header_, r_, decompressor_, digest_, size_, buf_, err_, multistream_) {
this.$val = this;
if (arguments.length === 0) {
this.Header = new Header.ptr("", sliceType.nil, new time.Time.ptr(new $Int64(0, 0), 0, ptrType.nil), "", 0);
this.r = $ifaceNil;
this.decompressor = $ifaceNil;
this.digest = 0;
this.size = 0;
this.buf = arrayType.zero();
this.err = $ifaceNil;
this.multistream = false;
return;
}
this.Header = Header_;
this.r = r_;
this.decompressor = decompressor_;
this.digest = digest_;
this.size = size_;
this.buf = buf_;
this.err = err_;
this.multistream = multistream_;
});
sliceType = $sliceType($Uint8);
ptrType = $ptrType(time.Location);
arrayType = $arrayType($Uint8, 512);
ptrType$1 = $ptrType(Reader);
sliceType$1 = $sliceType($Int32);
noEOF = function(err) {
var $ptr, err;
if ($interfaceIsEqual(err, io.EOF)) {
return io.ErrUnexpectedEOF;
}
return err;
};
NewReader = function(r) {
var $ptr, _r, err, r, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
z = new Reader.ptr(new Header.ptr("", sliceType.nil, new time.Time.ptr(new $Int64(0, 0), 0, ptrType.nil), "", 0), $ifaceNil, $ifaceNil, 0, 0, arrayType.zero(), $ifaceNil, false);
_r = z.Reset(r); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$1.nil, err];
}
$s = -1; return [z, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: NewReader }; } $f.$ptr = $ptr; $f._r = _r; $f.err = err; $f.r = r; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.NewReader = NewReader;
Reader.ptr.prototype.Reset = function(r) {
var $ptr, _r, _tuple, _tuple$1, ok, r, rr, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
z = this;
Reader.copy(z, new Reader.ptr(new Header.ptr("", sliceType.nil, new time.Time.ptr(new $Int64(0, 0), 0, ptrType.nil), "", 0), $ifaceNil, z.decompressor, 0, 0, arrayType.zero(), $ifaceNil, true));
_tuple = $assertType(r, flate.Reader, true);
rr = _tuple[0];
ok = _tuple[1];
if (ok) {
z.r = rr;
} else {
z.r = bufio.NewReader(r);
}
_r = z.readHeader(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
Header.copy(z.Header, _tuple$1[0]);
z.err = _tuple$1[1];
$s = -1; return z.err;
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.Reset }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.Reset = function(r) { return this.$val.Reset(r); };
Reader.ptr.prototype.Multistream = function(ok) {
var $ptr, ok, z;
z = this;
z.multistream = ok;
};
Reader.prototype.Multistream = function(ok) { return this.$val.Multistream(ok); };
Reader.ptr.prototype.readString = function() {
var $ptr, _i, _r, _r$1, _ref, _tuple, err, i, needConv, s, v, x, x$1, x$2, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
z = this;
err = $ifaceNil;
needConv = false;
i = 0;
/* while (true) { */ case 1:
if (i >= 512) {
$s = -1; return ["", $pkg.ErrHeader];
}
_r = z.r.ReadByte(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
(x = z.buf, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i] = _tuple[0]));
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return ["", err];
}
if ((x$1 = z.buf, ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i])) > 127) {
needConv = true;
}
/* */ if ((x$2 = z.buf, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i])) === 0) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if ((x$2 = z.buf, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i])) === 0) { */ case 4:
_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; }
z.digest = _r$1;
if (needConv) {
s = $makeSlice(sliceType$1, 0, i);
_ref = $subslice(new sliceType(z.buf), 0, i);
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
s = $append(s, ((v >> 0)));
_i++;
}
$s = -1; return [($runesToString(s)), $ifaceNil];
}
$s = -1; return [($bytesToString($subslice(new sliceType(z.buf), 0, i))), $ifaceNil];
/* } */ case 5:
i = i + (1) >> 0;
/* } */ $s = 1; continue; case 2:
$s = -1; return ["", $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.readString }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.readString = function() { return this.$val.readString(); };
Reader.ptr.prototype.readHeader = function() {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
hdr = new Header.ptr("", sliceType.nil, new time.Time.ptr(new $Int64(0, 0), 0, ptrType.nil), "", 0);
err = $ifaceNil;
z = this;
_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; }
_tuple = _r;
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = $clone(hdr, Header);
_tmp$1 = err;
Header.copy(hdr, _tmp);
err = _tmp$1;
$s = -1; return [hdr, err];
}
if (!((z.buf[0] === 31)) || !((z.buf[1] === 139)) || !((z.buf[2] === 8))) {
_tmp$2 = $clone(hdr, Header);
_tmp$3 = $pkg.ErrHeader;
Header.copy(hdr, _tmp$2);
err = _tmp$3;
$s = -1; return [hdr, err];
}
flg = z.buf[3];
t = (new $Int64(0, $clone(le, binary.littleEndian).Uint32($subslice(new sliceType(z.buf), 4, 8))));
if ((t.$high > 0 || (t.$high === 0 && t.$low > 0))) {
time.Time.copy(hdr.ModTime, time.Unix(t, new $Int64(0, 0)));
}
hdr.OS = z.buf[9];
_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; }
z.digest = _r$1;
/* */ if (!((((flg & 4) >>> 0) === 0))) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!((((flg & 4) >>> 0) === 0))) { */ case 3:
_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; }
_tuple$1 = _r$2;
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$4 = $clone(hdr, Header);
_tmp$5 = noEOF(err);
Header.copy(hdr, _tmp$4);
err = _tmp$5;
$s = -1; return [hdr, err];
}
_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; }
z.digest = _r$3;
data = $makeSlice(sliceType, $clone(le, binary.littleEndian).Uint16($subslice(new sliceType(z.buf), 0, 2)));
_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; }
_tuple$2 = _r$4;
err = _tuple$2[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$6 = $clone(hdr, Header);
_tmp$7 = noEOF(err);
Header.copy(hdr, _tmp$6);
err = _tmp$7;
$s = -1; return [hdr, err];
}
_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; }
z.digest = _r$5;
hdr.Extra = data;
/* } */ case 4:
s = "";
/* */ if (!((((flg & 8) >>> 0) === 0))) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (!((((flg & 8) >>> 0) === 0))) { */ case 9:
_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; }
_tuple$3 = _r$6;
s = _tuple$3[0];
err = _tuple$3[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$8 = $clone(hdr, Header);
_tmp$9 = err;
Header.copy(hdr, _tmp$8);
err = _tmp$9;
$s = -1; return [hdr, err];
}
hdr.Name = s;
/* } */ case 10:
/* */ if (!((((flg & 16) >>> 0) === 0))) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (!((((flg & 16) >>> 0) === 0))) { */ case 12:
_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; }
_tuple$4 = _r$7;
s = _tuple$4[0];
err = _tuple$4[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$10 = $clone(hdr, Header);
_tmp$11 = err;
Header.copy(hdr, _tmp$10);
err = _tmp$11;
$s = -1; return [hdr, err];
}
hdr.Comment = s;
/* } */ case 13:
/* */ if (!((((flg & 2) >>> 0) === 0))) { $s = 15; continue; }
/* */ $s = 16; continue;
/* if (!((((flg & 2) >>> 0) === 0))) { */ case 15:
_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; }
_tuple$5 = _r$8;
err = _tuple$5[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$12 = $clone(hdr, Header);
_tmp$13 = noEOF(err);
Header.copy(hdr, _tmp$12);
err = _tmp$13;
$s = -1; return [hdr, err];
}
digest = $clone(le, binary.littleEndian).Uint16($subslice(new sliceType(z.buf), 0, 2));
if (!((digest === ((z.digest << 16 >>> 16))))) {
_tmp$14 = $clone(hdr, Header);
_tmp$15 = $pkg.ErrHeader;
Header.copy(hdr, _tmp$14);
err = _tmp$15;
$s = -1; return [hdr, err];
}
/* } */ case 16:
z.digest = 0;
/* */ if ($interfaceIsEqual(z.decompressor, $ifaceNil)) { $s = 18; continue; }
/* */ $s = 19; continue;
/* if ($interfaceIsEqual(z.decompressor, $ifaceNil)) { */ case 18:
_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; }
z.decompressor = _r$9;
$s = 20; continue;
/* } else { */ case 19:
_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; }
_r$10;
/* } */ case 20:
_tmp$16 = $clone(hdr, Header);
_tmp$17 = $ifaceNil;
Header.copy(hdr, _tmp$16);
err = _tmp$17;
$s = -1; return [hdr, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.readHeader }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.readHeader = function() { return this.$val.readHeader(); };
Reader.ptr.prototype.Read = function(p) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
z = this;
if (!($interfaceIsEqual(z.err, $ifaceNil))) {
_tmp = 0;
_tmp$1 = z.err;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
_r = z.decompressor.Read(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
z.err = _tuple[1];
_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; }
z.digest = _r$1;
z.size = z.size + (((n >>> 0))) >>> 0;
if (!($interfaceIsEqual(z.err, io.EOF))) {
_tmp$2 = n;
_tmp$3 = z.err;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
}
_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; }
_tuple$1 = _r$2;
err$1 = _tuple$1[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
z.err = noEOF(err$1);
_tmp$4 = n;
_tmp$5 = z.err;
n = _tmp$4;
err = _tmp$5;
$s = -1; return [n, err];
}
digest = $clone(le, binary.littleEndian).Uint32($subslice(new sliceType(z.buf), 0, 4));
size = $clone(le, binary.littleEndian).Uint32($subslice(new sliceType(z.buf), 4, 8));
if (!((digest === z.digest)) || !((size === z.size))) {
z.err = $pkg.ErrChecksum;
_tmp$6 = n;
_tmp$7 = z.err;
n = _tmp$6;
err = _tmp$7;
$s = -1; return [n, err];
}
_tmp$8 = 0;
_tmp$9 = 0;
z.digest = _tmp$8;
z.size = _tmp$9;
if (!z.multistream) {
_tmp$10 = n;
_tmp$11 = io.EOF;
n = _tmp$10;
err = _tmp$11;
$s = -1; return [n, err];
}
z.err = $ifaceNil;
_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; }
_tuple$2 = _r$3;
z.err = _tuple$2[1];
if (!($interfaceIsEqual(z.err, $ifaceNil))) {
_tmp$12 = n;
_tmp$13 = z.err;
n = _tmp$12;
err = _tmp$13;
$s = -1; return [n, err];
}
if (n > 0) {
_tmp$14 = n;
_tmp$15 = $ifaceNil;
n = _tmp$14;
err = _tmp$15;
$s = -1; return [n, err];
}
_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; }
_tuple$3 = _r$4;
n = _tuple$3[0];
err = _tuple$3[1];
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.Read }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.Read = function(p) { return this.$val.Read(p); };
Reader.ptr.prototype.Close = function() {
var $ptr, _r, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
z = this;
_r = z.decompressor.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.Close }; } $f.$ptr = $ptr; $f._r = _r; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
};
Reader.prototype.Close = function() { return this.$val.Close(); };
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)}];
Header.init("", [{prop: "Comment", name: "Comment", exported: true, typ: $String, tag: ""}, {prop: "Extra", name: "Extra", exported: true, typ: sliceType, tag: ""}, {prop: "ModTime", name: "ModTime", exported: true, typ: time.Time, tag: ""}, {prop: "Name", name: "Name", exported: true, typ: $String, tag: ""}, {prop: "OS", name: "OS", exported: true, typ: $Uint8, tag: ""}]);
Reader.init("compress/gzip", [{prop: "Header", name: "", exported: true, typ: Header, tag: ""}, {prop: "r", name: "r", exported: false, typ: flate.Reader, tag: ""}, {prop: "decompressor", name: "decompressor", exported: false, typ: io.ReadCloser, tag: ""}, {prop: "digest", name: "digest", exported: false, typ: $Uint32, tag: ""}, {prop: "size", name: "size", exported: false, typ: $Uint32, tag: ""}, {prop: "buf", name: "buf", exported: false, typ: arrayType, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}, {prop: "multistream", name: "multistream", exported: false, typ: $Bool, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = flate.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = binary.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = errors.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = fmt.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = crc32.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = time.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$pkg.ErrChecksum = errors.New("gzip: invalid checksum");
$pkg.ErrHeader = errors.New("gzip: invalid header");
le = $clone(binary.LittleEndian, binary.littleEndian);
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["container/list"] = (function() {
var $pkg = {}, $init, Element, List, ptrType, ptrType$1, New;
Element = $pkg.Element = $newType(0, $kindStruct, "list.Element", true, "container/list", true, function(next_, prev_, list_, Value_) {
this.$val = this;
if (arguments.length === 0) {
this.next = ptrType$1.nil;
this.prev = ptrType$1.nil;
this.list = ptrType.nil;
this.Value = $ifaceNil;
return;
}
this.next = next_;
this.prev = prev_;
this.list = list_;
this.Value = Value_;
});
List = $pkg.List = $newType(0, $kindStruct, "list.List", true, "container/list", true, function(root_, len_) {
this.$val = this;
if (arguments.length === 0) {
this.root = new Element.ptr(ptrType$1.nil, ptrType$1.nil, ptrType.nil, $ifaceNil);
this.len = 0;
return;
}
this.root = root_;
this.len = len_;
});
ptrType = $ptrType(List);
ptrType$1 = $ptrType(Element);
Element.ptr.prototype.Next = function() {
var $ptr, e, p;
e = this;
p = e.next;
if (!(e.list === ptrType.nil) && !(p === e.list.root)) {
return p;
}
return ptrType$1.nil;
};
Element.prototype.Next = function() { return this.$val.Next(); };
Element.ptr.prototype.Prev = function() {
var $ptr, e, p;
e = this;
p = e.prev;
if (!(e.list === ptrType.nil) && !(p === e.list.root)) {
return p;
}
return ptrType$1.nil;
};
Element.prototype.Prev = function() { return this.$val.Prev(); };
List.ptr.prototype.Init = function() {
var $ptr, l;
l = this;
l.root.next = l.root;
l.root.prev = l.root;
l.len = 0;
return l;
};
List.prototype.Init = function() { return this.$val.Init(); };
New = function() {
var $ptr;
return new List.ptr(new Element.ptr(ptrType$1.nil, ptrType$1.nil, ptrType.nil, $ifaceNil), 0).Init();
};
$pkg.New = New;
List.ptr.prototype.Len = function() {
var $ptr, l;
l = this;
return l.len;
};
List.prototype.Len = function() { return this.$val.Len(); };
List.ptr.prototype.Front = function() {
var $ptr, l;
l = this;
if (l.len === 0) {
return ptrType$1.nil;
}
return l.root.next;
};
List.prototype.Front = function() { return this.$val.Front(); };
List.ptr.prototype.Back = function() {
var $ptr, l;
l = this;
if (l.len === 0) {
return ptrType$1.nil;
}
return l.root.prev;
};
List.prototype.Back = function() { return this.$val.Back(); };
List.ptr.prototype.lazyInit = function() {
var $ptr, l;
l = this;
if (l.root.next === ptrType$1.nil) {
l.Init();
}
};
List.prototype.lazyInit = function() { return this.$val.lazyInit(); };
List.ptr.prototype.insert = function(e, at) {
var $ptr, at, e, l, n;
l = this;
n = at.next;
at.next = e;
e.prev = at;
e.next = n;
n.prev = e;
e.list = l;
l.len = l.len + (1) >> 0;
return e;
};
List.prototype.insert = function(e, at) { return this.$val.insert(e, at); };
List.ptr.prototype.insertValue = function(v, at) {
var $ptr, at, l, v;
l = this;
return l.insert(new Element.ptr(ptrType$1.nil, ptrType$1.nil, ptrType.nil, v), at);
};
List.prototype.insertValue = function(v, at) { return this.$val.insertValue(v, at); };
List.ptr.prototype.remove = function(e) {
var $ptr, e, l;
l = this;
e.prev.next = e.next;
e.next.prev = e.prev;
e.next = ptrType$1.nil;
e.prev = ptrType$1.nil;
e.list = ptrType.nil;
l.len = l.len - (1) >> 0;
return e;
};
List.prototype.remove = function(e) { return this.$val.remove(e); };
List.ptr.prototype.Remove = function(e) {
var $ptr, e, l;
l = this;
if (e.list === l) {
l.remove(e);
}
return e.Value;
};
List.prototype.Remove = function(e) { return this.$val.Remove(e); };
List.ptr.prototype.PushFront = function(v) {
var $ptr, l, v;
l = this;
l.lazyInit();
return l.insertValue(v, l.root);
};
List.prototype.PushFront = function(v) { return this.$val.PushFront(v); };
List.ptr.prototype.PushBack = function(v) {
var $ptr, l, v;
l = this;
l.lazyInit();
return l.insertValue(v, l.root.prev);
};
List.prototype.PushBack = function(v) { return this.$val.PushBack(v); };
List.ptr.prototype.InsertBefore = function(v, mark) {
var $ptr, l, mark, v;
l = this;
if (!(mark.list === l)) {
return ptrType$1.nil;
}
return l.insertValue(v, mark.prev);
};
List.prototype.InsertBefore = function(v, mark) { return this.$val.InsertBefore(v, mark); };
List.ptr.prototype.InsertAfter = function(v, mark) {
var $ptr, l, mark, v;
l = this;
if (!(mark.list === l)) {
return ptrType$1.nil;
}
return l.insertValue(v, mark);
};
List.prototype.InsertAfter = function(v, mark) { return this.$val.InsertAfter(v, mark); };
List.ptr.prototype.MoveToFront = function(e) {
var $ptr, e, l;
l = this;
if (!(e.list === l) || l.root.next === e) {
return;
}
l.insert(l.remove(e), l.root);
};
List.prototype.MoveToFront = function(e) { return this.$val.MoveToFront(e); };
List.ptr.prototype.MoveToBack = function(e) {
var $ptr, e, l;
l = this;
if (!(e.list === l) || l.root.prev === e) {
return;
}
l.insert(l.remove(e), l.root.prev);
};
List.prototype.MoveToBack = function(e) { return this.$val.MoveToBack(e); };
List.ptr.prototype.MoveBefore = function(e, mark) {
var $ptr, e, l, mark;
l = this;
if (!(e.list === l) || e === mark || !(mark.list === l)) {
return;
}
l.insert(l.remove(e), mark.prev);
};
List.prototype.MoveBefore = function(e, mark) { return this.$val.MoveBefore(e, mark); };
List.ptr.prototype.MoveAfter = function(e, mark) {
var $ptr, e, l, mark;
l = this;
if (!(e.list === l) || e === mark || !(mark.list === l)) {
return;
}
l.insert(l.remove(e), mark);
};
List.prototype.MoveAfter = function(e, mark) { return this.$val.MoveAfter(e, mark); };
List.ptr.prototype.PushBackList = function(other) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, e, i, l, other;
l = this;
l.lazyInit();
_tmp = other.Len();
_tmp$1 = other.Front();
i = _tmp;
e = _tmp$1;
while (true) {
if (!(i > 0)) { break; }
l.insertValue(e.Value, l.root.prev);
_tmp$2 = i - 1 >> 0;
_tmp$3 = e.Next();
i = _tmp$2;
e = _tmp$3;
}
};
List.prototype.PushBackList = function(other) { return this.$val.PushBackList(other); };
List.ptr.prototype.PushFrontList = function(other) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, e, i, l, other;
l = this;
l.lazyInit();
_tmp = other.Len();
_tmp$1 = other.Back();
i = _tmp;
e = _tmp$1;
while (true) {
if (!(i > 0)) { break; }
l.insertValue(e.Value, l.root);
_tmp$2 = i - 1 >> 0;
_tmp$3 = e.Prev();
i = _tmp$2;
e = _tmp$3;
}
};
List.prototype.PushFrontList = function(other) { return this.$val.PushFrontList(other); };
ptrType$1.methods = [{prop: "Next", name: "Next", pkg: "", typ: $funcType([], [ptrType$1], false)}, {prop: "Prev", name: "Prev", pkg: "", typ: $funcType([], [ptrType$1], false)}];
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)}];
Element.init("container/list", [{prop: "next", name: "next", exported: false, typ: ptrType$1, tag: ""}, {prop: "prev", name: "prev", exported: false, typ: ptrType$1, tag: ""}, {prop: "list", name: "list", exported: false, typ: ptrType, tag: ""}, {prop: "Value", name: "Value", exported: true, typ: $emptyInterface, tag: ""}]);
List.init("container/list", [{prop: "root", name: "root", exported: false, typ: Element, tag: ""}, {prop: "len", name: "len", exported: false, typ: $Int, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["math/big"] = (function() {
var $pkg = {}, $init, bytes, binary, errors, fmt, nosync, io, math, rand, strconv, strings, Word, Int, byteReader, nat, divisor, sliceType, arrayType, structType, sliceType$1, sliceType$2, ptrType$1, ptrType$3, ptrType$4, arrayType$1, sliceType$3, ptrType$6, intOne, natOne, natTwo, karatsubaThreshold, natPool, deBruijn32Lookup, deBruijn64Lookup, leafSize, cacheBase10, mulWW, divWW, addVV, subVV, addVW, subVW, shlVU, shrVU, mulAddVWW, addMulVVW, divWVW, bitLen, addWW_g, subWW_g, mulWW_g, mulAddWWW_g, bitLen_g, nlz, divWW_g, addVV_g, subVV_g, addVW_g, subVW_g, shlVU_g, shrVU_g, mulAddVWW_g, addMulVVW_g, divWVW_g, NewInt, low64, Jacobi, writeMultiple, scanSign, basicMul, karatsubaAdd, karatsubaSub, karatsuba, alias, addAt, max, karatsubaLen, getNat, putNat, trailingZeroBits, greaterThan, maxPow, pow, divisors;
bytes = $packages["bytes"];
binary = $packages["encoding/binary"];
errors = $packages["errors"];
fmt = $packages["fmt"];
nosync = $packages["github.com/gopherjs/gopherjs/nosync"];
io = $packages["io"];
math = $packages["math"];
rand = $packages["math/rand"];
strconv = $packages["strconv"];
strings = $packages["strings"];
Word = $pkg.Word = $newType(4, $kindUintptr, "big.Word", true, "math/big", true, null);
Int = $pkg.Int = $newType(0, $kindStruct, "big.Int", true, "math/big", true, function(neg_, abs_) {
this.$val = this;
if (arguments.length === 0) {
this.neg = false;
this.abs = nat.nil;
return;
}
this.neg = neg_;
this.abs = abs_;
});
byteReader = $pkg.byteReader = $newType(0, $kindStruct, "big.byteReader", true, "math/big", false, function(ScanState_) {
this.$val = this;
if (arguments.length === 0) {
this.ScanState = $ifaceNil;
return;
}
this.ScanState = ScanState_;
});
nat = $pkg.nat = $newType(12, $kindSlice, "big.nat", true, "math/big", false, null);
divisor = $pkg.divisor = $newType(0, $kindStruct, "big.divisor", true, "math/big", false, function(bbb_, nbits_, ndigits_) {
this.$val = this;
if (arguments.length === 0) {
this.bbb = nat.nil;
this.nbits = 0;
this.ndigits = 0;
return;
}
this.bbb = bbb_;
this.nbits = nbits_;
this.ndigits = ndigits_;
});
sliceType = $sliceType($emptyInterface);
arrayType = $arrayType(divisor, 64);
structType = $structType("math/big", [{prop: "Mutex", name: "", exported: true, typ: nosync.Mutex, tag: ""}, {prop: "table", name: "table", exported: false, typ: arrayType, tag: ""}]);
sliceType$1 = $sliceType($Uint8);
sliceType$2 = $sliceType(Word);
ptrType$1 = $ptrType(Int);
ptrType$3 = $ptrType(Word);
ptrType$4 = $ptrType(nat);
arrayType$1 = $arrayType(nat, 16);
sliceType$3 = $sliceType(divisor);
ptrType$6 = $ptrType(rand.Rand);
mulWW = function(x, y) {
var $ptr, _tuple, x, y, z0, z1;
z1 = 0;
z0 = 0;
_tuple = mulWW_g(x, y);
z1 = _tuple[0];
z0 = _tuple[1];
return [z1, z0];
};
divWW = function(x1, x0, y) {
var $ptr, _tuple, q, r, x0, x1, y;
q = 0;
r = 0;
_tuple = divWW_g(x1, x0, y);
q = _tuple[0];
r = _tuple[1];
return [q, r];
};
addVV = function(z, x, y) {
var $ptr, c, x, y, z;
c = 0;
c = addVV_g(z, x, y);
return c;
};
subVV = function(z, x, y) {
var $ptr, c, x, y, z;
c = 0;
c = subVV_g(z, x, y);
return c;
};
addVW = function(z, x, y) {
var $ptr, c, x, y, z;
c = 0;
c = addVW_g(z, x, y);
return c;
};
subVW = function(z, x, y) {
var $ptr, c, x, y, z;
c = 0;
c = subVW_g(z, x, y);
return c;
};
shlVU = function(z, x, s) {
var $ptr, c, s, x, z;
c = 0;
c = shlVU_g(z, x, s);
return c;
};
shrVU = function(z, x, s) {
var $ptr, c, s, x, z;
c = 0;
c = shrVU_g(z, x, s);
return c;
};
mulAddVWW = function(z, x, y, r) {
var $ptr, c, r, x, y, z;
c = 0;
c = mulAddVWW_g(z, x, y, r);
return c;
};
addMulVVW = function(z, x, y) {
var $ptr, c, x, y, z;
c = 0;
c = addMulVVW_g(z, x, y);
return c;
};
divWVW = function(z, xn, x, y) {
var $ptr, r, x, xn, y, z;
r = 0;
r = divWVW_g(z, xn, x, y);
return r;
};
bitLen = function(x) {
var $ptr, n, x;
n = 0;
n = bitLen_g(x);
return n;
};
addWW_g = function(x, y, c) {
var $ptr, c, x, y, yc, z0, z1;
z1 = 0;
z0 = 0;
yc = y + c >>> 0;
z0 = x + yc >>> 0;
if (z0 < x || yc < y) {
z1 = 1;
}
return [z1, z0];
};
subWW_g = function(x, y, c) {
var $ptr, c, x, y, yc, z0, z1;
z1 = 0;
z0 = 0;
yc = y + c >>> 0;
z0 = x - yc >>> 0;
if (z0 > x || yc < y) {
z1 = 1;
}
return [z1, z0];
};
mulWW_g = function(x, y) {
var $ptr, t, w0, w1, w2, x, x0, x1, y, y0, y1, z0, z1;
z1 = 0;
z0 = 0;
x0 = (x & 65535) >>> 0;
x1 = x >>> 16 >>> 0;
y0 = (y & 65535) >>> 0;
y1 = y >>> 16 >>> 0;
w0 = $imul(x0, y0) >>> 0;
t = ($imul(x1, y0) >>> 0) + (w0 >>> 16 >>> 0) >>> 0;
w1 = (t & 65535) >>> 0;
w2 = t >>> 16 >>> 0;
w1 = w1 + (($imul(x0, y1) >>> 0)) >>> 0;
z1 = (($imul(x1, y1) >>> 0) + w2 >>> 0) + (w1 >>> 16 >>> 0) >>> 0;
z0 = $imul(x, y) >>> 0;
return [z1, z0];
};
mulAddWWW_g = function(x, y, c) {
var $ptr, _tuple, c, x, y, z0, z1, zz0;
z1 = 0;
z0 = 0;
_tuple = mulWW_g(x, y);
z1 = _tuple[0];
zz0 = _tuple[1];
z0 = zz0 + c >>> 0;
if (z0 < zz0) {
z1 = z1 + (1) >>> 0;
}
return [z1, z0];
};
bitLen_g = function(x) {
var $ptr, n, x, y, y$1, y$2, y$3;
n = 0;
while (true) {
if (!(x >= 32768)) { break; }
n = n + (16) >> 0;
x = (y = (16), y < 32 ? (x >>> y) : 0) >>> 0;
}
if (x >= 128) {
x = (y$1 = (8), y$1 < 32 ? (x >>> y$1) : 0) >>> 0;
n = n + (8) >> 0;
}
if (x >= 8) {
x = (y$2 = (4), y$2 < 32 ? (x >>> y$2) : 0) >>> 0;
n = n + (4) >> 0;
}
if (x >= 2) {
x = (y$3 = (2), y$3 < 32 ? (x >>> y$3) : 0) >>> 0;
n = n + (2) >> 0;
}
if (x >= 1) {
n = n + (1) >> 0;
}
return n;
};
nlz = function(x) {
var $ptr, x;
return (((32 - bitLen(x) >> 0) >>> 0));
};
divWW_g = function(u1, u0, v) {
var $ptr, _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;
q = 0;
r = 0;
if (u1 >= v) {
_tmp = 4294967295;
_tmp$1 = 4294967295;
q = _tmp;
r = _tmp$1;
return [q, r];
}
s = nlz(v);
v = (y = (s), y < 32 ? (v << y) : 0) >>> 0;
vn1 = v >>> 16 >>> 0;
vn0 = (v & 65535) >>> 0;
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;
un10 = (y$3 = s, y$3 < 32 ? (u0 << y$3) : 0) >>> 0;
un1 = un10 >>> 16 >>> 0;
un0 = (un10 & 65535) >>> 0;
q1 = (_q = un32 / vn1, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
rhat = un32 - ($imul(q1, vn1) >>> 0) >>> 0;
while (true) {
if (!(q1 >= 65536 || ($imul(q1, vn0) >>> 0) > (($imul(65536, rhat) >>> 0) + un1 >>> 0))) { break; }
q1 = q1 - (1) >>> 0;
rhat = rhat + (vn1) >>> 0;
if (rhat >= 65536) {
break;
}
}
un21 = (($imul(un32, 65536) >>> 0) + un1 >>> 0) - ($imul(q1, v) >>> 0) >>> 0;
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"));
rhat = un21 - ($imul(q0, vn1) >>> 0) >>> 0;
while (true) {
if (!(q0 >= 65536 || ($imul(q0, vn0) >>> 0) > (($imul(65536, rhat) >>> 0) + un0 >>> 0))) { break; }
q0 = q0 - (1) >>> 0;
rhat = rhat + (vn1) >>> 0;
if (rhat >= 65536) {
break;
}
}
_tmp$2 = ($imul(q1, 65536) >>> 0) + q0 >>> 0;
_tmp$3 = (y$4 = s, y$4 < 32 ? ((((($imul(un21, 65536) >>> 0) + un0 >>> 0) - ($imul(q0, v) >>> 0) >>> 0)) >>> y$4) : 0) >>> 0;
q = _tmp$2;
r = _tmp$3;
return [q, r];
};
addVV_g = function(z, x, y) {
var $ptr, _i, _i$1, _ref, _ref$1, _tuple, c, i, i$1, x, xi, y, yi, z, zi;
c = 0;
if (false) {
_ref = z;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
_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);
c = _tuple[0];
((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = _tuple[1]);
_i++;
}
return c;
}
_ref$1 = $subslice(x, 0, z.$length);
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
i$1 = _i$1;
xi = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
yi = ((i$1 < 0 || i$1 >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i$1]);
zi = (xi + yi >>> 0) + c >>> 0;
((i$1 < 0 || i$1 >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i$1] = zi);
c = (((((xi & yi) >>> 0) | (((((xi | yi) >>> 0)) & ~zi) >>> 0)) >>> 0)) >>> 31 >>> 0;
_i$1++;
}
return c;
};
subVV_g = function(z, x, y) {
var $ptr, _i, _i$1, _ref, _ref$1, _tuple, c, i, i$1, x, xi, y, yi, z, zi;
c = 0;
if (false) {
_ref = z;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
_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);
c = _tuple[0];
((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = _tuple[1]);
_i++;
}
return c;
}
_ref$1 = $subslice(x, 0, z.$length);
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
i$1 = _i$1;
xi = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
yi = ((i$1 < 0 || i$1 >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i$1]);
zi = (xi - yi >>> 0) - c >>> 0;
((i$1 < 0 || i$1 >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i$1] = zi);
c = (((((yi & ~xi) >>> 0) | (((((yi | (~xi >>> 0)) >>> 0)) & zi) >>> 0)) >>> 0)) >>> 31 >>> 0;
_i$1++;
}
return c;
};
addVW_g = function(z, x, y) {
var $ptr, _i, _i$1, _ref, _ref$1, _tuple, c, i, i$1, x, xi, y, z, zi;
c = 0;
if (false) {
c = y;
_ref = z;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
_tuple = addWW_g(((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]), c, 0);
c = _tuple[0];
((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = _tuple[1]);
_i++;
}
return c;
}
c = y;
_ref$1 = $subslice(x, 0, z.$length);
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
i$1 = _i$1;
xi = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
zi = xi + c >>> 0;
((i$1 < 0 || i$1 >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i$1] = zi);
c = ((xi & ~zi) >>> 0) >>> 31 >>> 0;
_i$1++;
}
return c;
};
subVW_g = function(z, x, y) {
var $ptr, _i, _i$1, _ref, _ref$1, _tuple, c, i, i$1, x, xi, y, z, zi;
c = 0;
if (false) {
c = y;
_ref = z;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
_tuple = subWW_g(((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]), c, 0);
c = _tuple[0];
((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = _tuple[1]);
_i++;
}
return c;
}
c = y;
_ref$1 = $subslice(x, 0, z.$length);
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
i$1 = _i$1;
xi = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
zi = xi - c >>> 0;
((i$1 < 0 || i$1 >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i$1] = zi);
c = (((zi & ~xi) >>> 0)) >>> 31 >>> 0;
_i$1++;
}
return c;
};
shlVU_g = function(z, x, s) {
var $C5$9D, $ptr, c, i, n, s, w, w1, x, x$1, x$2, y, y$1, y$2, y$3, z;
c = 0;
n = z.$length;
if (n > 0) {
$C5$9D = 32 - s >>> 0;
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]));
c = (y = $C5$9D, y < 32 ? (w1 >>> y) : 0) >>> 0;
i = n - 1 >> 0;
while (true) {
if (!(i > 0)) { break; }
w = w1;
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]));
((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));
i = i - (1) >> 0;
}
(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));
}
return c;
};
shrVU_g = function(z, x, s) {
var $C5$9D, $ptr, c, i, n, s, w, w1, x, x$1, x$2, y, y$1, y$2, y$3, z;
c = 0;
n = z.$length;
if (n > 0) {
$C5$9D = 32 - s >>> 0;
w1 = (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]);
c = (y = $C5$9D, y < 32 ? (w1 << y) : 0) >>> 0;
i = 0;
while (true) {
if (!(i < (n - 1 >> 0))) { break; }
w = w1;
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]));
((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));
i = i + (1) >> 0;
}
(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)));
}
return c;
};
mulAddVWW_g = function(z, x, y, r) {
var $ptr, _i, _ref, _tuple, c, i, r, x, y, z;
c = 0;
c = r;
_ref = z;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
_tuple = mulAddWWW_g(((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]), y, c);
c = _tuple[0];
((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = _tuple[1]);
_i++;
}
return c;
};
addMulVVW_g = function(z, x, y) {
var $ptr, _i, _ref, _tuple, _tuple$1, c, i, x, y, z, z0, z1;
c = 0;
_ref = z;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
_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]));
z1 = _tuple[0];
z0 = _tuple[1];
_tuple$1 = addWW_g(z0, c, 0);
c = _tuple$1[0];
((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = _tuple$1[1]);
c = c + (z1) >>> 0;
_i++;
}
return c;
};
divWVW_g = function(z, xn, x, y) {
var $ptr, _tuple, i, r, x, xn, y, z;
r = 0;
r = xn;
i = z.$length - 1 >> 0;
while (true) {
if (!(i >= 0)) { break; }
_tuple = divWW_g(r, ((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] = _tuple[0]);
r = _tuple[1];
i = i - (1) >> 0;
}
return r;
};
Int.ptr.prototype.Sign = function() {
var $ptr, x;
x = this;
if (x.abs.$length === 0) {
return 0;
}
if (x.neg) {
return -1;
}
return 1;
};
Int.prototype.Sign = function() { return this.$val.Sign(); };
Int.ptr.prototype.SetInt64 = function(x) {
var $ptr, neg, x, z;
z = this;
neg = false;
if ((x.$high < 0 || (x.$high === 0 && x.$low < 0))) {
neg = true;
x = new $Int64(-x.$high, -x.$low);
}
z.abs = z.abs.setUint64((new $Uint64(x.$high, x.$low)));
z.neg = neg;
return z;
};
Int.prototype.SetInt64 = function(x) { return this.$val.SetInt64(x); };
Int.ptr.prototype.SetUint64 = function(x) {
var $ptr, x, z;
z = this;
z.abs = z.abs.setUint64(x);
z.neg = false;
return z;
};
Int.prototype.SetUint64 = function(x) { return this.$val.SetUint64(x); };
NewInt = function(x) {
var $ptr, x;
return new Int.ptr(false, nat.nil).SetInt64(x);
};
$pkg.NewInt = NewInt;
Int.ptr.prototype.Set = function(x) {
var $ptr, x, z;
z = this;
if (!(z === x)) {
z.abs = z.abs.set(x.abs);
z.neg = x.neg;
}
return z;
};
Int.prototype.Set = function(x) { return this.$val.Set(x); };
Int.ptr.prototype.Bits = function() {
var $ptr, x, x$1;
x = this;
return (x$1 = x.abs, $subslice(new sliceType$2(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length));
};
Int.prototype.Bits = function() { return this.$val.Bits(); };
Int.ptr.prototype.SetBits = function(abs) {
var $ptr, abs, z;
z = this;
z.abs = ($subslice(new nat(abs.$array), abs.$offset, abs.$offset + abs.$length)).norm();
z.neg = false;
return z;
};
Int.prototype.SetBits = function(abs) { return this.$val.SetBits(abs); };
Int.ptr.prototype.Abs = function(x) {
var $ptr, x, z;
z = this;
z.Set(x);
z.neg = false;
return z;
};
Int.prototype.Abs = function(x) { return this.$val.Abs(x); };
Int.ptr.prototype.Neg = function(x) {
var $ptr, x, z;
z = this;
z.Set(x);
z.neg = z.abs.$length > 0 && !z.neg;
return z;
};
Int.prototype.Neg = function(x) { return this.$val.Neg(x); };
Int.ptr.prototype.Add = function(x, y) {
var $ptr, neg, x, y, z;
z = this;
neg = x.neg;
if (x.neg === y.neg) {
z.abs = z.abs.add(x.abs, y.abs);
} else {
if (x.abs.cmp(y.abs) >= 0) {
z.abs = z.abs.sub(x.abs, y.abs);
} else {
neg = !neg;
z.abs = z.abs.sub(y.abs, x.abs);
}
}
z.neg = z.abs.$length > 0 && neg;
return z;
};
Int.prototype.Add = function(x, y) { return this.$val.Add(x, y); };
Int.ptr.prototype.Sub = function(x, y) {
var $ptr, neg, x, y, z;
z = this;
neg = x.neg;
if (!(x.neg === y.neg)) {
z.abs = z.abs.add(x.abs, y.abs);
} else {
if (x.abs.cmp(y.abs) >= 0) {
z.abs = z.abs.sub(x.abs, y.abs);
} else {
neg = !neg;
z.abs = z.abs.sub(y.abs, x.abs);
}
}
z.neg = z.abs.$length > 0 && neg;
return z;
};
Int.prototype.Sub = function(x, y) { return this.$val.Sub(x, y); };
Int.ptr.prototype.Mul = function(x, y) {
var $ptr, x, y, z;
z = this;
z.abs = z.abs.mul(x.abs, y.abs);
z.neg = z.abs.$length > 0 && !(x.neg === y.neg);
return z;
};
Int.prototype.Mul = function(x, y) { return this.$val.Mul(x, y); };
Int.ptr.prototype.MulRange = function(a, b) {
var $ptr, _tmp, _tmp$1, a, b, neg, x, x$1, z;
z = this;
if ((a.$high > b.$high || (a.$high === b.$high && a.$low > b.$low))) {
return z.SetInt64(new $Int64(0, 1));
} else if ((a.$high < 0 || (a.$high === 0 && a.$low <= 0)) && (b.$high > 0 || (b.$high === 0 && b.$low >= 0))) {
return z.SetInt64(new $Int64(0, 0));
}
neg = false;
if ((a.$high < 0 || (a.$high === 0 && a.$low < 0))) {
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));
_tmp = new $Int64(-b.$high, -b.$low);
_tmp$1 = new $Int64(-a.$high, -a.$low);
a = _tmp;
b = _tmp$1;
}
z.abs = z.abs.mulRange((new $Uint64(a.$high, a.$low)), (new $Uint64(b.$high, b.$low)));
z.neg = neg;
return z;
};
Int.prototype.MulRange = function(a, b) { return this.$val.MulRange(a, b); };
Int.ptr.prototype.Binomial = function(n, k) {
var $ptr, _r, _tmp, _tmp$1, a, b, k, n, x, x$1, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
a = [a];
b = [b];
z = this;
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))) {
k = new $Int64(n.$high - k.$high, n.$low - k.$low);
}
_tmp = new Int.ptr(false, nat.nil);
_tmp$1 = new Int.ptr(false, nat.nil);
a[0] = $clone(_tmp, Int);
b[0] = $clone(_tmp$1, Int);
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);
b[0].MulRange(new $Int64(0, 1), k);
_r = z.Quo(a[0], b[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Binomial }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
Int.prototype.Binomial = function(n, k) { return this.$val.Binomial(n, k); };
Int.ptr.prototype.Quo = function(x, y) {
var $ptr, _r, _tuple, x, y, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
z = this;
_r = z.abs.div(nat.nil, x.abs, y.abs); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
z.abs = _tuple[0];
z.neg = z.abs.$length > 0 && !(x.neg === y.neg);
$s = -1; return z;
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Quo }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.x = x; $f.y = y; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
};
Int.prototype.Quo = function(x, y) { return this.$val.Quo(x, y); };
Int.ptr.prototype.Rem = function(x, y) {
var $ptr, _r, _tuple, x, y, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
z = this;
_r = (nat.nil).div(z.abs, x.abs, y.abs); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
z.abs = _tuple[1];
z.neg = z.abs.$length > 0 && x.neg;
$s = -1; return z;
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Rem }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.x = x; $f.y = y; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
};
Int.prototype.Rem = function(x, y) { return this.$val.Rem(x, y); };
Int.ptr.prototype.QuoRem = function(x, y, r) {
var $ptr, _r, _tmp, _tmp$1, _tuple, r, x, y, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
z = this;
_r = z.abs.div(r.abs, x.abs, y.abs); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
z.abs = _tuple[0];
r.abs = _tuple[1];
_tmp = z.abs.$length > 0 && !(x.neg === y.neg);
_tmp$1 = r.abs.$length > 0 && x.neg;
z.neg = _tmp;
r.neg = _tmp$1;
$s = -1; return [z, r];
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.QuoRem }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
Int.prototype.QuoRem = function(x, y, r) { return this.$val.QuoRem(x, y, r); };
Int.ptr.prototype.Div = function(x, y) {
var $ptr, _r, r, x, y, y_neg, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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:
r = [r];
z = this;
y_neg = y.neg;
r[0] = new Int.ptr(false, nat.nil);
_r = z.QuoRem(x, y, r[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
if (r[0].neg) {
if (y_neg) {
z.Add(z, intOne);
} else {
z.Sub(z, intOne);
}
}
$s = -1; return z;
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Div }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
Int.prototype.Div = function(x, y) { return this.$val.Div(x, y); };
Int.ptr.prototype.Mod = function(x, y) {
var $ptr, _r, q, x, y, y0, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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:
z = this;
y0 = y;
if (z === y || alias(z.abs, y.abs)) {
y0 = new Int.ptr(false, nat.nil).Set(y);
}
q = new Int.ptr(false, nat.nil);
_r = q.QuoRem(x, y, z); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
if (z.neg) {
if (y0.neg) {
z.Sub(z, y0);
} else {
z.Add(z, y0);
}
}
$s = -1; return z;
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Mod }; } $f.$ptr = $ptr; $f._r = _r; $f.q = q; $f.x = x; $f.y = y; $f.y0 = y0; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
};
Int.prototype.Mod = function(x, y) { return this.$val.Mod(x, y); };
Int.ptr.prototype.DivMod = function(x, y, m) {
var $ptr, _r, m, x, y, y0, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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:
z = this;
y0 = y;
if (z === y || alias(z.abs, y.abs)) {
y0 = new Int.ptr(false, nat.nil).Set(y);
}
_r = z.QuoRem(x, y, m); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
if (m.neg) {
if (y0.neg) {
z.Add(z, intOne);
m.Sub(m, y0);
} else {
z.Sub(z, intOne);
m.Add(m, y0);
}
}
$s = -1; return [z, m];
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.DivMod }; } $f.$ptr = $ptr; $f._r = _r; $f.m = m; $f.x = x; $f.y = y; $f.y0 = y0; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
};
Int.prototype.DivMod = function(x, y, m) { return this.$val.DivMod(x, y, m); };
Int.ptr.prototype.Cmp = function(y) {
var $ptr, r, x, y;
r = 0;
x = this;
if (x.neg === y.neg) {
r = x.abs.cmp(y.abs);
if (x.neg) {
r = -r;
}
} else if (x.neg) {
r = -1;
} else {
r = 1;
}
return r;
};
Int.prototype.Cmp = function(y) { return this.$val.Cmp(y); };
low64 = function(z) {
var $ptr, v, x, x$1, x$2, z;
if (z.$length === 0) {
return new $Uint64(0, 0);
}
v = ((x = (0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0]), new $Uint64(0, x.constructor === Number ? x : 1)));
if (true && z.$length > 1) {
v = (x$1 = $shiftLeft64(((x$2 = (1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1]), new $Uint64(0, x$2.constructor === Number ? x$2 : 1))), 32), new $Uint64(v.$high | x$1.$high, (v.$low | x$1.$low) >>> 0));
}
return v;
};
Int.ptr.prototype.Int64 = function() {
var $ptr, v, x, x$1;
x = this;
v = ((x$1 = low64(x.abs), new $Int64(x$1.$high, x$1.$low)));
if (x.neg) {
v = new $Int64(-v.$high, -v.$low);
}
return v;
};
Int.prototype.Int64 = function() { return this.$val.Int64(); };
Int.ptr.prototype.Uint64 = function() {
var $ptr, x;
x = this;
return low64(x.abs);
};
Int.prototype.Uint64 = function() { return this.$val.Uint64(); };
Int.ptr.prototype.SetString = function(s, base) {
var $ptr, _r, _tuple, _tuple$1, base, err, err$1, r, s, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; base = $f.base; err = $f.err; err$1 = $f.err$1; r = $f.r; s = $f.s; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
z = this;
r = strings.NewReader(s);
_r = z.scan(r, base); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$1.nil, false];
}
_tuple$1 = r.ReadByte();
err$1 = _tuple$1[1];
if (!($interfaceIsEqual(err$1, io.EOF))) {
$s = -1; return [ptrType$1.nil, false];
}
$s = -1; return [z, true];
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.SetString }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.base = base; $f.err = err; $f.err$1 = err$1; $f.r = r; $f.s = s; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
};
Int.prototype.SetString = function(s, base) { return this.$val.SetString(s, base); };
Int.ptr.prototype.SetBytes = function(buf) {
var $ptr, buf, z;
z = this;
z.abs = z.abs.setBytes(buf);
z.neg = false;
return z;
};
Int.prototype.SetBytes = function(buf) { return this.$val.SetBytes(buf); };
Int.ptr.prototype.Bytes = function() {
var $ptr, buf, x;
x = this;
buf = $makeSlice(sliceType$1, ($imul(x.abs.$length, 4)));
return $subslice(buf, x.abs.bytes(buf));
};
Int.prototype.Bytes = function() { return this.$val.Bytes(); };
Int.ptr.prototype.BitLen = function() {
var $ptr, x;
x = this;
return x.abs.bitLen();
};
Int.prototype.BitLen = function() { return this.$val.BitLen(); };
Int.ptr.prototype.Exp = function(x, y, m) {
var $ptr, _r, m, mWords, x, y, yWords, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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:
z = this;
yWords = nat.nil;
if (!y.neg) {
yWords = y.abs;
}
mWords = nat.nil;
if (!(m === ptrType$1.nil)) {
mWords = m.abs;
}
_r = z.abs.expNN(x.abs, yWords, mWords); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
z.abs = _r;
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);
if (z.neg && mWords.$length > 0) {
z.abs = z.abs.sub(mWords, z.abs);
z.neg = false;
}
$s = -1; return z;
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Exp }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
Int.prototype.Exp = function(x, y, m) { return this.$val.Exp(x, y, m); };
Int.ptr.prototype.GCD = function(x, y, a, b) {
var $ptr, A, B, X, Y, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tuple, a, b, lastX, lastY, q, r, temp, x, y, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; A = $f.A; B = $f.B; X = $f.X; Y = $f.Y; _r = $f._r; _r$1 = $f._r$1; _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; lastY = $f.lastY; 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:
z = this;
if (a.Sign() <= 0 || b.Sign() <= 0) {
z.SetInt64(new $Int64(0, 0));
if (!(x === ptrType$1.nil)) {
x.SetInt64(new $Int64(0, 0));
}
if (!(y === ptrType$1.nil)) {
y.SetInt64(new $Int64(0, 0));
}
$s = -1; return z;
}
/* */ if (x === ptrType$1.nil && y === ptrType$1.nil) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (x === ptrType$1.nil && y === ptrType$1.nil) { */ case 1:
_r = z.binaryGCD(a, b); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 2:
A = new Int.ptr(false, nat.nil).Set(a);
B = new Int.ptr(false, nat.nil).Set(b);
X = new Int.ptr(false, nat.nil);
Y = new Int.ptr(false, nat.nil).SetInt64(new $Int64(0, 1));
lastX = new Int.ptr(false, nat.nil).SetInt64(new $Int64(0, 1));
lastY = new Int.ptr(false, nat.nil);
q = new Int.ptr(false, nat.nil);
temp = new Int.ptr(false, nat.nil);
r = new Int.ptr(false, nat.nil);
/* while (true) { */ case 4:
/* if (!(B.abs.$length > 0)) { break; } */ if(!(B.abs.$length > 0)) { $s = 5; continue; }
_r$1 = q.QuoRem(A, B, r); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
q = _tuple[0];
r = _tuple[1];
_tmp = B;
_tmp$1 = r;
_tmp$2 = A;
A = _tmp;
B = _tmp$1;
r = _tmp$2;
temp.Set(X);
X.Mul(X, q);
X.neg = !X.neg;
X.Add(X, lastX);
lastX.Set(temp);
temp.Set(Y);
Y.Mul(Y, q);
Y.neg = !Y.neg;
Y.Add(Y, lastY);
lastY.Set(temp);
/* } */ $s = 4; continue; case 5:
if (!(x === ptrType$1.nil)) {
Int.copy(x, lastX);
}
if (!(y === ptrType$1.nil)) {
Int.copy(y, lastY);
}
Int.copy(z, A);
$s = -1; return z;
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.GCD }; } $f.$ptr = $ptr; $f.A = A; $f.B = B; $f.X = X; $f.Y = Y; $f._r = _r; $f._r$1 = _r$1; $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.lastY = lastY; $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;
};
Int.prototype.GCD = function(x, y, a, b) { return this.$val.GCD(x, y, a, b); };
Int.ptr.prototype.binaryGCD = function(a, b) {
var $ptr, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, a, b, k, t, u, v, vk, x, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; a = $f.a; b = $f.b; k = $f.k; t = $f.t; u = $f.u; v = $f.v; vk = $f.vk; x = $f.x; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
z = this;
u = z;
v = new Int.ptr(false, nat.nil);
/* */ if (a.abs.$length > b.abs.$length) { $s = 2; continue; }
/* */ if (a.abs.$length < b.abs.$length) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (a.abs.$length > b.abs.$length) { */ case 2:
_r = v.Rem(a, b); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
u.Set(b);
$s = 5; continue;
/* } else if (a.abs.$length < b.abs.$length) { */ case 3:
_r$1 = v.Rem(b, a); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
u.Set(a);
$s = 5; continue;
/* } else { */ case 4:
v.Set(b);
u.Set(a);
/* } */ case 5:
case 1:
if (v.abs.$length === 0) {
$s = -1; return u;
}
k = u.abs.trailingZeroBits();
vk = v.abs.trailingZeroBits();
if (vk < k) {
k = vk;
}
u.Rsh(u, k);
v.Rsh(v, k);
t = new Int.ptr(false, nat.nil);
if (!(((((x = u.abs, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) & 1) >>> 0) === 0))) {
t.Neg(v);
} else {
t.Set(u);
}
while (true) {
if (!(t.abs.$length > 0)) { break; }
t.Rsh(t, t.abs.trailingZeroBits());
if (t.neg) {
_tmp = t;
_tmp$1 = v;
v = _tmp;
t = _tmp$1;
v.neg = v.abs.$length > 0 && !v.neg;
} else {
_tmp$2 = t;
_tmp$3 = u;
u = _tmp$2;
t = _tmp$3;
}
t.Sub(u, v);
}
$s = -1; return z.Lsh(u, k);
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.binaryGCD }; } $f.$ptr = $ptr; $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.a = a; $f.b = b; $f.k = k; $f.t = t; $f.u = u; $f.v = v; $f.vk = vk; $f.x = x; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
};
Int.prototype.binaryGCD = function(a, b) { return this.$val.binaryGCD(a, b); };
Int.ptr.prototype.Rand = function(rnd, n) {
var $ptr, _r, n, rnd, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; n = $f.n; rnd = $f.rnd; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
z = this;
z.neg = false;
if (n.neg || (n.abs.$length === 0)) {
z.abs = nat.nil;
$s = -1; return z;
}
_r = z.abs.random(rnd, n.abs, n.abs.bitLen()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
z.abs = _r;
$s = -1; return z;
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Rand }; } $f.$ptr = $ptr; $f._r = _r; $f.n = n; $f.rnd = rnd; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
};
Int.prototype.Rand = function(rnd, n) { return this.$val.Rand(rnd, n); };
Int.ptr.prototype.ModInverse = function(g, n) {
var $ptr, _r, _r$1, d, g, g2, n, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; 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:
z = this;
/* */ if (g.neg) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (g.neg) { */ case 1:
g2 = new Int.ptr(false, nat.nil);
_r = g2.Mod(g, n); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
g = _r;
/* } */ case 2:
d = new Int.ptr(false, nat.nil);
_r$1 = d.GCD(z, ptrType$1.nil, g, n); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
if (z.neg) {
z.Add(z, n);
}
$s = -1; return z;
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.ModInverse }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.d = d; $f.g = g; $f.g2 = g2; $f.n = n; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
};
Int.prototype.ModInverse = function(g, n) { return this.$val.ModInverse(g, n); };
Jacobi = function(x, y) {
var $ptr, _r, _r$1, _tmp, _tmp$1, _tmp$2, a, b, bmod8, c, j, s, x, x$1, x$2, x$3, x$4, y, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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:
a = [a];
b = [b];
c = [c];
/* */ 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; }
/* */ $s = 2; continue;
/* 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:
_r = 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 = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$panic(new $String(_r));
/* } */ case 2:
_tmp = new Int.ptr(false, nat.nil);
_tmp$1 = new Int.ptr(false, nat.nil);
_tmp$2 = new Int.ptr(false, nat.nil);
a[0] = $clone(_tmp, Int);
b[0] = $clone(_tmp$1, Int);
c[0] = $clone(_tmp$2, Int);
a[0].Set(x);
b[0].Set(y);
j = 1;
if (b[0].neg) {
if (a[0].neg) {
j = -1;
}
b[0].neg = false;
}
/* while (true) { */ case 4:
if (b[0].Cmp(intOne) === 0) {
$s = -1; return j;
}
if (a[0].abs.$length === 0) {
$s = -1; return 0;
}
_r$1 = a[0].Mod(a[0], b[0]); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
if (a[0].abs.$length === 0) {
$s = -1; return 0;
}
s = a[0].abs.trailingZeroBits();
if (!((((s & 1) >>> 0) === 0))) {
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;
if ((bmod8 === 3) || (bmod8 === 5)) {
j = -j;
}
}
c[0].Rsh(a[0], s);
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)) {
j = -j;
}
a[0].Set(b[0]);
b[0].Set(c[0]);
/* } */ $s = 4; continue; case 5:
$s = -1; return 0;
/* */ } return; } if ($f === undefined) { $f = { $blk: Jacobi }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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;
};
$pkg.Jacobi = Jacobi;
Int.ptr.prototype.modSqrt3Mod4Prime = function(x, p) {
var $ptr, _r, p, x, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; p = $f.p; x = $f.x; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
z = this;
z.Set(p);
z.Add(z, intOne);
z.Rsh(z, 2);
_r = z.Exp(x, z, p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
$s = -1; return z;
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.modSqrt3Mod4Prime }; } $f.$ptr = $ptr; $f._r = _r; $f.p = p; $f.x = x; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
};
Int.prototype.modSqrt3Mod4Prime = function(x, p) { return this.$val.modSqrt3Mod4Prime(x, p); };
Int.ptr.prototype.modSqrtTonelliShanks = function(x, p) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tmp, _tmp$1, _tmp$2, _tmp$3, b, e, g, m, n, p, r, s, t, x, y, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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$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:
b = [b];
g = [g];
n = [n];
s = [s];
t = [t];
y = [y];
z = this;
s[0] = new Int.ptr(false, nat.nil);
s[0].Sub(p, intOne);
e = s[0].abs.trailingZeroBits();
s[0].Rsh(s[0], e);
n[0] = new Int.ptr(false, nat.nil);
n[0].SetInt64(new $Int64(0, 2));
/* while (true) { */ case 1:
_r = Jacobi(n[0], p); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* if (!(!((_r === -1)))) { break; } */ if(!(!((_r === -1)))) { $s = 2; continue; }
n[0].Add(n[0], intOne);
/* } */ $s = 1; continue; case 2:
_tmp = new Int.ptr(false, nat.nil);
_tmp$1 = new Int.ptr(false, nat.nil);
_tmp$2 = new Int.ptr(false, nat.nil);
_tmp$3 = new Int.ptr(false, nat.nil);
y[0] = $clone(_tmp, Int);
b[0] = $clone(_tmp$1, Int);
g[0] = $clone(_tmp$2, Int);
t[0] = $clone(_tmp$3, Int);
y[0].Add(s[0], intOne);
y[0].Rsh(y[0], 1);
_r$1 = y[0].Exp(x, y[0], p); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
_r$2 = b[0].Exp(x, s[0], p); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
_r$3 = g[0].Exp(n[0], s[0], p); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$3;
r = e;
/* while (true) { */ case 7:
m = 0;
t[0].Set(b[0]);
/* while (true) { */ case 9:
/* if (!(!((t[0].Cmp(intOne) === 0)))) { break; } */ if(!(!((t[0].Cmp(intOne) === 0)))) { $s = 10; continue; }
_r$4 = t[0].Mul(t[0], t[0]).Mod(t[0], p); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_r$4;
m = m + (1) >>> 0;
/* } */ $s = 9; continue; case 10:
if (m === 0) {
$s = -1; return z.Set(y[0]);
}
_r$5 = 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$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_r$5;
_r$6 = g[0].Mul(t[0], t[0]).Mod(g[0], p); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_r$6;
_r$7 = y[0].Mul(y[0], t[0]).Mod(y[0], p); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_r$7;
_r$8 = b[0].Mul(b[0], g[0]).Mod(b[0], p); /* */ $s = 15; case 15: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_r$8;
r = m;
/* } */ $s = 7; continue; case 8:
$s = -1; return ptrType$1.nil;
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.modSqrtTonelliShanks }; } $f.$ptr = $ptr; $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$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;
};
Int.prototype.modSqrtTonelliShanks = function(x, p) { return this.$val.modSqrtTonelliShanks(x, p); };
Int.ptr.prototype.ModSqrt = function(x, p) {
var $ptr, _1, _r, _r$1, _r$2, _r$3, _r$4, p, x, x$1, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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:
z = this;
_r = Jacobi(x, p); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_1 = _r;
if (_1 === (-1)) {
$s = -1; return ptrType$1.nil;
} else if (_1 === (0)) {
$s = -1; return z.SetInt64(new $Int64(0, 0));
} else if (_1 === (1)) {
/* break; */ $s = 1; continue;
}
case 1:
/* */ if (x.neg || x.Cmp(p) >= 0) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (x.neg || x.Cmp(p) >= 0) { */ case 3:
_r$1 = new Int.ptr(false, nat.nil).Mod(x, p); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
x = _r$1;
/* } */ case 4:
/* */ if (p.abs.$length > 0 && ((_r$2 = (x$1 = p.abs, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])) % 4, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")) === 3)) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (p.abs.$length > 0 && ((_r$2 = (x$1 = p.abs, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])) % 4, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")) === 3)) { */ case 6:
_r$3 = z.modSqrt3Mod4Prime(x, p); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
$s = -1; return _r$3;
/* } */ case 7:
_r$4 = z.modSqrtTonelliShanks(x, p); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
$s = -1; return _r$4;
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.ModSqrt }; } $f.$ptr = $ptr; $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.p = p; $f.x = x; $f.x$1 = x$1; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
};
Int.prototype.ModSqrt = function(x, p) { return this.$val.ModSqrt(x, p); };
Int.ptr.prototype.Lsh = function(x, n) {
var $ptr, n, x, z;
z = this;
z.abs = z.abs.shl(x.abs, n);
z.neg = x.neg;
return z;
};
Int.prototype.Lsh = function(x, n) { return this.$val.Lsh(x, n); };
Int.ptr.prototype.Rsh = function(x, n) {
var $ptr, n, t, x, z;
z = this;
if (x.neg) {
t = z.abs.sub(x.abs, natOne);
t = t.shr(t, n);
z.abs = t.add(t, natOne);
z.neg = true;
return z;
}
z.abs = z.abs.shr(x.abs, n);
z.neg = false;
return z;
};
Int.prototype.Rsh = function(x, n) { return this.$val.Rsh(x, n); };
Int.ptr.prototype.Bit = function(i) {
var $ptr, i, t, x, x$1;
x = this;
if (i === 0) {
if (x.abs.$length > 0) {
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));
}
return 0;
}
if (i < 0) {
$panic(new $String("negative bit index"));
}
if (x.neg) {
t = (nat.nil).sub(x.abs, natOne);
return (t.bit(((i >>> 0))) ^ 1) >>> 0;
}
return x.abs.bit(((i >>> 0)));
};
Int.prototype.Bit = function(i) { return this.$val.Bit(i); };
Int.ptr.prototype.SetBit = function(x, i, b) {
var $ptr, b, i, t, x, z;
z = this;
if (i < 0) {
$panic(new $String("negative bit index"));
}
if (x.neg) {
t = z.abs.sub(x.abs, natOne);
t = t.setBit(t, ((i >>> 0)), (b ^ 1) >>> 0);
z.abs = t.add(t, natOne);
z.neg = z.abs.$length > 0;
return z;
}
z.abs = z.abs.setBit(x.abs, ((i >>> 0)), b);
z.neg = false;
return z;
};
Int.prototype.SetBit = function(x, i, b) { return this.$val.SetBit(x, i, b); };
Int.ptr.prototype.And = function(x, y) {
var $ptr, _tmp, _tmp$1, x, x1, y, y1, y1$1, z;
z = this;
if (x.neg === y.neg) {
if (x.neg) {
x1 = (nat.nil).sub(x.abs, natOne);
y1 = (nat.nil).sub(y.abs, natOne);
z.abs = z.abs.add(z.abs.or(x1, y1), natOne);
z.neg = true;
return z;
}
z.abs = z.abs.and(x.abs, y.abs);
z.neg = false;
return z;
}
if (x.neg) {
_tmp = y;
_tmp$1 = x;
x = _tmp;
y = _tmp$1;
}
y1$1 = (nat.nil).sub(y.abs, natOne);
z.abs = z.abs.andNot(x.abs, y1$1);
z.neg = false;
return z;
};
Int.prototype.And = function(x, y) { return this.$val.And(x, y); };
Int.ptr.prototype.AndNot = function(x, y) {
var $ptr, x, x1, x1$1, y, y1, y1$1, z;
z = this;
if (x.neg === y.neg) {
if (x.neg) {
x1 = (nat.nil).sub(x.abs, natOne);
y1 = (nat.nil).sub(y.abs, natOne);
z.abs = z.abs.andNot(y1, x1);
z.neg = false;
return z;
}
z.abs = z.abs.andNot(x.abs, y.abs);
z.neg = false;
return z;
}
if (x.neg) {
x1$1 = (nat.nil).sub(x.abs, natOne);
z.abs = z.abs.add(z.abs.or(x1$1, y.abs), natOne);
z.neg = true;
return z;
}
y1$1 = (nat.nil).sub(y.abs, natOne);
z.abs = z.abs.and(x.abs, y1$1);
z.neg = false;
return z;
};
Int.prototype.AndNot = function(x, y) { return this.$val.AndNot(x, y); };
Int.ptr.prototype.Or = function(x, y) {
var $ptr, _tmp, _tmp$1, x, x1, y, y1, y1$1, z;
z = this;
if (x.neg === y.neg) {
if (x.neg) {
x1 = (nat.nil).sub(x.abs, natOne);
y1 = (nat.nil).sub(y.abs, natOne);
z.abs = z.abs.add(z.abs.and(x1, y1), natOne);
z.neg = true;
return z;
}
z.abs = z.abs.or(x.abs, y.abs);
z.neg = false;
return z;
}
if (x.neg) {
_tmp = y;
_tmp$1 = x;
x = _tmp;
y = _tmp$1;
}
y1$1 = (nat.nil).sub(y.abs, natOne);
z.abs = z.abs.add(z.abs.andNot(y1$1, x.abs), natOne);
z.neg = true;
return z;
};
Int.prototype.Or = function(x, y) { return this.$val.Or(x, y); };
Int.ptr.prototype.Xor = function(x, y) {
var $ptr, _tmp, _tmp$1, x, x1, y, y1, y1$1, z;
z = this;
if (x.neg === y.neg) {
if (x.neg) {
x1 = (nat.nil).sub(x.abs, natOne);
y1 = (nat.nil).sub(y.abs, natOne);
z.abs = z.abs.xor(x1, y1);
z.neg = false;
return z;
}
z.abs = z.abs.xor(x.abs, y.abs);
z.neg = false;
return z;
}
if (x.neg) {
_tmp = y;
_tmp$1 = x;
x = _tmp;
y = _tmp$1;
}
y1$1 = (nat.nil).sub(y.abs, natOne);
z.abs = z.abs.add(z.abs.xor(x.abs, y1$1), natOne);
z.neg = true;
return z;
};
Int.prototype.Xor = function(x, y) { return this.$val.Xor(x, y); };
Int.ptr.prototype.Not = function(x) {
var $ptr, x, z;
z = this;
if (x.neg) {
z.abs = z.abs.sub(x.abs, natOne);
z.neg = false;
return z;
}
z.abs = z.abs.add(x.abs, natOne);
z.neg = true;
return z;
};
Int.prototype.Not = function(x) { return this.$val.Not(x); };
Int.ptr.prototype.Sqrt = function(x) {
var $ptr, _r, x, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; x = $f.x; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
z = this;
if (x.neg) {
$panic(new $String("square root of negative number"));
}
z.neg = false;
_r = z.abs.sqrt(x.abs); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
z.abs = _r;
$s = -1; return z;
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Sqrt }; } $f.$ptr = $ptr; $f._r = _r; $f.x = x; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
};
Int.prototype.Sqrt = function(x) { return this.$val.Sqrt(x); };
Int.ptr.prototype.Text = function(base) {
var $ptr, _r, base, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; base = $f.base; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
x = this;
if (x === ptrType$1.nil) {
$s = -1; return "<nil>";
}
_r = x.abs.itoa(x.neg, base); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return ($bytesToString(_r));
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Text }; } $f.$ptr = $ptr; $f._r = _r; $f.base = base; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
Int.prototype.Text = function(base) { return this.$val.Text(base); };
Int.ptr.prototype.Append = function(buf, base) {
var $ptr, _arg, _arg$1, _r, base, buf, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; base = $f.base; buf = $f.buf; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
x = this;
if (x === ptrType$1.nil) {
$s = -1; return $appendSlice(buf, "<nil>");
}
_arg = buf;
_r = x.abs.itoa(x.neg, base); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_arg$1 = _r;
$s = -1; return $appendSlice(_arg, _arg$1);
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Append }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f.base = base; $f.buf = buf; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
Int.prototype.Append = function(buf, base) { return this.$val.Append(buf, base); };
Int.ptr.prototype.String = function() {
var $ptr, _r, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
x = this;
_r = x.Text(10); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
Int.prototype.String = function() { return this.$val.String(); };
writeMultiple = function(s, text, count) {
var $ptr, _r, b, count, s, text, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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:
/* */ if (text.length > 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (text.length > 0) { */ case 1:
b = (new sliceType$1($stringToBytes(text)));
/* while (true) { */ case 3:
/* if (!(count > 0)) { break; } */ if(!(count > 0)) { $s = 4; continue; }
_r = s.Write(b); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
count = count - (1) >> 0;
/* } */ $s = 3; continue; case 4:
/* } */ case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: writeMultiple }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.count = count; $f.s = s; $f.text = text; $f.$s = $s; $f.$r = $r; return $f;
};
Int.ptr.prototype.Format = function(s, ch) {
var $ptr, _1, _2, _arg, _arg$1, _arg$2, _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, _tuple, _tuple$1, base, ch, d, d$1, digits, i, left, length, precision, precisionSet, prefix, right, s, sign, width, widthSet, x, zeros, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _2 = $f._2; _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$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; 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:
x = this;
base = 0;
_1 = ch;
/* */ if (_1 === (98)) { $s = 2; continue; }
/* */ if (_1 === (111)) { $s = 3; continue; }
/* */ if ((_1 === (100)) || (_1 === (115)) || (_1 === (118))) { $s = 4; continue; }
/* */ if ((_1 === (120)) || (_1 === (88))) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (_1 === (98)) { */ case 2:
base = 2;
$s = 7; continue;
/* } else if (_1 === (111)) { */ case 3:
base = 8;
$s = 7; continue;
/* } else if ((_1 === (100)) || (_1 === (115)) || (_1 === (118))) { */ case 4:
base = 10;
$s = 7; continue;
/* } else if ((_1 === (120)) || (_1 === (88))) { */ case 5:
base = 16;
$s = 7; continue;
/* } else { */ case 6:
_arg = s;
_arg$1 = new $Int32(ch);
_r = x.String(); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_arg$2 = new $String(_r);
_r$1 = fmt.Fprintf(_arg, "%%!%c(big.Int=%s)", new sliceType([_arg$1, _arg$2])); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
$s = -1; return;
/* } */ case 7:
case 1:
/* */ if (x === ptrType$1.nil) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (x === ptrType$1.nil) { */ case 10:
_r$2 = fmt.Fprint(s, new sliceType([new $String("<nil>")])); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
$s = -1; return;
/* } */ case 11:
sign = "";
/* */ if (x.neg) { $s = 14; continue; }
_r$3 = s.Flag(43); /* */ $s = 18; case 18: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
/* */ if (_r$3) { $s = 15; continue; }
_r$4 = s.Flag(32); /* */ $s = 19; case 19: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
/* */ if (_r$4) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (x.neg) { */ case 14:
sign = "-";
$s = 17; continue;
/* } else if (_r$3) { */ case 15:
sign = "+";
$s = 17; continue;
/* } else if (_r$4) { */ case 16:
sign = " ";
/* } */ case 17:
case 13:
prefix = "";
_r$5 = s.Flag(35); /* */ $s = 22; case 22: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
/* */ if (_r$5) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if (_r$5) { */ case 20:
_2 = ch;
if (_2 === (111)) {
prefix = "0";
} else if (_2 === (120)) {
prefix = "0x";
} else if (_2 === (88)) {
prefix = "0X";
}
/* } */ case 21:
_r$6 = x.abs.utoa(base); /* */ $s = 23; case 23: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
digits = _r$6;
if (ch === 88) {
_ref = digits;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
d = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (97 <= d && d <= 122) {
((i < 0 || i >= digits.$length) ? ($throwRuntimeError("index out of range"), undefined) : digits.$array[digits.$offset + i] = (65 + ((d - 97 << 24 >>> 24)) << 24 >>> 24));
}
_i++;
}
}
left = 0;
zeros = 0;
right = 0;
_r$7 = s.Precision(); /* */ $s = 24; case 24: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_tuple = _r$7;
precision = _tuple[0];
precisionSet = _tuple[1];
if (precisionSet) {
if (digits.$length < precision) {
zeros = precision - digits.$length >> 0;
} else if ((digits.$length === 1) && ((0 >= digits.$length ? ($throwRuntimeError("index out of range"), undefined) : digits.$array[digits.$offset + 0]) === 48) && (precision === 0)) {
$s = -1; return;
}
}
length = ((sign.length + prefix.length >> 0) + zeros >> 0) + digits.$length >> 0;
_r$8 = s.Width(); /* */ $s = 25; case 25: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_tuple$1 = _r$8;
width = _tuple$1[0];
widthSet = _tuple$1[1];
/* */ if (widthSet && length < width) { $s = 26; continue; }
/* */ $s = 27; continue;
/* if (widthSet && length < width) { */ case 26:
d$1 = width - length >> 0;
_r$9 = s.Flag(45); /* */ $s = 33; case 33: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
/* */ if (_r$9) { $s = 29; continue; }
_r$10 = s.Flag(48); /* */ $s = 34; case 34: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
/* */ if (_r$10 && !precisionSet) { $s = 30; continue; }
/* */ $s = 31; continue;
/* if (_r$9) { */ case 29:
right = d$1;
$s = 32; continue;
/* } else if (_r$10 && !precisionSet) { */ case 30:
zeros = d$1;
$s = 32; continue;
/* } else { */ case 31:
left = d$1;
/* } */ case 32:
case 28:
/* } */ case 27:
$r = writeMultiple(s, " ", left); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = writeMultiple(s, sign, 1); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = writeMultiple(s, prefix, 1); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = writeMultiple(s, "0", zeros); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$11 = s.Write(digits); /* */ $s = 39; case 39: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
_r$11;
$r = writeMultiple(s, " ", right); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Format }; } $f.$ptr = $ptr; $f._1 = _1; $f._2 = _2; $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$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.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;
};
Int.prototype.Format = function(s, ch) { return this.$val.Format(s, ch); };
Int.ptr.prototype.scan = function(r, base) {
var $ptr, _r, _r$1, _tuple, _tuple$1, base, err, neg, r, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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:
z = this;
_r = scanSign(r); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
neg = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$1.nil, 0, err];
}
_r$1 = z.abs.scan(r, base, false); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple$1 = _r$1;
z.abs = _tuple$1[0];
base = _tuple$1[1];
err = _tuple$1[3];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$1.nil, base, err];
}
z.neg = z.abs.$length > 0 && neg;
$s = -1; return [z, base, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.scan }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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;
};
Int.prototype.scan = function(r, base) { return this.$val.scan(r, base); };
scanSign = function(r) {
var $ptr, _1, _r, _r$1, _tmp, _tmp$1, _tuple, ch, err, neg, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _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:
neg = false;
err = $ifaceNil;
ch = 0;
_r = r.ReadByte(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
ch = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = false;
_tmp$1 = err;
neg = _tmp;
err = _tmp$1;
$s = -1; return [neg, err];
}
_1 = ch;
/* */ if (_1 === (45)) { $s = 3; continue; }
/* */ if (_1 === (43)) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (_1 === (45)) { */ case 3:
neg = true;
$s = 6; continue;
/* } else if (_1 === (43)) { */ case 4:
$s = 6; continue;
/* } else { */ case 5:
_r$1 = r.UnreadByte(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
/* } */ case 6:
case 2:
$s = -1; return [neg, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: scanSign }; } $f.$ptr = $ptr; $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $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;
};
byteReader.ptr.prototype.ReadByte = function() {
var $ptr, _r, _r$1, _tuple, ch, err, r, size, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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:
r = this;
_r = r.ScanState.ReadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
ch = _tuple[0];
size = _tuple[1];
err = _tuple[2];
/* */ if (!((size === 1)) && $interfaceIsEqual(err, $ifaceNil)) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!((size === 1)) && $interfaceIsEqual(err, $ifaceNil)) { */ case 2:
_r$1 = fmt.Errorf("invalid rune %#U", new sliceType([new $Int32(ch)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
err = _r$1;
/* } */ case 3:
$s = -1; return [((ch << 24 >>> 24)), err];
/* */ } return; } if ($f === undefined) { $f = { $blk: byteReader.ptr.prototype.ReadByte }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.ch = ch; $f.err = err; $f.r = r; $f.size = size; $f.$s = $s; $f.$r = $r; return $f;
};
byteReader.prototype.ReadByte = function() { return this.$val.ReadByte(); };
byteReader.ptr.prototype.UnreadByte = function() {
var $ptr, _r, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
_r = r.ScanState.UnreadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: byteReader.ptr.prototype.UnreadByte }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
byteReader.prototype.UnreadByte = function() { return this.$val.UnreadByte(); };
Int.ptr.prototype.Scan = function(s, ch) {
var $ptr, _1, _r, _tuple, base, ch, err, s, x, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _r = $f._r; _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:
z = this;
$r = s.SkipSpace(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
base = 0;
_1 = ch;
if (_1 === (98)) {
base = 2;
} else if (_1 === (111)) {
base = 8;
} else if (_1 === (100)) {
base = 10;
} else if ((_1 === (120)) || (_1 === (88))) {
base = 16;
} else if ((_1 === (115)) || (_1 === (118))) {
} else {
$s = -1; return errors.New("Int.Scan: invalid verb");
}
_r = z.scan((x = new byteReader.ptr(s), new x.constructor.elem(x)), base); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
err = _tuple[2];
$s = -1; return err;
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Scan }; } $f.$ptr = $ptr; $f._1 = _1; $f._r = _r; $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;
};
Int.prototype.Scan = function(s, ch) { return this.$val.Scan(s, ch); };
Int.ptr.prototype.GobEncode = function() {
var $ptr, b, buf, i, x;
x = this;
if (x === ptrType$1.nil) {
return [sliceType$1.nil, $ifaceNil];
}
buf = $makeSlice(sliceType$1, (1 + ($imul(x.abs.$length, 4)) >> 0));
i = x.abs.bytes(buf) - 1 >> 0;
b = 2;
if (x.neg) {
b = (b | (1)) >>> 0;
}
((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = b);
return [$subslice(buf, i), $ifaceNil];
};
Int.prototype.GobEncode = function() { return this.$val.GobEncode(); };
Int.ptr.prototype.GobDecode = function(buf) {
var $ptr, _r, b, buf, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; b = $f.b; buf = $f.buf; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
z = this;
if (buf.$length === 0) {
Int.copy(z, new Int.ptr(false, nat.nil));
$s = -1; return $ifaceNil;
}
b = (0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]);
/* */ if (!(((b >>> 1 << 24 >>> 24) === 1))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(((b >>> 1 << 24 >>> 24) === 1))) { */ case 1:
_r = 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 = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 2:
z.neg = !((((b & 1) >>> 0) === 0));
z.abs = z.abs.setBytes($subslice(buf, 1));
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.GobDecode }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.buf = buf; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
};
Int.prototype.GobDecode = function(buf) { return this.$val.GobDecode(buf); };
Int.ptr.prototype.MarshalText = function() {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, err, text, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
text = sliceType$1.nil;
err = $ifaceNil;
x = this;
if (x === ptrType$1.nil) {
_tmp = (new sliceType$1($stringToBytes("<nil>")));
_tmp$1 = $ifaceNil;
text = _tmp;
err = _tmp$1;
$s = -1; return [text, err];
}
_r = x.abs.itoa(x.neg, 10); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tmp$2 = _r;
_tmp$3 = $ifaceNil;
text = _tmp$2;
err = _tmp$3;
$s = -1; return [text, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.MarshalText }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
Int.prototype.MarshalText = function() { return this.$val.MarshalText(); };
Int.ptr.prototype.UnmarshalText = function(text) {
var $ptr, _r, _r$1, _tuple, ok, text, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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:
z = this;
_r = z.SetString(($bytesToString(text)), 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
ok = _tuple[1];
/* */ if (!ok) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!ok) { */ case 2:
_r$1 = fmt.Errorf("math/big: cannot unmarshal %q into a *big.Int", new sliceType([text])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* } */ case 3:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.UnmarshalText }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.ok = ok; $f.text = text; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
};
Int.prototype.UnmarshalText = function(text) { return this.$val.UnmarshalText(text); };
Int.ptr.prototype.MarshalJSON = function() {
var $ptr, _r, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
x = this;
_r = x.MarshalText(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.MarshalJSON }; } $f.$ptr = $ptr; $f._r = _r; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
Int.prototype.MarshalJSON = function() { return this.$val.MarshalJSON(); };
Int.ptr.prototype.UnmarshalJSON = function(text) {
var $ptr, _r, text, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; text = $f.text; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
z = this;
if (($bytesToString(text)) === "null") {
$s = -1; return $ifaceNil;
}
_r = z.UnmarshalText(text); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.UnmarshalJSON }; } $f.$ptr = $ptr; $f._r = _r; $f.text = text; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
};
Int.prototype.UnmarshalJSON = function(text) { return this.$val.UnmarshalJSON(text); };
nat.prototype.clear = function() {
var $ptr, _i, _ref, i, z;
z = this;
_ref = z;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = 0);
_i++;
}
};
$ptrType(nat).prototype.clear = function() { return this.$get().clear(); };
nat.prototype.norm = function() {
var $ptr, i, x, z;
z = this;
i = z.$length;
while (true) {
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; }
i = i - (1) >> 0;
}
return $subslice(z, 0, i);
};
$ptrType(nat).prototype.norm = function() { return this.$get().norm(); };
nat.prototype.make = function(n) {
var $ptr, n, z;
z = this;
if (n <= z.$capacity) {
return $subslice(z, 0, n);
}
return $makeSlice(nat, n, (n + 4 >> 0));
};
$ptrType(nat).prototype.make = function(n) { return this.$get().make(n); };
nat.prototype.setWord = function(x) {
var $ptr, x, z;
z = this;
if (x === 0) {
return $subslice(z, 0, 0);
}
z = z.make(1);
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = x);
return z;
};
$ptrType(nat).prototype.setWord = function(x) { return this.$get().setWord(x); };
nat.prototype.setUint64 = function(x) {
var $ptr, _i, _ref, i, n, t, w, x, x$1, z;
z = this;
w = ((x.$low >>> 0));
if ((x$1 = (new $Uint64(0, w.constructor === Number ? w : 1)), (x$1.$high === x.$high && x$1.$low === x.$low))) {
return z.setWord(w);
}
n = 0;
t = x;
while (true) {
if (!((t.$high > 0 || (t.$high === 0 && t.$low > 0)))) { break; }
n = n + (1) >> 0;
t = $shiftRightUint64(t, (32));
}
z = z.make(n);
_ref = z;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = ((new $Uint64(x.$high & 0, (x.$low & 4294967295) >>> 0).$low >>> 0)));
x = $shiftRightUint64(x, (32));
_i++;
}
return z;
};
$ptrType(nat).prototype.setUint64 = function(x) { return this.$get().setUint64(x); };
nat.prototype.set = function(x) {
var $ptr, x, z;
z = this;
z = z.make(x.$length);
$copySlice(z, x);
return z;
};
$ptrType(nat).prototype.set = function(x) { return this.$get().set(x); };
nat.prototype.add = function(x, y) {
var $ptr, c, m, n, x, x$1, x$2, x$3, y, z;
z = this;
m = x.$length;
n = y.$length;
if (m < n) {
return z.add(y, x);
} else if ((m === 0)) {
return $subslice(z, 0, 0);
} else if ((n === 0)) {
return z.set(x);
}
z = z.make(m + 1 >> 0);
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));
if (m > n) {
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);
}
((m < 0 || m >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + m] = c);
return z.norm();
};
$ptrType(nat).prototype.add = function(x, y) { return this.$get().add(x, y); };
nat.prototype.sub = function(x, y) {
var $ptr, c, m, n, x, x$1, x$2, x$3, y, z;
z = this;
m = x.$length;
n = y.$length;
if (m < n) {
$panic(new $String("underflow"));
} else if ((m === 0)) {
return $subslice(z, 0, 0);
} else if ((n === 0)) {
return z.set(x);
}
z = z.make(m);
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));
if (m > n) {
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);
}
if (!((c === 0))) {
$panic(new $String("underflow"));
}
return z.norm();
};
$ptrType(nat).prototype.sub = function(x, y) { return this.$get().sub(x, y); };
nat.prototype.cmp = function(y) {
var $ptr, i, m, n, r, x, y;
r = 0;
x = this;
m = x.$length;
n = y.$length;
if (!((m === n)) || (m === 0)) {
if (m < n) {
r = -1;
} else if (m > n) {
r = 1;
}
return r;
}
i = m - 1 >> 0;
while (true) {
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; }
i = i - (1) >> 0;
}
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])) {
r = -1;
} 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])) {
r = 1;
}
return r;
};
$ptrType(nat).prototype.cmp = function(y) { return this.$get().cmp(y); };
nat.prototype.mulAddWW = function(x, y, r) {
var $ptr, m, r, x, x$1, y, z;
z = this;
m = x.$length;
if ((m === 0) || (y === 0)) {
return z.setWord(r);
}
z = z.make(m + 1 >> 0);
((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));
return z.norm();
};
$ptrType(nat).prototype.mulAddWW = function(x, y, r) { return this.$get().mulAddWW(x, y, r); };
basicMul = function(z, x, y) {
var $ptr, _i, _ref, d, i, x, x$1, x$2, y, z;
$subslice(z, 0, (x.$length + y.$length >> 0)).clear();
_ref = y;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
d = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (!((d === 0))) {
(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)));
}
_i++;
}
};
nat.prototype.montgomery = function(x, y, m, k, n) {
var $ptr, c, c2, c3, cx, cy, d, i, k, m, n, t, x, x$1, y, z;
z = this;
if (!((x.$length === n)) || !((y.$length === n)) || !((m.$length === n))) {
$panic(new $String("math/big: mismatched montgomery number lengths"));
}
z = z.make(n);
z.clear();
c = 0;
i = 0;
while (true) {
if (!(i < n)) { break; }
d = ((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i]);
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);
t = $imul((0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0]), k) >>> 0;
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);
$copySlice(z, $subslice(z, 1));
cx = c + c2 >>> 0;
cy = cx + c3 >>> 0;
(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));
if (cx < c2 || cy < c3) {
c = 1;
} else {
c = 0;
}
i = i + (1) >> 0;
}
if (!((c === 0))) {
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));
}
return z;
};
$ptrType(nat).prototype.montgomery = function(x, y, m, k, n) { return this.$get().montgomery(x, y, m, k, n); };
karatsubaAdd = function(z, x, n) {
var $ptr, c, n, x, x$1, x$2, x$3, z;
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));
if (!((c === 0))) {
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);
}
};
karatsubaSub = function(z, x, n) {
var $ptr, c, n, x, x$1, x$2, x$3, z;
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));
if (!((c === 0))) {
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);
}
};
karatsuba = function(z, x, y) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, n, n2, p, r, s, x, x0, x1, xd, y, y0, y1, yd, z;
n = y.$length;
if (!(((n & 1) === 0)) || n < karatsubaThreshold || n < 2) {
basicMul(z, x, y);
return;
}
n2 = n >> 1 >> 0;
_tmp = $subslice(x, n2);
_tmp$1 = $subslice(x, 0, n2);
x1 = _tmp;
x0 = _tmp$1;
_tmp$2 = $subslice(y, n2);
_tmp$3 = $subslice(y, 0, n2);
y1 = _tmp$2;
y0 = _tmp$3;
karatsuba(z, x0, y0);
karatsuba($subslice(z, n), x1, y1);
s = 1;
xd = $subslice(z, ($imul(2, n)), (($imul(2, n)) + n2 >> 0));
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))) {
s = -s;
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));
}
yd = $subslice(z, (($imul(2, n)) + n2 >> 0), ($imul(3, n)));
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))) {
s = -s;
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));
}
p = $subslice(z, ($imul(n, 3)));
karatsuba(p, xd, yd);
r = $subslice(z, ($imul(n, 4)));
$copySlice(r, $subslice(z, 0, ($imul(n, 2))));
karatsubaAdd($subslice(z, n2), r, n);
karatsubaAdd($subslice(z, n2), $subslice(r, n), n);
if (s > 0) {
karatsubaAdd($subslice(z, n2), p, n);
} else {
karatsubaSub($subslice(z, n2), p, n);
}
};
alias = function(x, y) {
var $ptr, x, x$1, x$2, y;
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));
};
addAt = function(z, x, i) {
var $ptr, c, i, j, n, x, x$1, x$2, x$3, x$4, z;
n = x.$length;
if (n > 0) {
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));
if (!((c === 0))) {
j = i + n >> 0;
if (j < z.$length) {
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);
}
}
}
};
max = function(x, y) {
var $ptr, x, y;
if (x > y) {
return x;
}
return y;
};
karatsubaLen = function(n) {
var $ptr, i, n, y;
i = 0;
while (true) {
if (!(n > karatsubaThreshold)) { break; }
n = (n >> $min((1), 31)) >> 0;
i = i + (1) >>> 0;
}
return (y = i, y < 32 ? (n << y) : 0) >> 0;
};
nat.prototype.mul = function(x, y) {
var $ptr, i, k, m, n, t, x, x0, x0$1, xi, y, y0, y0$1, y1, z;
z = this;
m = x.$length;
n = y.$length;
if (m < n) {
return z.mul(y, x);
} else if ((m === 0) || (n === 0)) {
return $subslice(z, 0, 0);
} else if ((n === 1)) {
return z.mulAddWW(x, (0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0]), 0);
}
if (alias(z, x) || alias(z, y)) {
z = nat.nil;
}
if (n < karatsubaThreshold) {
z = z.make(m + n >> 0);
basicMul(z, x, y);
return z.norm();
}
k = karatsubaLen(n);
x0 = $subslice(x, 0, k);
y0 = $subslice(y, 0, k);
z = z.make(max($imul(6, k), m + n >> 0));
karatsuba(z, x0, y0);
z = $subslice(z, 0, (m + n >> 0));
$subslice(z, ($imul(2, k))).clear();
if (k < n || !((m === n))) {
t = nat.nil;
x0$1 = x0.norm();
y1 = $subslice(y, k);
t = t.mul(x0$1, y1);
addAt(z, t, k);
y0$1 = y0.norm();
i = k;
while (true) {
if (!(i < x.$length)) { break; }
xi = $subslice(x, i);
if (xi.$length > k) {
xi = $subslice(xi, 0, k);
}
xi = xi.norm();
t = t.mul(xi, y0$1);
addAt(z, t, i);
t = t.mul(xi, y1);
addAt(z, t, i + k >> 0);
i = i + (k) >> 0;
}
}
return z.norm();
};
$ptrType(nat).prototype.mul = function(x, y) { return this.$get().mul(x, y); };
nat.prototype.mulRange = function(a, b) {
var $ptr, a, b, m, x, z;
z = this;
if ((a.$high === 0 && a.$low === 0)) {
return z.setUint64(new $Uint64(0, 0));
} else if ((a.$high > b.$high || (a.$high === b.$high && a.$low > b.$low))) {
return z.setUint64(new $Uint64(0, 1));
} else if ((a.$high === b.$high && a.$low === b.$low)) {
return z.setUint64(a);
} else if ((x = new $Uint64(a.$high + 0, a.$low + 1), (x.$high === b.$high && x.$low === b.$low))) {
return z.mul((nat.nil).setUint64(a), (nat.nil).setUint64(b));
}
m = $div64((new $Uint64(a.$high + b.$high, a.$low + b.$low)), new $Uint64(0, 2), false);
return z.mul((nat.nil).mulRange(a, m), (nat.nil).mulRange(new $Uint64(m.$high + 0, m.$low + 1), b));
};
$ptrType(nat).prototype.mulRange = function(a, b) { return this.$get().mulRange(a, b); };
nat.prototype.divW = function(x, y) {
var $ptr, m, q, r, x, y, z;
q = nat.nil;
r = 0;
z = this;
m = x.$length;
if ((y === 0)) {
$panic(new $String("division by zero"));
} else if ((y === 1)) {
q = z.set(x);
return [q, r];
} else if ((m === 0)) {
q = $subslice(z, 0, 0);
return [q, r];
}
z = z.make(m);
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);
q = z.norm();
return [q, r];
};
$ptrType(nat).prototype.divW = function(x, y) { return this.$get().divW(x, y); };
nat.prototype.div = function(z2, u, v) {
var $ptr, _r, _tuple, _tuple$1, q, r, r2, u, v, z, z2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
q = nat.nil;
r = nat.nil;
z = this;
if (v.$length === 0) {
$panic(new $String("division by zero"));
}
if (u.cmp(v) < 0) {
q = $subslice(z, 0, 0);
r = z2.set(u);
$s = -1; return [q, r];
}
if (v.$length === 1) {
r2 = 0;
_tuple = z.divW(u, (0 >= v.$length ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + 0]));
q = _tuple[0];
r2 = _tuple[1];
r = z2.setWord(r2);
$s = -1; return [q, r];
}
_r = z.divLarge(z2, u, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
q = _tuple$1[0];
r = _tuple$1[1];
$s = -1; return [q, r];
/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.div }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
$ptrType(nat).prototype.div = function(z2, u, v) { return this.$get().div(z2, u, v); };
getNat = function(n) {
var $ptr, _r, n, v, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; n = $f.n; v = $f.v; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
z = ptrType$4.nil;
_r = natPool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
v = _r;
if (!($interfaceIsEqual(v, $ifaceNil))) {
z = $assertType(v, ptrType$4);
}
if (z === ptrType$4.nil) {
z = $newDataPointer(nat.nil, ptrType$4);
}
z.$set(z.make(n));
$s = -1; return z;
/* */ } return; } if ($f === undefined) { $f = { $blk: getNat }; } $f.$ptr = $ptr; $f._r = _r; $f.n = n; $f.v = v; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
};
putNat = function(x) {
var $ptr, x;
natPool.Put(x);
};
nat.prototype.divLarge = function(u, uIn, v) {
var $ptr, _index, _r, _r$1, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _index = $f._index; _r = $f._r; _r$1 = $f._r$1; _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:
q = nat.nil;
r = nat.nil;
z = this;
n = v.$length;
m = uIn.$length - n >> 0;
if (alias(z, uIn) || alias(z, v)) {
z = nat.nil;
}
q = z.make(m + 1 >> 0);
_r = getNat(n + 1 >> 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
qhatvp = _r;
qhatv = qhatvp.$get();
if (alias(u, uIn) || alias(u, v)) {
u = nat.nil;
}
u = u.make(uIn.$length + 1 >> 0);
u.clear();
v1p = ptrType$4.nil;
shift = nlz((x = n - 1 >> 0, ((x < 0 || x >= v.$length) ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + x])));
/* */ if (shift > 0) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (shift > 0) { */ case 2:
_r$1 = getNat(n); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
v1p = _r$1;
v1 = v1p.$get();
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);
v = v1;
/* } */ case 3:
(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)));
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]));
j = m;
while (true) {
if (!(j >= 0)) { break; }
qhat = 4294967295;
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]));
if (!((ujn === vn1))) {
rhat = 0;
_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);
qhat = _tuple[0];
rhat = _tuple[1];
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]));
_tuple$1 = mulWW(qhat, vn2);
x1 = _tuple$1[0];
x2 = _tuple$1[1];
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]));
while (true) {
if (!(greaterThan(x1, x2, rhat, ujn2))) { break; }
qhat = qhat - (1) >>> 0;
prevRhat = rhat;
rhat = rhat + (vn1) >>> 0;
if (rhat < prevRhat) {
break;
}
_tuple$2 = mulWW(qhat, vn2);
x1 = _tuple$2[0];
x2 = _tuple$2[1];
}
}
((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));
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));
if (!((c === 0))) {
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));
_index = j + n >> 0;
((_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));
qhat = qhat - (1) >>> 0;
}
((j < 0 || j >= q.$length) ? ($throwRuntimeError("index out of range"), undefined) : q.$array[q.$offset + j] = qhat);
j = j - (1) >> 0;
}
if (!(v1p === ptrType$4.nil)) {
putNat(v1p);
}
putNat(qhatvp);
q = q.norm();
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);
r = u.norm();
_tmp = q;
_tmp$1 = r;
q = _tmp;
r = _tmp$1;
$s = -1; return [q, r];
/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.divLarge }; } $f.$ptr = $ptr; $f._index = _index; $f._r = _r; $f._r$1 = _r$1; $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;
};
$ptrType(nat).prototype.divLarge = function(u, uIn, v) { return this.$get().divLarge(u, uIn, v); };
nat.prototype.bitLen = function() {
var $ptr, i, x;
x = this;
i = x.$length - 1 >> 0;
if (i >= 0) {
return ($imul(i, 32)) + bitLen(((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])) >> 0;
}
return 0;
};
$ptrType(nat).prototype.bitLen = function() { return this.$get().bitLen(); };
trailingZeroBits = function(x) {
var $ptr, _1, x, x$1, x$2;
_1 = 32;
if (_1 === (32)) {
return (((x$1 = (($imul((((x & (-x >>> 0)) >>> 0)), 125613361) >>> 0)) >>> 27 >>> 0, ((x$1 < 0 || x$1 >= deBruijn32Lookup.length) ? ($throwRuntimeError("index out of range"), undefined) : deBruijn32Lookup[x$1])) >>> 0));
} else if (_1 === (64)) {
return (((x$2 = 0, ((x$2 < 0 || x$2 >= deBruijn64Lookup.length) ? ($throwRuntimeError("index out of range"), undefined) : deBruijn64Lookup[x$2])) >>> 0));
} else {
$panic(new $String("unknown word size"));
}
};
nat.prototype.trailingZeroBits = function() {
var $ptr, i, x;
x = this;
if (x.$length === 0) {
return 0;
}
i = 0;
while (true) {
if (!(((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) === 0)) { break; }
i = i + (1) >>> 0;
}
return (i * 32 >>> 0) + trailingZeroBits(((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])) >>> 0;
};
$ptrType(nat).prototype.trailingZeroBits = function() { return this.$get().trailingZeroBits(); };
nat.prototype.shl = function(x, s) {
var $ptr, _q, _r, m, n, s, x, x$1, z;
z = this;
m = x.$length;
if (m === 0) {
return $subslice(z, 0, 0);
}
n = m + (((_q = s / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) >> 0)) >> 0;
z = z.make(n + 1 >> 0);
((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 = s % 32, _r === _r ? _r : $throwRuntimeError("integer divide by zero"))));
$subslice(z, 0, (n - m >> 0)).clear();
return z.norm();
};
$ptrType(nat).prototype.shl = function(x, s) { return this.$get().shl(x, s); };
nat.prototype.shr = function(x, s) {
var $ptr, _q, _r, m, n, s, x, x$1, z;
z = this;
m = x.$length;
n = m - (((_q = s / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) >> 0)) >> 0;
if (n <= 0) {
return $subslice(z, 0, 0);
}
z = z.make(n);
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 = s % 32, _r === _r ? _r : $throwRuntimeError("integer divide by zero")));
return z.norm();
};
$ptrType(nat).prototype.shr = function(x, s) { return this.$get().shr(x, s); };
nat.prototype.setBit = function(x, i, b) {
var $ptr, _1, _q, _r, b, i, j, m, n, x, y, z;
z = this;
j = (((_q = i / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) >> 0));
m = (y = ((_r = i % 32, _r === _r ? _r : $throwRuntimeError("integer divide by zero"))), y < 32 ? (1 << y) : 0) >>> 0;
n = x.$length;
_1 = b;
if (_1 === (0)) {
z = z.make(n);
$copySlice(z, x);
if (j >= n) {
return z;
}
((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));
return z.norm();
} else if (_1 === (1)) {
if (j >= n) {
z = z.make(j + 1 >> 0);
$subslice(z, n).clear();
} else {
z = z.make(n);
}
$copySlice(z, x);
((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));
return z;
}
$panic(new $String("set bit is not 0 or 1"));
};
$ptrType(nat).prototype.setBit = function(x, i, b) { return this.$get().setBit(x, i, b); };
nat.prototype.bit = function(i) {
var $ptr, _q, _r, i, j, x, y;
x = this;
j = (_q = i / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
if (j >= ((x.$length >>> 0))) {
return 0;
}
return ((((((y = ((_r = i % 32, _r === _r ? _r : $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));
};
$ptrType(nat).prototype.bit = function(i) { return this.$get().bit(i); };
nat.prototype.and = function(x, y) {
var $ptr, i, m, n, x, y, z;
z = this;
m = x.$length;
n = y.$length;
if (m > n) {
m = n;
}
z = z.make(m);
i = 0;
while (true) {
if (!(i < m)) { break; }
((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));
i = i + (1) >> 0;
}
return z.norm();
};
$ptrType(nat).prototype.and = function(x, y) { return this.$get().and(x, y); };
nat.prototype.andNot = function(x, y) {
var $ptr, i, m, n, x, y, z;
z = this;
m = x.$length;
n = y.$length;
if (n > m) {
n = m;
}
z = z.make(m);
i = 0;
while (true) {
if (!(i < n)) { break; }
((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));
i = i + (1) >> 0;
}
$copySlice($subslice(z, n, m), $subslice(x, n, m));
return z.norm();
};
$ptrType(nat).prototype.andNot = function(x, y) { return this.$get().andNot(x, y); };
nat.prototype.or = function(x, y) {
var $ptr, _tmp, _tmp$1, i, m, n, s, x, y, z;
z = this;
m = x.$length;
n = y.$length;
s = x;
if (m < n) {
_tmp = m;
_tmp$1 = n;
n = _tmp;
m = _tmp$1;
s = y;
}
z = z.make(m);
i = 0;
while (true) {
if (!(i < n)) { break; }
((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));
i = i + (1) >> 0;
}
$copySlice($subslice(z, n, m), $subslice(s, n, m));
return z.norm();
};
$ptrType(nat).prototype.or = function(x, y) { return this.$get().or(x, y); };
nat.prototype.xor = function(x, y) {
var $ptr, _tmp, _tmp$1, i, m, n, s, x, y, z;
z = this;
m = x.$length;
n = y.$length;
s = x;
if (m < n) {
_tmp = m;
_tmp$1 = n;
n = _tmp;
m = _tmp$1;
s = y;
}
z = z.make(m);
i = 0;
while (true) {
if (!(i < n)) { break; }
((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));
i = i + (1) >> 0;
}
$copySlice($subslice(z, n, m), $subslice(s, n, m));
return z.norm();
};
$ptrType(nat).prototype.xor = function(x, y) { return this.$get().xor(x, y); };
greaterThan = function(x1, x2, y1, y2) {
var $ptr, x1, x2, y1, y2;
return x1 > y1 || (x1 === y1) && x2 > y2;
};
nat.prototype.modW = function(d) {
var $ptr, d, q, r, x;
r = 0;
x = this;
q = nat.nil;
q = q.make(x.$length);
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);
return r;
};
$ptrType(nat).prototype.modW = function(d) { return this.$get().modW(d); };
nat.prototype.random = function(rand$1, limit, n) {
var $ptr, _1, _i, _i$1, _index, _r, _r$1, _r$2, _ref, _ref$1, bitLengthOfMSW, i, i$1, limit, mask, n, rand$1, y, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _i = $f._i; _i$1 = $f._i$1; _index = $f._index; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _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:
z = this;
if (alias(z, limit)) {
z = nat.nil;
}
z = z.make(limit.$length);
bitLengthOfMSW = (((_r = n % 32, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >>> 0));
if (bitLengthOfMSW === 0) {
bitLengthOfMSW = 32;
}
mask = (((((y = bitLengthOfMSW, y < 32 ? (1 << y) : 0) >>> 0)) - 1 >>> 0));
/* while (true) { */ case 1:
_1 = 32;
/* */ if (_1 === (32)) { $s = 4; continue; }
/* */ if (_1 === (64)) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (_1 === (32)) { */ case 4:
_ref = z;
_i = 0;
/* while (true) { */ case 8:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 9; continue; }
i = _i;
_r$1 = rand$1.Uint32(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = ((_r$1 >>> 0)));
_i++;
/* } */ $s = 8; continue; case 9:
$s = 7; continue;
/* } else if (_1 === (64)) { */ case 5:
_ref$1 = z;
_i$1 = 0;
/* while (true) { */ case 11:
/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 12; continue; }
i$1 = _i$1;
_r$2 = rand$1.Uint32(); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
((i$1 < 0 || i$1 >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i$1] = ((((_r$2 >>> 0)) | 0) >>> 0));
_i$1++;
/* } */ $s = 11; continue; case 12:
$s = 7; continue;
/* } else { */ case 6:
$panic(new $String("unknown word size"));
/* } */ case 7:
case 3:
_index = limit.$length - 1 >> 0;
((_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));
if (z.cmp(limit) < 0) {
/* break; */ $s = 2; continue;
}
/* } */ $s = 1; continue; case 2:
$s = -1; return z.norm();
/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.random }; } $f.$ptr = $ptr; $f._1 = _1; $f._i = _i; $f._i$1 = _i$1; $f._index = _index; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $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;
};
$ptrType(nat).prototype.random = function(rand$1, limit, n) { return this.$get().random(rand$1, limit, n); };
nat.prototype.expNN = function(x, y, m) {
var $ptr, _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$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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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$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:
z = this;
if (alias(z, x) || alias(z, y)) {
z = nat.nil;
}
if ((m.$length === 1) && ((0 >= m.$length ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + 0]) === 1)) {
$s = -1; return z.setWord(0);
}
if (y.$length === 0) {
$s = -1; return z.setWord(1);
}
/* */ 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; }
/* */ $s = 2; continue;
/* if ((y.$length === 1) && ((0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0]) === 1) && !((m.$length === 0))) { */ case 1:
_r = z.div(z, x, m); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
z = _tuple[1];
$s = -1; return z;
/* } */ case 2:
if (!((m.$length === 0))) {
z = z.make(m.$length);
}
z = z.set(x);
/* */ if (x.cmp(natOne) > 0 && y.$length > 1 && m.$length > 0) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (x.cmp(natOne) > 0 && y.$length > 1 && m.$length > 0) { */ case 4:
/* */ if ((((0 >= m.$length ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + 0]) & 1) >>> 0) === 1) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if ((((0 >= m.$length ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + 0]) & 1) >>> 0) === 1) { */ case 6:
_r$1 = z.expNNMontgomery(x, y, m); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* } */ case 7:
_r$2 = z.expNNWindowed(x, y, m); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$s = -1; return _r$2;
/* } */ case 5:
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]));
shift = nlz(v) + 1 >>> 0;
v = (y$1 = (shift), y$1 < 32 ? (v << y$1) : 0) >>> 0;
q = nat.nil;
w = 32 - ((shift >> 0)) >> 0;
_tmp = nat.nil;
_tmp$1 = nat.nil;
zz = _tmp;
r = _tmp$1;
j = 0;
/* while (true) { */ case 10:
/* if (!(j < w)) { break; } */ if(!(j < w)) { $s = 11; continue; }
zz = zz.mul(z, z);
_tmp$2 = z;
_tmp$3 = zz;
zz = _tmp$2;
z = _tmp$3;
if (!((((v & 2147483648) >>> 0) === 0))) {
zz = zz.mul(z, x);
_tmp$4 = z;
_tmp$5 = zz;
zz = _tmp$4;
z = _tmp$5;
}
/* */ if (!((m.$length === 0))) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (!((m.$length === 0))) { */ case 12:
_r$3 = zz.div(r, z, m); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$1 = _r$3;
zz = _tuple$1[0];
r = _tuple$1[1];
_tmp$6 = q;
_tmp$7 = z;
_tmp$8 = zz;
_tmp$9 = r;
zz = _tmp$6;
r = _tmp$7;
q = _tmp$8;
z = _tmp$9;
/* } */ case 13:
v = (y$2 = (1), y$2 < 32 ? (v << y$2) : 0) >>> 0;
j = j + (1) >> 0;
/* } */ $s = 10; continue; case 11:
i = y.$length - 2 >> 0;
/* while (true) { */ case 15:
/* if (!(i >= 0)) { break; } */ if(!(i >= 0)) { $s = 16; continue; }
v = ((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i]);
j$1 = 0;
/* while (true) { */ case 17:
/* if (!(j$1 < 32)) { break; } */ if(!(j$1 < 32)) { $s = 18; continue; }
zz = zz.mul(z, z);
_tmp$10 = z;
_tmp$11 = zz;
zz = _tmp$10;
z = _tmp$11;
if (!((((v & 2147483648) >>> 0) === 0))) {
zz = zz.mul(z, x);
_tmp$12 = z;
_tmp$13 = zz;
zz = _tmp$12;
z = _tmp$13;
}
/* */ if (!((m.$length === 0))) { $s = 19; continue; }
/* */ $s = 20; continue;
/* if (!((m.$length === 0))) { */ case 19:
_r$4 = zz.div(r, z, m); /* */ $s = 21; case 21: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_tuple$2 = _r$4;
zz = _tuple$2[0];
r = _tuple$2[1];
_tmp$14 = q;
_tmp$15 = z;
_tmp$16 = zz;
_tmp$17 = r;
zz = _tmp$14;
r = _tmp$15;
q = _tmp$16;
z = _tmp$17;
/* } */ case 20:
v = (y$3 = (1), y$3 < 32 ? (v << y$3) : 0) >>> 0;
j$1 = j$1 + (1) >> 0;
/* } */ $s = 17; continue; case 18:
i = i - (1) >> 0;
/* } */ $s = 15; continue; case 16:
$s = -1; return z.norm();
/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.expNN }; } $f.$ptr = $ptr; $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$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;
};
$ptrType(nat).prototype.expNN = function(x, y, m) { return this.$get().expNN(x, y, m); };
nat.prototype.expNNWindowed = function(x, y, m) {
var $ptr, _q, _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$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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
z = this;
_tmp = nat.nil;
_tmp$1 = nat.nil;
zz = _tmp;
r = _tmp$1;
powers = arrayType$1.zero();
powers[0] = natOne;
powers[1] = x;
i = 2;
/* while (true) { */ case 1:
/* if (!(i < 16)) { break; } */ if(!(i < 16)) { $s = 2; continue; }
_tmp$2 = $indexPtr(powers, (_q = i / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), ptrType$4);
_tmp$3 = $indexPtr(powers, i, ptrType$4);
_tmp$4 = $indexPtr(powers, (i + 1 >> 0), ptrType$4);
p2 = _tmp$2;
p = _tmp$3;
p1 = _tmp$4;
p.$set(p.mul(p2.$get(), p2.$get()));
_r = zz.div(r, p.$get(), m); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
zz = _tuple[0];
r = _tuple[1];
_tmp$5 = r;
_tmp$6 = p.$get();
p.$set(_tmp$5);
r = _tmp$6;
p1.$set(p1.mul(p.$get(), x));
_r$1 = zz.div(r, p1.$get(), m); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple$1 = _r$1;
zz = _tuple$1[0];
r = _tuple$1[1];
_tmp$7 = r;
_tmp$8 = p1.$get();
p1.$set(_tmp$7);
r = _tmp$8;
i = i + (2) >> 0;
/* } */ $s = 1; continue; case 2:
z = z.setWord(1);
i$1 = y.$length - 1 >> 0;
/* while (true) { */ case 5:
/* if (!(i$1 >= 0)) { break; } */ if(!(i$1 >= 0)) { $s = 6; continue; }
yi = ((i$1 < 0 || i$1 >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i$1]);
j = 0;
/* while (true) { */ case 7:
/* if (!(j < 32)) { break; } */ if(!(j < 32)) { $s = 8; continue; }
/* */ if (!((i$1 === (y.$length - 1 >> 0))) || !((j === 0))) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (!((i$1 === (y.$length - 1 >> 0))) || !((j === 0))) { */ case 9:
zz = zz.mul(z, z);
_tmp$9 = z;
_tmp$10 = zz;
zz = _tmp$9;
z = _tmp$10;
_r$2 = zz.div(r, z, m); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$2 = _r$2;
zz = _tuple$2[0];
r = _tuple$2[1];
_tmp$11 = r;
_tmp$12 = z;
z = _tmp$11;
r = _tmp$12;
zz = zz.mul(z, z);
_tmp$13 = z;
_tmp$14 = zz;
zz = _tmp$13;
z = _tmp$14;
_r$3 = zz.div(r, z, m); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$3 = _r$3;
zz = _tuple$3[0];
r = _tuple$3[1];
_tmp$15 = r;
_tmp$16 = z;
z = _tmp$15;
r = _tmp$16;
zz = zz.mul(z, z);
_tmp$17 = z;
_tmp$18 = zz;
zz = _tmp$17;
z = _tmp$18;
_r$4 = zz.div(r, z, m); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_tuple$4 = _r$4;
zz = _tuple$4[0];
r = _tuple$4[1];
_tmp$19 = r;
_tmp$20 = z;
z = _tmp$19;
r = _tmp$20;
zz = zz.mul(z, z);
_tmp$21 = z;
_tmp$22 = zz;
zz = _tmp$21;
z = _tmp$22;
_r$5 = zz.div(r, z, m); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_tuple$5 = _r$5;
zz = _tuple$5[0];
r = _tuple$5[1];
_tmp$23 = r;
_tmp$24 = z;
z = _tmp$23;
r = _tmp$24;
/* } */ case 10:
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])));
_tmp$25 = z;
_tmp$26 = zz;
zz = _tmp$25;
z = _tmp$26;
_r$6 = zz.div(r, z, m); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_tuple$6 = _r$6;
zz = _tuple$6[0];
r = _tuple$6[1];
_tmp$27 = r;
_tmp$28 = z;
z = _tmp$27;
r = _tmp$28;
yi = (y$1 = (4), y$1 < 32 ? (yi << y$1) : 0) >>> 0;
j = j + (4) >> 0;
/* } */ $s = 7; continue; case 8:
i$1 = i$1 - (1) >> 0;
/* } */ $s = 5; continue; case 6:
$s = -1; return z.norm();
/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.expNNWindowed }; } $f.$ptr = $ptr; $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._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;
};
$ptrType(nat).prototype.expNNWindowed = function(x, y, m) { return this.$get().expNNWindowed(x, y, m); };
nat.prototype.expNNMontgomery = function(x, y, m) {
var $ptr, RR, _r, _r$1, _r$2, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; RR = $f.RR; _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; 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:
z = this;
numWords = m.$length;
/* */ if (x.$length > numWords) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (x.$length > numWords) { */ case 1:
_r = (nat.nil).div(nat.nil, x, m); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
x = _tuple[1];
/* } */ case 2:
if (x.$length < numWords) {
rr = $makeSlice(nat, numWords);
$copySlice(rr, x);
x = rr;
}
k0 = 2 - (0 >= m.$length ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + 0]) >>> 0;
t = (0 >= m.$length ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + 0]) - 1 >>> 0;
i = 1;
while (true) {
if (!(i < 32)) { break; }
t = $imul(t, (t)) >>> 0;
k0 = $imul(k0, (((t + 1 >>> 0)))) >>> 0;
i = (y$1 = (1), y$1 < 32 ? (i << y$1) : 0) >> 0;
}
k0 = -k0 >>> 0;
RR = (nat.nil).setWord(1);
zz = (nat.nil).shl(RR, ((($imul(($imul(2, numWords)), 32)) >>> 0)));
_r$1 = RR.div(RR, zz, m); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple$1 = _r$1;
RR = _tuple$1[1];
if (RR.$length < numWords) {
zz = zz.make(numWords);
$copySlice(zz, RR);
RR = zz;
}
one = $makeSlice(nat, numWords);
(0 >= one.$length ? ($throwRuntimeError("index out of range"), undefined) : one.$array[one.$offset + 0] = 1);
powers = arrayType$1.zero();
powers[0] = powers[0].montgomery(one, RR, m, k0, numWords);
powers[1] = powers[1].montgomery(x, RR, m, k0, numWords);
i$1 = 2;
while (true) {
if (!(i$1 < 16)) { break; }
((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));
i$1 = i$1 + (1) >> 0;
}
z = z.make(numWords);
$copySlice(z, powers[0]);
zz = zz.make(numWords);
i$2 = y.$length - 1 >> 0;
while (true) {
if (!(i$2 >= 0)) { break; }
yi = ((i$2 < 0 || i$2 >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i$2]);
j = 0;
while (true) {
if (!(j < 32)) { break; }
if (!((i$2 === (y.$length - 1 >> 0))) || !((j === 0))) {
zz = zz.montgomery(z, z, m, k0, numWords);
z = z.montgomery(zz, zz, m, k0, numWords);
zz = zz.montgomery(z, z, m, k0, numWords);
z = z.montgomery(zz, zz, m, k0, numWords);
}
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);
_tmp = zz;
_tmp$1 = z;
z = _tmp;
zz = _tmp$1;
yi = (y$2 = (4), y$2 < 32 ? (yi << y$2) : 0) >>> 0;
j = j + (4) >> 0;
}
i$2 = i$2 - (1) >> 0;
}
zz = zz.montgomery(z, one, m, k0, numWords);
/* */ if (zz.cmp(m) >= 0) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (zz.cmp(m) >= 0) { */ case 5:
zz = zz.sub(zz, m);
/* */ if (zz.cmp(m) >= 0) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (zz.cmp(m) >= 0) { */ case 7:
_r$2 = (nat.nil).div(nat.nil, zz, m); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$2 = _r$2;
zz = _tuple$2[1];
/* } */ case 8:
/* } */ case 6:
$s = -1; return zz.norm();
/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.expNNMontgomery }; } $f.$ptr = $ptr; $f.RR = RR; $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.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;
};
$ptrType(nat).prototype.expNNMontgomery = function(x, y, m) { return this.$get().expNNMontgomery(x, y, m); };
nat.prototype.bytes = function(buf) {
var $ptr, _i, _ref, buf, d, i, j, y, z;
i = 0;
z = this;
i = buf.$length;
_ref = z;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
d = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
j = 0;
while (true) {
if (!(j < 4)) { break; }
i = i - (1) >> 0;
((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = ((d << 24 >>> 24)));
d = (y = (8), y < 32 ? (d >>> y) : 0) >>> 0;
j = j + (1) >> 0;
}
_i++;
}
while (true) {
if (!(i < buf.$length && (((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i]) === 0))) { break; }
i = i + (1) >> 0;
}
return i;
};
$ptrType(nat).prototype.bytes = function(buf) { return this.$get().bytes(buf); };
nat.prototype.setBytes = function(buf) {
var $ptr, _q, buf, d, i, k, s, x, y, z;
z = this;
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")));
k = 0;
s = 0;
d = 0;
i = buf.$length;
while (true) {
if (!(i > 0)) { break; }
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;
s = s + (8) >>> 0;
if (s === 32) {
((k < 0 || k >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + k] = d);
k = k + (1) >> 0;
s = 0;
d = 0;
}
i = i - (1) >> 0;
}
if (k < z.$length) {
((k < 0 || k >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + k] = d);
}
return z.norm();
};
$ptrType(nat).prototype.setBytes = function(buf) { return this.$get().setBytes(buf); };
nat.prototype.sqrt = function(x) {
var $ptr, _q, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, n, x, z, z1, z2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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:
z = this;
if (x.cmp(natOne) <= 0) {
$s = -1; return z.set(x);
}
if (alias(z, x)) {
z = nat.nil;
}
_tmp = nat.nil;
_tmp$1 = nat.nil;
z1 = _tmp;
z2 = _tmp$1;
z1 = z;
z1 = z1.setUint64(new $Uint64(0, 1));
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)));
n = 0;
/* while (true) { */ case 1:
_r = z2.div(nat.nil, x, z1); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
z2 = _tuple[0];
z2 = z2.add(z2, z1);
z2 = z2.shr(z2, 1);
if (z2.cmp(z1) >= 0) {
if ((n & 1) === 0) {
$s = -1; return z1;
}
$s = -1; return z.set(z1);
}
_tmp$2 = z2;
_tmp$3 = z1;
z1 = _tmp$2;
z2 = _tmp$3;
n = n + (1) >> 0;
/* } */ $s = 1; continue; case 2:
$s = -1; return nat.nil;
/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.sqrt }; } $f.$ptr = $ptr; $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.n = n; $f.x = x; $f.z = z; $f.z1 = z1; $f.z2 = z2; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(nat).prototype.sqrt = function(x) { return this.$get().sqrt(x); };
maxPow = function(b) {
var $ptr, _q, _tmp, _tmp$1, b, max$1, n, p;
p = 0;
n = 0;
_tmp = b;
_tmp$1 = 1;
p = _tmp;
n = _tmp$1;
max$1 = (_q = 4294967295 / b, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
while (true) {
if (!(p <= max$1)) { break; }
p = $imul(p, (b)) >>> 0;
n = n + (1) >> 0;
}
return [p, n];
};
pow = function(x, n) {
var $ptr, n, p, x;
p = 0;
p = 1;
while (true) {
if (!(n > 0)) { break; }
if (!(((n & 1) === 0))) {
p = $imul(p, (x)) >>> 0;
}
x = $imul(x, (x)) >>> 0;
n = (n >> $min((1), 31)) >> 0;
}
return p;
};
nat.prototype.scan = function(r, base, fracOk) {
var $ptr, _1, _2, _3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _2 = $f._2; _3 = $f._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; _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:
res = nat.nil;
b = 0;
count = 0;
err = $ifaceNil;
z = this;
baseOk = (base === 0) || !fracOk && 2 <= base && base <= 36 || fracOk && ((base === 2) || (base === 10) || (base === 16));
/* */ if (!baseOk) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!baseOk) { */ case 1:
_r = fmt.Sprintf("illegal number base %d", new sliceType([new $Int(base)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$panic(new $String(_r));
/* } */ case 2:
_r$1 = r.ReadByte(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
ch = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [res, b, count, err];
}
b = base;
/* */ if (base === 0) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (base === 0) { */ case 5:
b = 10;
/* */ if (ch === 48) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (ch === 48) { */ case 7:
count = 1;
_r$2 = r.ReadByte(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$1 = _r$2;
ch = _tuple$1[0];
err = _tuple$1[1];
_1 = err;
/* */ if ($interfaceIsEqual(_1, $ifaceNil)) { $s = 11; continue; }
/* */ if ($interfaceIsEqual(_1, (io.EOF))) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if ($interfaceIsEqual(_1, $ifaceNil)) { */ case 11:
if (!fracOk) {
b = 8;
}
_2 = ch;
if ((_2 === (120)) || (_2 === (88))) {
b = 16;
} else if ((_2 === (98)) || (_2 === (66))) {
b = 2;
}
_3 = b;
/* */ if ((_3 === (16)) || (_3 === (2))) { $s = 16; continue; }
/* */ if (_3 === (8)) { $s = 17; continue; }
/* */ $s = 18; continue;
/* if ((_3 === (16)) || (_3 === (2))) { */ case 16:
count = 0;
_r$3 = r.ReadByte(); /* */ $s = 19; case 19: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$2 = _r$3;
ch = _tuple$2[0];
err = _tuple$2[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [res, b, count, err];
}
$s = 18; continue;
/* } else if (_3 === (8)) { */ case 17:
count = 0;
/* } */ case 18:
case 15:
$s = 14; continue;
/* } else if ($interfaceIsEqual(_1, (io.EOF))) { */ case 12:
res = $subslice(z, 0, 0);
err = $ifaceNil;
$s = -1; return [res, b, count, err];
/* } else { */ case 13:
$s = -1; return [res, b, count, err];
/* } */ case 14:
case 9:
/* } */ case 8:
/* } */ case 6:
z = $subslice(z, 0, 0);
b1 = ((b >>> 0));
_tuple$3 = maxPow(b1);
bn = _tuple$3[0];
n = _tuple$3[1];
di = 0;
i = 0;
dp = -1;
/* while (true) { */ case 20:
/* */ if (fracOk && (ch === 46)) { $s = 22; continue; }
/* */ $s = 23; continue;
/* if (fracOk && (ch === 46)) { */ case 22:
fracOk = false;
dp = count;
_r$4 = r.ReadByte(); /* */ $s = 24; case 24: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_tuple$4 = _r$4;
ch = _tuple$4[0];
err = _tuple$4[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
if ($interfaceIsEqual(err, io.EOF)) {
err = $ifaceNil;
/* break; */ $s = 21; continue;
}
$s = -1; return [res, b, count, err];
}
/* } */ case 23:
d1 = 0;
if (48 <= ch && ch <= 57) {
d1 = (((ch - 48 << 24 >>> 24) >>> 0));
} else if (97 <= ch && ch <= 122) {
d1 = ((((ch - 97 << 24 >>> 24) + 10 << 24 >>> 24) >>> 0));
} else if (65 <= ch && ch <= 90) {
d1 = ((((ch - 65 << 24 >>> 24) + 10 << 24 >>> 24) >>> 0));
} else {
d1 = 37;
}
/* */ if (d1 >= b1) { $s = 25; continue; }
/* */ $s = 26; continue;
/* if (d1 >= b1) { */ case 25:
_r$5 = r.UnreadByte(); /* */ $s = 27; case 27: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_r$5;
/* break; */ $s = 21; continue;
/* } */ case 26:
count = count + (1) >> 0;
di = ($imul(di, b1) >>> 0) + d1 >>> 0;
i = i + (1) >> 0;
if (i === n) {
z = z.mulAddWW(z, bn, di);
di = 0;
i = 0;
}
_r$6 = r.ReadByte(); /* */ $s = 28; case 28: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_tuple$5 = _r$6;
ch = _tuple$5[0];
err = _tuple$5[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
if ($interfaceIsEqual(err, io.EOF)) {
err = $ifaceNil;
/* break; */ $s = 21; continue;
}
$s = -1; return [res, b, count, err];
}
/* } */ $s = 20; continue; case 21:
if (count === 0) {
if ((base === 0) && (b === 8)) {
count = 1;
b = 10;
} else if (!((base === 0)) || !((b === 8))) {
err = errors.New("syntax error scanning number");
}
$s = -1; return [res, b, count, err];
}
if (i > 0) {
z = z.mulAddWW(z, pow(b1, i), di);
}
res = z.norm();
if (dp >= 0) {
count = dp - count >> 0;
}
$s = -1; return [res, b, count, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.scan }; } $f.$ptr = $ptr; $f._1 = _1; $f._2 = _2; $f._3 = _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._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;
};
$ptrType(nat).prototype.scan = function(r, base, fracOk) { return this.$get().scan(r, base, fracOk); };
nat.prototype.utoa = function(base) {
var $ptr, _r, base, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; base = $f.base; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
x = this;
_r = x.itoa(false, base); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.utoa }; } $f.$ptr = $ptr; $f._r = _r; $f.base = base; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(nat).prototype.utoa = function(base) { return this.$get().utoa(base); };
nat.prototype.itoa = function(neg, base) {
var $ptr, _r, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
x = this;
if (base < 2 || base > 36) {
$panic(new $String("invalid base"));
}
if (x.$length === 0) {
$s = -1; return (new sliceType$1($stringToBytes("0")));
}
i = (((x.bitLen()) / math.Log2((base)) >> 0)) + 1 >> 0;
if (neg) {
i = i + (1) >> 0;
}
s = $makeSlice(sliceType$1, i);
b = ((base >>> 0));
/* */ if (b === ((b & (-b >>> 0)) >>> 0)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (b === ((b & (-b >>> 0)) >>> 0)) { */ case 1:
shift = trailingZeroBits(b);
mask = ((((y = shift, y < 32 ? (1 << y) : 0) >>> 0) - 1 >>> 0));
w = (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]);
nbits = 32;
k = 1;
while (true) {
if (!(k < x.$length)) { break; }
while (true) {
if (!(nbits >= shift)) { break; }
i = i - (1) >> 0;
((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt(((w & mask) >>> 0)));
w = (y$1 = (shift), y$1 < 32 ? (w >>> y$1) : 0) >>> 0;
nbits = nbits - (shift) >>> 0;
}
if (nbits === 0) {
w = ((k < 0 || k >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + k]);
nbits = 32;
} else {
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;
i = i - (1) >> 0;
((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt(((w & mask) >>> 0)));
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;
nbits = 32 - ((shift - nbits >>> 0)) >>> 0;
}
k = k + (1) >> 0;
}
while (true) {
if (!(!((w === 0)))) { break; }
i = i - (1) >> 0;
((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt(((w & mask) >>> 0)));
w = (y$4 = (shift), y$4 < 32 ? (w >>> y$4) : 0) >>> 0;
}
$s = 3; continue;
/* } else { */ case 2:
_tuple = maxPow(b);
bb = _tuple[0];
ndigits = _tuple[1];
_r = divisors(x.$length, b, ndigits, bb); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
table = _r;
q = (nat.nil).set(x);
$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; }
i = 0;
while (true) {
if (!(((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]) === 48)) { break; }
i = i + (1) >> 0;
}
/* } */ case 3:
if (neg) {
i = i - (1) >> 0;
((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = 45);
}
$s = -1; return $subslice(s, i);
/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.itoa }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
$ptrType(nat).prototype.itoa = function(neg, base) { return this.$get().itoa(neg, base); };
nat.prototype.convertWords = function(s, b, ndigits, bb, table) {
var $ptr, _q, _q$1, _r, _r$1, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _q$1 = $f._q$1; _r = $f._r; _r$1 = $f._r$1; _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:
q = this;
/* */ if (!(table === sliceType$3.nil)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(table === sliceType$3.nil)) { */ case 1:
r = nat.nil;
index = table.$length - 1 >> 0;
/* while (true) { */ case 3:
/* if (!(q.$length > leafSize)) { break; } */ if(!(q.$length > leafSize)) { $s = 4; continue; }
maxLength = q.bitLen();
minLength = maxLength >> 1 >> 0;
while (true) {
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; }
index = index - (1) >> 0;
}
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) {
index = index - (1) >> 0;
if (index < 0) {
$panic(new $String("internal inconsistency"));
}
}
_r = 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 = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
q = _tuple[0];
r = _tuple[1];
h = s.$length - ((index < 0 || index >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + index]).ndigits >> 0;
$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; }
s = $subslice(s, 0, h);
/* } */ $s = 3; continue; case 4:
/* } */ case 2:
i = s.$length;
r$1 = 0;
if (b === 10) {
while (true) {
if (!(q.$length > 0)) { break; }
_tuple$1 = q.divW(q, bb);
q = _tuple$1[0];
r$1 = _tuple$1[1];
j = 0;
while (true) {
if (!(j < ndigits && i > 0)) { break; }
i = i - (1) >> 0;
t = (_q = r$1 / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
((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));
r$1 = t;
j = j + (1) >> 0;
}
}
} else {
while (true) {
if (!(q.$length > 0)) { break; }
_tuple$2 = q.divW(q, bb);
q = _tuple$2[0];
r$1 = _tuple$2[1];
j$1 = 0;
while (true) {
if (!(j$1 < ndigits && i > 0)) { break; }
i = i - (1) >> 0;
((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt((_r$1 = r$1 % b, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero"))));
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"));
j$1 = j$1 + (1) >> 0;
}
}
}
while (true) {
if (!(i > 0)) { break; }
i = i - (1) >> 0;
((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = 48);
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.convertWords }; } $f.$ptr = $ptr; $f._q = _q; $f._q$1 = _q$1; $f._r = _r; $f._r$1 = _r$1; $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;
};
$ptrType(nat).prototype.convertWords = function(s, b, ndigits, bb, table) { return this.$get().convertWords(s, b, ndigits, bb, table); };
nat.prototype.expWW = function(x, y) {
var $ptr, _r, x, y, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
z = this;
_r = z.expNN((nat.nil).setWord(x), (nat.nil).setWord(y), nat.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.expWW }; } $f.$ptr = $ptr; $f._r = _r; $f.x = x; $f.y = y; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(nat).prototype.expWW = function(x, y) { return this.$get().expWW(x, y); };
divisors = function(m, b, ndigits, bb) {
var $ptr, _r, b, bb, i, k, larger, m, ndigits, table, words, x, x$1, x$2, x$3, y, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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; x$3 = $f.x$3; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
if ((leafSize === 0) || m <= leafSize) {
$s = -1; return sliceType$3.nil;
}
k = 1;
words = leafSize;
while (true) {
if (!(words < (m >> 1 >> 0) && k < 64)) { break; }
k = k + (1) >> 0;
words = (y = (1), y < 32 ? (words << y) : 0) >> 0;
}
table = sliceType$3.nil;
if (b === 10) {
cacheBase10.Mutex.Lock();
table = $subslice(new sliceType$3(cacheBase10.table), 0, k);
} else {
table = $makeSlice(sliceType$3, k);
}
/* */ 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; }
/* */ $s = 2; continue;
/* 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:
larger = nat.nil;
i = 0;
/* while (true) { */ case 3:
/* if (!(i < k)) { break; } */ if(!(i < k)) { $s = 4; continue; }
/* */ if (((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).ndigits === 0) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).ndigits === 0) { */ case 5:
/* */ if (i === 0) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (i === 0) { */ case 7:
_r = (nat.nil).expWW(bb, ((leafSize >>> 0))); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
(0 >= table.$length ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + 0]).bbb = _r;
(0 >= table.$length ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + 0]).ndigits = $imul(ndigits, leafSize);
$s = 9; continue;
/* } else { */ case 8:
((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).bbb = (nat.nil).mul((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, (x$2 = i - 1 >> 0, ((x$2 < 0 || x$2 >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + x$2])).bbb);
((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).ndigits = $imul(2, (x$3 = i - 1 >> 0, ((x$3 < 0 || x$3 >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + x$3])).ndigits);
/* } */ case 9:
larger = (nat.nil).set(((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).bbb);
while (true) {
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; }
((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);
((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;
}
((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();
/* } */ case 6:
i = i + (1) >> 0;
/* } */ $s = 3; continue; case 4:
/* } */ case 2:
if (b === 10) {
cacheBase10.Mutex.Unlock();
}
$s = -1; return table;
/* */ } return; } if ($f === undefined) { $f = { $blk: divisors }; } $f.$ptr = $ptr; $f._r = _r; $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.x$3 = x$3; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
};
Int.ptr.prototype.ProbablyPrime = function(n) {
var $ptr, _1, _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, _tmp, _tmp$1, _v, n, r, rA, rB, w, x, x$1, x$2, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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$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; _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:
x = this;
if (n < 0) {
$panic(new $String("negative n for ProbablyPrime"));
}
if (x.neg || (x.abs.$length === 0)) {
$s = -1; return false;
}
w = (x$1 = x.abs, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0]));
if ((x.abs.$length === 1) && w < 64) {
$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)));
}
if (((w & 1) >>> 0) === 0) {
$s = -1; return false;
}
_tmp = 0;
_tmp$1 = 0;
rA = _tmp;
rB = _tmp$1;
_1 = 32;
if (_1 === (32)) {
rA = ((x.abs.modW(4127218095) >>> 0));
rB = ((x.abs.modW(3948078067) >>> 0));
} else if (_1 === (64)) {
r = x.abs.modW(820596253);
rA = (((_r = r % 4127218095, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >>> 0));
rB = (((_r$1 = r % 3948078067, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) >>> 0));
} else {
$panic(new $String("math/big: invalid word size"));
}
if (((_r$2 = rA % 3, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$3 = rA % 5, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$4 = rA % 7, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$5 = rA % 11, _r$5 === _r$5 ? _r$5 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$6 = rA % 13, _r$6 === _r$6 ? _r$6 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$7 = rA % 17, _r$7 === _r$7 ? _r$7 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$8 = rA % 19, _r$8 === _r$8 ? _r$8 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$9 = rA % 23, _r$9 === _r$9 ? _r$9 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$10 = rA % 37, _r$10 === _r$10 ? _r$10 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$11 = rB % 29, _r$11 === _r$11 ? _r$11 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$12 = rB % 31, _r$12 === _r$12 ? _r$12 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$13 = rB % 41, _r$13 === _r$13 ? _r$13 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$14 = rB % 43, _r$14 === _r$14 ? _r$14 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$15 = rB % 47, _r$15 === _r$15 ? _r$15 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$16 = rB % 53, _r$16 === _r$16 ? _r$16 : $throwRuntimeError("integer divide by zero")) === 0)) {
$s = -1; return false;
}
_r$17 = x.abs.probablyPrimeMillerRabin(n + 1 >> 0, true); /* */ $s = 2; case 2: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
if (!(_r$17)) { _v = false; $s = 1; continue s; }
_r$18 = x.abs.probablyPrimeLucas(); /* */ $s = 3; case 3: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
_v = _r$18; case 1:
$s = -1; return _v;
/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.ProbablyPrime }; } $f.$ptr = $ptr; $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$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._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;
};
Int.prototype.ProbablyPrime = function(n) { return this.$val.ProbablyPrime(n); };
nat.prototype.probablyPrimeMillerRabin = function(reps, force2) {
var $ptr, _r, _r$1, _r$2, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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:
n = this;
nm1 = (nat.nil).sub(n, natOne);
k = nm1.trailingZeroBits();
q = (nat.nil).shr(nm1, k);
nm3 = (nat.nil).sub(nm1, natTwo);
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)))));
_tmp = nat.nil;
_tmp$1 = nat.nil;
_tmp$2 = nat.nil;
x$1 = _tmp;
y = _tmp$1;
quotient = _tmp$2;
nm3Len = nm3.bitLen();
i = 0;
/* while (true) { */ case 1:
/* if (!(i < reps)) { break; } */ if(!(i < reps)) { $s = 2; continue; }
/* */ if ((i === (reps - 1 >> 0)) && force2) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if ((i === (reps - 1 >> 0)) && force2) { */ case 3:
x$1 = x$1.set(natTwo);
$s = 5; continue;
/* } else { */ case 4:
_r = x$1.random(rand$1, nm3, nm3Len); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
x$1 = _r;
x$1 = x$1.add(x$1, natTwo);
/* } */ case 5:
_r$1 = y.expNN(x$1, q, n); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
y = _r$1;
/* */ if ((y.cmp(natOne) === 0) || (y.cmp(nm1) === 0)) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if ((y.cmp(natOne) === 0) || (y.cmp(nm1) === 0)) { */ case 8:
i = i + (1) >> 0;
/* continue; */ $s = 1; continue;
/* } */ case 9:
j = 1;
/* while (true) { */ case 10:
/* if (!(j < k)) { break; } */ if(!(j < k)) { $s = 11; continue; }
y = y.mul(y, y);
_r$2 = quotient.div(y, y, n); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple = _r$2;
quotient = _tuple[0];
y = _tuple[1];
if (y.cmp(nm1) === 0) {
i = i + (1) >> 0;
/* continue NextRandom; */ $s = 1; continue s;
}
if (y.cmp(natOne) === 0) {
$s = -1; return false;
}
j = j + (1) >>> 0;
/* } */ $s = 10; continue; case 11:
$s = -1; return false;
/* } */ $s = 1; continue; case 2:
$s = -1; return true;
/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.probablyPrimeMillerRabin }; } $f.$ptr = $ptr; $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.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;
};
$ptrType(nat).prototype.probablyPrimeMillerRabin = function(reps, force2) { return this.$get().probablyPrimeMillerRabin(reps, force2); };
nat.prototype.probablyPrimeLucas = function() {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
n = this;
if ((n.$length === 0) || (n.cmp(natOne) === 0)) {
$s = -1; return false;
}
if ((((0 >= n.$length ? ($throwRuntimeError("index out of range"), undefined) : n.$array[n.$offset + 0]) & 1) >>> 0) === 0) {
$s = -1; return n.cmp(natTwo) === 0;
}
p = 3;
d = new nat([1]);
t1 = (nat.nil);
intD = new Int.ptr(false, d);
intN = new Int.ptr(false, n);
/* while (true) { */ case 1:
/* */ if (p > 10000) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (p > 10000) { */ case 3:
_r = intN.String(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$panic(new $String("math/big: internal error: cannot find (D/n) = -1 for " + _r));
/* } */ case 4:
(0 >= d.$length ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + 0] = (($imul(p, p) >>> 0) - 4 >>> 0));
_r$1 = Jacobi(intD, intN); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
j = _r$1;
if (j === -1) {
/* break; */ $s = 2; continue;
}
if (j === 0) {
$s = -1; return (n.$length === 1) && ((0 >= n.$length ? ($throwRuntimeError("index out of range"), undefined) : n.$array[n.$offset + 0]) === (p + 2 >>> 0));
}
/* */ if (p === 40) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (p === 40) { */ case 7:
_r$2 = t1.sqrt(n); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
t1 = _r$2;
t1 = t1.mul(t1, t1);
if (t1.cmp(n) === 0) {
$s = -1; return false;
}
/* } */ case 8:
p = p + (1) >>> 0;
/* } */ $s = 1; continue; case 2:
s = (nat.nil).add(n, natOne);
r = ((s.trailingZeroBits() >> 0));
s = s.shr(s, ((r >>> 0)));
nm2 = (nat.nil).sub(n, natTwo);
natP = (nat.nil).setWord(p);
vk = (nat.nil).setWord(2);
vk1 = (nat.nil).setWord(p);
t2 = (nat.nil);
i = (s.bitLen());
/* while (true) { */ case 10:
/* if (!(i >= 0)) { break; } */ if(!(i >= 0)) { $s = 11; continue; }
/* */ if (!((s.bit(((i >>> 0))) === 0))) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (!((s.bit(((i >>> 0))) === 0))) { */ case 12:
t1 = t1.mul(vk, vk1);
t1 = t1.add(t1, n);
t1 = t1.sub(t1, natP);
_r$3 = t2.div(vk, t1, n); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple = _r$3;
t2 = _tuple[0];
vk = _tuple[1];
t1 = t1.mul(vk1, vk1);
t1 = t1.add(t1, nm2);
_r$4 = t2.div(vk1, t1, n); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_tuple$1 = _r$4;
t2 = _tuple$1[0];
vk1 = _tuple$1[1];
$s = 14; continue;
/* } else { */ case 13:
t1 = t1.mul(vk, vk1);
t1 = t1.add(t1, n);
t1 = t1.sub(t1, natP);
_r$5 = t2.div(vk1, t1, n); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_tuple$2 = _r$5;
t2 = _tuple$2[0];
vk1 = _tuple$2[1];
t1 = t1.mul(vk, vk);
t1 = t1.add(t1, nm2);
_r$6 = t2.div(vk, t1, n); /* */ $s = 18; case 18: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_tuple$3 = _r$6;
t2 = _tuple$3[0];
vk = _tuple$3[1];
/* } */ case 14:
i = i - (1) >> 0;
/* } */ $s = 10; continue; case 11:
/* */ if ((vk.cmp(natTwo) === 0) || (vk.cmp(nm2) === 0)) { $s = 19; continue; }
/* */ $s = 20; continue;
/* if ((vk.cmp(natTwo) === 0) || (vk.cmp(nm2) === 0)) { */ case 19:
t1$1 = t1.mul(vk, natP);
t2$1 = t2.shl(vk1, 1);
if (t1$1.cmp(t2$1) < 0) {
_tmp = t2$1;
_tmp$1 = t1$1;
t1$1 = _tmp;
t2$1 = _tmp$1;
}
t1$1 = t1$1.sub(t1$1, t2$1);
t3 = vk1;
vk1 = nat.nil;
$unused(vk1);
_r$7 = t2$1.div(t3, t1$1, n); /* */ $s = 21; case 21: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_tuple$4 = _r$7;
t2$1 = _tuple$4[0];
t3 = _tuple$4[1];
if (t3.$length === 0) {
$s = -1; return true;
}
/* } */ case 20:
t = 0;
/* while (true) { */ case 22:
/* if (!(t < (r - 1 >> 0))) { break; } */ if(!(t < (r - 1 >> 0))) { $s = 23; continue; }
if (vk.$length === 0) {
$s = -1; return true;
}
if ((vk.$length === 1) && ((0 >= vk.$length ? ($throwRuntimeError("index out of range"), undefined) : vk.$array[vk.$offset + 0]) === 2)) {
$s = -1; return false;
}
t1 = t1.mul(vk, vk);
t1 = t1.sub(t1, natTwo);
_r$8 = t2.div(vk, t1, n); /* */ $s = 24; case 24: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_tuple$5 = _r$8;
t2 = _tuple$5[0];
vk = _tuple$5[1];
t = t + (1) >> 0;
/* } */ $s = 22; continue; case 23:
$s = -1; return false;
/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.probablyPrimeLucas }; } $f.$ptr = $ptr; $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._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;
};
$ptrType(nat).prototype.probablyPrimeLucas = function() { return this.$get().probablyPrimeLucas(); };
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: "Int64", name: "Int64", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64], false)}, {prop: "SetString", name: "SetString", pkg: "", typ: $funcType([$String, $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: "binaryGCD", name: "binaryGCD", 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)}];
byteReader.methods = [{prop: "ReadByte", name: "ReadByte", pkg: "", typ: $funcType([], [$Uint8, $error], false)}, {prop: "UnreadByte", name: "UnreadByte", pkg: "", typ: $funcType([], [$error], false)}];
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: "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)}];
Int.init("math/big", [{prop: "neg", name: "neg", exported: false, typ: $Bool, tag: ""}, {prop: "abs", name: "abs", exported: false, typ: nat, tag: ""}]);
byteReader.init("", [{prop: "ScanState", name: "", exported: true, typ: fmt.ScanState, tag: ""}]);
nat.init(Word);
divisor.init("math/big", [{prop: "bbb", name: "bbb", exported: false, typ: nat, tag: ""}, {prop: "nbits", name: "nbits", exported: false, typ: $Int, tag: ""}, {prop: "ndigits", name: "ndigits", exported: false, typ: $Int, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = binary.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = errors.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = fmt.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = nosync.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = math.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = rand.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strconv.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strings.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
natPool = new nosync.Pool.ptr(sliceType.nil, $throwNilPointerError);
cacheBase10 = new structType.ptr(new nosync.Mutex.ptr(false), arrayType.zero());
natOne = new nat([1]);
intOne = new Int.ptr(false, natOne);
natTwo = new nat([2]);
karatsubaThreshold = 40;
deBruijn32Lookup = $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]);
deBruijn64Lookup = $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]);
leafSize = 8;
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["crypto/rand"] = (function() {
var $pkg = {}, $init, errors, js, io, big, rngReader, sliceType, ptrType, ptrType$1, smallPrimesProduct, init, Read, Int;
errors = $packages["errors"];
js = $packages["github.com/gopherjs/gopherjs/js"];
io = $packages["io"];
big = $packages["math/big"];
rngReader = $pkg.rngReader = $newType(0, $kindStruct, "rand.rngReader", true, "crypto/rand", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
sliceType = $sliceType($Uint8);
ptrType = $ptrType(big.Int);
ptrType$1 = $ptrType(rngReader);
init = function() {
var $ptr;
$pkg.Reader = new rngReader.ptr();
};
rngReader.ptr.prototype.Read = function(b) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, array, b, crypto, err, n, offset, r, randomBytes, require;
n = 0;
err = $ifaceNil;
r = this;
array = b.$array;
offset = $parseInt(b.$offset) >> 0;
crypto = $global.crypto;
if (crypto === undefined) {
crypto = $global.msCrypto;
}
if (!(crypto === undefined)) {
if (!(crypto.getRandomValues === undefined)) {
n = b.$length;
if (n > 65536) {
n = 65536;
}
crypto.getRandomValues(array.subarray(offset, offset + n >> 0));
_tmp = n;
_tmp$1 = $ifaceNil;
n = _tmp;
err = _tmp$1;
return [n, err];
}
}
require = $global.require;
if (!(require === undefined)) {
randomBytes = require($externalize("crypto", $String)).randomBytes;
if (!(randomBytes === undefined)) {
array.set(randomBytes(b.$length), offset);
_tmp$2 = b.$length;
_tmp$3 = $ifaceNil;
n = _tmp$2;
err = _tmp$3;
return [n, err];
}
}
_tmp$4 = 0;
_tmp$5 = errors.New("crypto/rand not available in this environment");
n = _tmp$4;
err = _tmp$5;
return [n, err];
};
rngReader.prototype.Read = function(b) { return this.$val.Read(b); };
Read = function(b) {
var $ptr, _r, _tuple, b, err, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
_r = io.ReadFull($pkg.Reader, b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Read }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Read = Read;
Int = function(rand, max) {
var $ptr, _q, _r, _r$1, _tmp, _tmp$1, _tuple, b, bytes, err, k, max, n, rand, y, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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:
n = ptrType.nil;
err = $ifaceNil;
if (max.Sign() <= 0) {
$panic(new $String("crypto/rand: argument to Int is <= 0"));
}
k = (_q = ((max.BitLen() + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
b = (((_r = max.BitLen() % 8, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >>> 0));
if (b === 0) {
b = 8;
}
bytes = $makeSlice(sliceType, k);
n = new big.Int.ptr(false, big.nat.nil);
/* while (true) { */ case 1:
_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; }
_tuple = _r$1;
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = ptrType.nil;
_tmp$1 = err;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
(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));
n.SetBytes(bytes);
if (n.Cmp(max) < 0) {
$s = -1; return [n, err];
}
/* } */ $s = 1; continue; case 2:
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Int }; } $f.$ptr = $ptr; $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.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;
};
$pkg.Int = Int;
ptrType$1.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}];
rngReader.init("", []);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = big.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$pkg.Reader = $ifaceNil;
smallPrimesProduct = new big.Int.ptr(false, big.nat.nil).SetUint64(new $Uint64(3793877372, 820596253));
init();
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["crypto"] = (function() {
var $pkg = {}, $init, hash, io, strconv, Hash, PublicKey, PrivateKey, Signer, SignerOpts, Decrypter, DecrypterOpts, sliceType, funcType, sliceType$1, digestSizes, hashes, RegisterHash;
hash = $packages["hash"];
io = $packages["io"];
strconv = $packages["strconv"];
Hash = $pkg.Hash = $newType(4, $kindUint, "crypto.Hash", true, "crypto", true, null);
PublicKey = $pkg.PublicKey = $newType(8, $kindInterface, "crypto.PublicKey", true, "crypto", true, null);
PrivateKey = $pkg.PrivateKey = $newType(8, $kindInterface, "crypto.PrivateKey", true, "crypto", true, null);
Signer = $pkg.Signer = $newType(8, $kindInterface, "crypto.Signer", true, "crypto", true, null);
SignerOpts = $pkg.SignerOpts = $newType(8, $kindInterface, "crypto.SignerOpts", true, "crypto", true, null);
Decrypter = $pkg.Decrypter = $newType(8, $kindInterface, "crypto.Decrypter", true, "crypto", true, null);
DecrypterOpts = $pkg.DecrypterOpts = $newType(8, $kindInterface, "crypto.DecrypterOpts", true, "crypto", true, null);
sliceType = $sliceType($Uint8);
funcType = $funcType([], [hash.Hash], false);
sliceType$1 = $sliceType(funcType);
Hash.prototype.HashFunc = function() {
var $ptr, h;
h = this.$val;
return h;
};
$ptrType(Hash).prototype.HashFunc = function() { return new Hash(this.$get()).HashFunc(); };
Hash.prototype.Size = function() {
var $ptr, h;
h = this.$val;
if (h > 0 && h < 16) {
return ((((h < 0 || h >= digestSizes.$length) ? ($throwRuntimeError("index out of range"), undefined) : digestSizes.$array[digestSizes.$offset + h]) >> 0));
}
$panic(new $String("crypto: Size of unknown hash function"));
};
$ptrType(Hash).prototype.Size = function() { return new Hash(this.$get()).Size(); };
Hash.prototype.New = function() {
var $ptr, _r, f, h, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; f = $f.f; h = $f.h; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
h = this.$val;
/* */ if (h > 0 && h < 16) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (h > 0 && h < 16) { */ case 1:
f = ((h < 0 || h >= hashes.$length) ? ($throwRuntimeError("index out of range"), undefined) : hashes.$array[hashes.$offset + h]);
/* */ if (!(f === $throwNilPointerError)) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!(f === $throwNilPointerError)) { */ case 3:
_r = f(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 4:
/* } */ case 2:
$panic(new $String("crypto: requested hash function #" + strconv.Itoa(((h >> 0))) + " is unavailable"));
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: Hash.prototype.New }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.h = h; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(Hash).prototype.New = function() { return new Hash(this.$get()).New(); };
Hash.prototype.Available = function() {
var $ptr, h;
h = this.$val;
return h < 16 && !(((h < 0 || h >= hashes.$length) ? ($throwRuntimeError("index out of range"), undefined) : hashes.$array[hashes.$offset + h]) === $throwNilPointerError);
};
$ptrType(Hash).prototype.Available = function() { return new Hash(this.$get()).Available(); };
RegisterHash = function(h, f) {
var $ptr, f, h;
if (h >= 16) {
$panic(new $String("crypto: RegisterHash of unknown hash function"));
}
((h < 0 || h >= hashes.$length) ? ($throwRuntimeError("index out of range"), undefined) : hashes.$array[hashes.$offset + h] = f);
};
$pkg.RegisterHash = RegisterHash;
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)}];
PublicKey.init([]);
PrivateKey.init([]);
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)}]);
SignerOpts.init([{prop: "HashFunc", name: "HashFunc", pkg: "", typ: $funcType([], [Hash], false)}]);
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)}]);
DecrypterOpts.init([]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = hash.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strconv.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
digestSizes = new sliceType([0, 16, 16, 20, 28, 32, 48, 64, 36, 20, 28, 32, 48, 64, 28, 32]);
hashes = $makeSlice(sliceType$1, 16);
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["crypto/subtle"] = (function() {
var $pkg = {}, $init, ConstantTimeCompare, ConstantTimeSelect, ConstantTimeByteEq, ConstantTimeEq, ConstantTimeCopy, ConstantTimeLessOrEq;
ConstantTimeCompare = function(x, y) {
var $ptr, i, v, x, y;
if (!((x.$length === y.$length))) {
return 0;
}
v = 0;
i = 0;
while (true) {
if (!(i < x.$length)) { break; }
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;
i = i + (1) >> 0;
}
return ConstantTimeByteEq(v, 0);
};
$pkg.ConstantTimeCompare = ConstantTimeCompare;
ConstantTimeSelect = function(v, x, y) {
var $ptr, v, x, y;
return ((~((v - 1 >> 0)) >> 0) & x) | (((v - 1 >> 0)) & y);
};
$pkg.ConstantTimeSelect = ConstantTimeSelect;
ConstantTimeByteEq = function(x, y) {
var $ptr, x, y, z;
z = ~(((x ^ y) << 24 >>> 24)) << 24 >>> 24;
z = (z & ((z >>> 4 << 24 >>> 24))) >>> 0;
z = (z & ((z >>> 2 << 24 >>> 24))) >>> 0;
z = (z & ((z >>> 1 << 24 >>> 24))) >>> 0;
return ((z >> 0));
};
$pkg.ConstantTimeByteEq = ConstantTimeByteEq;
ConstantTimeEq = function(x, y) {
var $ptr, x, y, z;
z = ~(((x ^ y) >> 0)) >> 0;
z = z & ((z >> 16 >> 0));
z = z & ((z >> 8 >> 0));
z = z & ((z >> 4 >> 0));
z = z & ((z >> 2 >> 0));
z = z & ((z >> 1 >> 0));
return (((z & 1) >> 0));
};
$pkg.ConstantTimeEq = ConstantTimeEq;
ConstantTimeCopy = function(v, x, y) {
var $ptr, i, v, x, xmask, y, ymask;
if (!((x.$length === y.$length))) {
$panic(new $String("subtle: slices have different lengths"));
}
xmask = (((v - 1 >> 0) << 24 >>> 24));
ymask = (((~((v - 1 >> 0)) >> 0) << 24 >>> 24));
i = 0;
while (true) {
if (!(i < x.$length)) { break; }
((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));
i = i + (1) >> 0;
}
};
$pkg.ConstantTimeCopy = ConstantTimeCopy;
ConstantTimeLessOrEq = function(x, y) {
var $ptr, x, x32, y, y32;
x32 = ((x >> 0));
y32 = ((y >> 0));
return ((((((((x32 - y32 >> 0) - 1 >> 0)) >> 31 >> 0)) & 1) >> 0));
};
$pkg.ConstantTimeLessOrEq = ConstantTimeLessOrEq;
$init = function() {
$pkg.$init = function() {};
/* */ 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:
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["crypto/cipher"] = (function() {
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;
subtle = $packages["crypto/subtle"];
errors = $packages["errors"];
io = $packages["io"];
runtime = $packages["runtime"];
cbc = $pkg.cbc = $newType(0, $kindStruct, "cipher.cbc", true, "crypto/cipher", false, function(b_, blockSize_, iv_, tmp_) {
this.$val = this;
if (arguments.length === 0) {
this.b = $ifaceNil;
this.blockSize = 0;
this.iv = sliceType$1.nil;
this.tmp = sliceType$1.nil;
return;
}
this.b = b_;
this.blockSize = blockSize_;
this.iv = iv_;
this.tmp = tmp_;
});
cbcEncrypter = $pkg.cbcEncrypter = $newType(0, $kindStruct, "cipher.cbcEncrypter", true, "crypto/cipher", false, function(b_, blockSize_, iv_, tmp_) {
this.$val = this;
if (arguments.length === 0) {
this.b = $ifaceNil;
this.blockSize = 0;
this.iv = sliceType$1.nil;
this.tmp = sliceType$1.nil;
return;
}
this.b = b_;
this.blockSize = blockSize_;
this.iv = iv_;
this.tmp = tmp_;
});
cbcEncAble = $pkg.cbcEncAble = $newType(8, $kindInterface, "cipher.cbcEncAble", true, "crypto/cipher", false, null);
cbcDecrypter = $pkg.cbcDecrypter = $newType(0, $kindStruct, "cipher.cbcDecrypter", true, "crypto/cipher", false, function(b_, blockSize_, iv_, tmp_) {
this.$val = this;
if (arguments.length === 0) {
this.b = $ifaceNil;
this.blockSize = 0;
this.iv = sliceType$1.nil;
this.tmp = sliceType$1.nil;
return;
}
this.b = b_;
this.blockSize = blockSize_;
this.iv = iv_;
this.tmp = tmp_;
});
cbcDecAble = $pkg.cbcDecAble = $newType(8, $kindInterface, "cipher.cbcDecAble", true, "crypto/cipher", false, null);
Block = $pkg.Block = $newType(8, $kindInterface, "cipher.Block", true, "crypto/cipher", true, null);
Stream = $pkg.Stream = $newType(8, $kindInterface, "cipher.Stream", true, "crypto/cipher", true, null);
BlockMode = $pkg.BlockMode = $newType(8, $kindInterface, "cipher.BlockMode", true, "crypto/cipher", true, null);
ctr = $pkg.ctr = $newType(0, $kindStruct, "cipher.ctr", true, "crypto/cipher", false, function(b_, ctr_, out_, outUsed_) {
this.$val = this;
if (arguments.length === 0) {
this.b = $ifaceNil;
this.ctr = sliceType$1.nil;
this.out = sliceType$1.nil;
this.outUsed = 0;
return;
}
this.b = b_;
this.ctr = ctr_;
this.out = out_;
this.outUsed = outUsed_;
});
ctrAble = $pkg.ctrAble = $newType(8, $kindInterface, "cipher.ctrAble", true, "crypto/cipher", false, null);
AEAD = $pkg.AEAD = $newType(8, $kindInterface, "cipher.AEAD", true, "crypto/cipher", true, null);
gcmAble = $pkg.gcmAble = $newType(8, $kindInterface, "cipher.gcmAble", true, "crypto/cipher", false, null);
gcmFieldElement = $pkg.gcmFieldElement = $newType(0, $kindStruct, "cipher.gcmFieldElement", true, "crypto/cipher", false, function(low_, high_) {
this.$val = this;
if (arguments.length === 0) {
this.low = new $Uint64(0, 0);
this.high = new $Uint64(0, 0);
return;
}
this.low = low_;
this.high = high_;
});
gcm = $pkg.gcm = $newType(0, $kindStruct, "cipher.gcm", true, "crypto/cipher", false, function(cipher_, nonceSize_, productTable_) {
this.$val = this;
if (arguments.length === 0) {
this.cipher = $ifaceNil;
this.nonceSize = 0;
this.productTable = arrayType$1.zero();
return;
}
this.cipher = cipher_;
this.nonceSize = nonceSize_;
this.productTable = productTable_;
});
StreamReader = $pkg.StreamReader = $newType(0, $kindStruct, "cipher.StreamReader", true, "crypto/cipher", true, function(S_, R_) {
this.$val = this;
if (arguments.length === 0) {
this.S = $ifaceNil;
this.R = $ifaceNil;
return;
}
this.S = S_;
this.R = R_;
});
sliceType = $sliceType($Uint16);
sliceType$1 = $sliceType($Uint8);
ptrType = $ptrType(cbcEncrypter);
ptrType$1 = $ptrType(cbcDecrypter);
arrayType = $arrayType($Uint8, 16);
arrayType$1 = $arrayType(gcmFieldElement, 16);
ptrType$3 = $ptrType(ctr);
ptrType$4 = $ptrType(gcmFieldElement);
ptrType$5 = $ptrType(arrayType);
ptrType$6 = $ptrType(gcm);
newCBC = function(b, iv) {
var $ptr, _r, _r$1, b, iv, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = b.BlockSize(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_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; }
$s = -1; return new cbc.ptr(b, _r, dup(iv), $makeSlice(sliceType$1, _r$1));
/* */ } return; } if ($f === undefined) { $f = { $blk: newCBC }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.b = b; $f.iv = iv; $f.$s = $s; $f.$r = $r; return $f;
};
NewCBCEncrypter = function(b, iv) {
var $ptr, _r, _r$1, _r$2, _tuple, b, cbc$1, iv, ok, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = b.BlockSize(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (!((iv.$length === _r))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!((iv.$length === _r))) { */ case 1:
$panic(new $String("cipher.NewCBCEncrypter: IV length must equal block size"));
/* } */ case 2:
_tuple = $assertType(b, cbcEncAble, true);
cbc$1 = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (ok) { */ case 4:
_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; }
$s = -1; return _r$1;
/* } */ case 5:
_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; }
$s = -1; return ($pointerOfStructConversion(_r$2, ptrType));
/* */ } return; } if ($f === undefined) { $f = { $blk: NewCBCEncrypter }; } $f.$ptr = $ptr; $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;
};
$pkg.NewCBCEncrypter = NewCBCEncrypter;
cbcEncrypter.ptr.prototype.BlockSize = function() {
var $ptr, x;
x = this;
return x.blockSize;
};
cbcEncrypter.prototype.BlockSize = function() { return this.$val.BlockSize(); };
cbcEncrypter.ptr.prototype.CryptBlocks = function(dst, src) {
var $ptr, _r, dst, iv, src, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
x = this;
if (!(((_r = src.$length % x.blockSize, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0))) {
$panic(new $String("crypto/cipher: input not full blocks"));
}
if (dst.$length < src.$length) {
$panic(new $String("crypto/cipher: output smaller than input"));
}
iv = x.iv;
/* while (true) { */ case 1:
/* if (!(src.$length > 0)) { break; } */ if(!(src.$length > 0)) { $s = 2; continue; }
xorBytes($subslice(dst, 0, x.blockSize), $subslice(src, 0, x.blockSize), iv);
$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; }
iv = $subslice(dst, 0, x.blockSize);
src = $subslice(src, x.blockSize);
dst = $subslice(dst, x.blockSize);
/* } */ $s = 1; continue; case 2:
$copySlice(x.iv, iv);
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: cbcEncrypter.ptr.prototype.CryptBlocks }; } $f.$ptr = $ptr; $f._r = _r; $f.dst = dst; $f.iv = iv; $f.src = src; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
cbcEncrypter.prototype.CryptBlocks = function(dst, src) { return this.$val.CryptBlocks(dst, src); };
cbcEncrypter.ptr.prototype.SetIV = function(iv) {
var $ptr, iv, x;
x = this;
if (!((iv.$length === x.iv.$length))) {
$panic(new $String("cipher: incorrect length IV"));
}
$copySlice(x.iv, iv);
};
cbcEncrypter.prototype.SetIV = function(iv) { return this.$val.SetIV(iv); };
NewCBCDecrypter = function(b, iv) {
var $ptr, _r, _r$1, _r$2, _tuple, b, cbc$1, iv, ok, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = b.BlockSize(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (!((iv.$length === _r))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!((iv.$length === _r))) { */ case 1:
$panic(new $String("cipher.NewCBCDecrypter: IV length must equal block size"));
/* } */ case 2:
_tuple = $assertType(b, cbcDecAble, true);
cbc$1 = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (ok) { */ case 4:
_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; }
$s = -1; return _r$1;
/* } */ case 5:
_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; }
$s = -1; return ($pointerOfStructConversion(_r$2, ptrType$1));
/* */ } return; } if ($f === undefined) { $f = { $blk: NewCBCDecrypter }; } $f.$ptr = $ptr; $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;
};
$pkg.NewCBCDecrypter = NewCBCDecrypter;
cbcDecrypter.ptr.prototype.BlockSize = function() {
var $ptr, x;
x = this;
return x.blockSize;
};
cbcDecrypter.prototype.BlockSize = function() { return this.$val.BlockSize(); };
cbcDecrypter.ptr.prototype.CryptBlocks = function(dst, src) {
var $ptr, _r, _tmp, _tmp$1, dst, end, prev, src, start, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
x = this;
if (!(((_r = src.$length % x.blockSize, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0))) {
$panic(new $String("crypto/cipher: input not full blocks"));
}
if (dst.$length < src.$length) {
$panic(new $String("crypto/cipher: output smaller than input"));
}
if (src.$length === 0) {
$s = -1; return;
}
end = src.$length;
start = end - x.blockSize >> 0;
prev = start - x.blockSize >> 0;
$copySlice(x.tmp, $subslice(src, start, end));
/* while (true) { */ case 1:
/* if (!(start > 0)) { break; } */ if(!(start > 0)) { $s = 2; continue; }
$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; }
xorBytes($subslice(dst, start, end), $subslice(dst, start, end), $subslice(src, prev, start));
end = start;
start = prev;
prev = prev - (x.blockSize) >> 0;
/* } */ $s = 1; continue; case 2:
$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; }
xorBytes($subslice(dst, start, end), $subslice(dst, start, end), x.iv);
_tmp = x.tmp;
_tmp$1 = x.iv;
x.iv = _tmp;
x.tmp = _tmp$1;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: cbcDecrypter.ptr.prototype.CryptBlocks }; } $f.$ptr = $ptr; $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;
};
cbcDecrypter.prototype.CryptBlocks = function(dst, src) { return this.$val.CryptBlocks(dst, src); };
cbcDecrypter.ptr.prototype.SetIV = function(iv) {
var $ptr, iv, x;
x = this;
if (!((iv.$length === x.iv.$length))) {
$panic(new $String("cipher: incorrect length IV"));
}
$copySlice(x.iv, iv);
};
cbcDecrypter.prototype.SetIV = function(iv) { return this.$val.SetIV(iv); };
dup = function(p) {
var $ptr, p, q;
q = $makeSlice(sliceType$1, p.$length);
$copySlice(q, p);
return q;
};
NewCTR = function(block, iv) {
var $ptr, _r, _r$1, _r$2, _r$3, _tuple, block, bufSize, ctr$1, iv, ok, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_tuple = $assertType(block, ctrAble, true);
ctr$1 = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (ok) { */ case 1:
_r = ctr$1.NewCTR(iv); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 2:
_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; }
/* */ if (!((iv.$length === _r$1))) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!((iv.$length === _r$1))) { */ case 4:
$panic(new $String("cipher.NewCTR: IV length must equal block size"));
/* } */ case 5:
bufSize = 512;
_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; }
/* */ if (bufSize < _r$2) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (bufSize < _r$2) { */ case 7:
_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; }
bufSize = _r$3;
/* } */ case 8:
$s = -1; return new ctr.ptr(block, dup(iv), $makeSlice(sliceType$1, 0, bufSize), 0);
/* */ } return; } if ($f === undefined) { $f = { $blk: NewCTR }; } $f.$ptr = $ptr; $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;
};
$pkg.NewCTR = NewCTR;
ctr.ptr.prototype.refill = function() {
var $ptr, _r, bs, i, remain, x, x$1, x$2, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
x = this;
remain = x.out.$length - x.outUsed >> 0;
$copySlice(x.out, $subslice(x.out, x.outUsed));
x.out = $subslice(x.out, 0, x.out.$capacity);
_r = x.b.BlockSize(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
bs = _r;
/* while (true) { */ case 2:
/* if (!(remain <= (x.out.$length - bs >> 0))) { break; } */ if(!(remain <= (x.out.$length - bs >> 0))) { $s = 3; continue; }
$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; }
remain = remain + (bs) >> 0;
i = x.ctr.$length - 1 >> 0;
while (true) {
if (!(i >= 0)) { break; }
(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)));
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))) {
break;
}
i = i - (1) >> 0;
}
/* } */ $s = 2; continue; case 3:
x.out = $subslice(x.out, 0, remain);
x.outUsed = 0;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: ctr.ptr.prototype.refill }; } $f.$ptr = $ptr; $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;
};
ctr.prototype.refill = function() { return this.$val.refill(); };
ctr.ptr.prototype.XORKeyStream = function(dst, src) {
var $ptr, _r, dst, n, src, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
x = this;
/* while (true) { */ case 1:
/* if (!(src.$length > 0)) { break; } */ if(!(src.$length > 0)) { $s = 2; continue; }
_r = x.b.BlockSize(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (x.outUsed >= (x.out.$length - _r >> 0)) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (x.outUsed >= (x.out.$length - _r >> 0)) { */ case 3:
$r = x.refill(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 4:
n = xorBytes(dst, src, $subslice(x.out, x.outUsed));
dst = $subslice(dst, n);
src = $subslice(src, n);
x.outUsed = x.outUsed + (n) >> 0;
/* } */ $s = 1; continue; case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: ctr.ptr.prototype.XORKeyStream }; } $f.$ptr = $ptr; $f._r = _r; $f.dst = dst; $f.n = n; $f.src = src; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
ctr.prototype.XORKeyStream = function(dst, src) { return this.$val.XORKeyStream(dst, src); };
NewGCM = function(cipher) {
var $ptr, _r, cipher, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; cipher = $f.cipher; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = NewGCMWithNonceSize(cipher, 12); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: NewGCM }; } $f.$ptr = $ptr; $f._r = _r; $f.cipher = cipher; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.NewGCM = NewGCM;
NewGCMWithNonceSize = function(cipher, size) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
x = [x];
_tuple = $assertType(cipher, gcmAble, true);
cipher$1 = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (ok) { */ case 1:
_r = cipher$1.NewGCM(size); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 2:
_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; }
/* */ if (!((_r$1 === 16))) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!((_r$1 === 16))) { */ case 4:
$s = -1; return [$ifaceNil, errors.New("cipher: NewGCM requires 128-bit block cipher")];
/* } */ case 5:
key = arrayType.zero();
$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; }
g = new gcm.ptr(cipher, size, arrayType$1.zero());
x[0] = new gcmFieldElement.ptr(getUint64($subslice(new sliceType$1(key), 0, 8)), getUint64($subslice(new sliceType$1(key), 8)));
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]);
i = 2;
while (true) {
if (!(i < 16)) { break; }
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]))));
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]));
i = i + (2) >> 0;
}
$s = -1; return [g, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: NewGCMWithNonceSize }; } $f.$ptr = $ptr; $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;
};
$pkg.NewGCMWithNonceSize = NewGCMWithNonceSize;
gcm.ptr.prototype.NonceSize = function() {
var $ptr, g;
g = this;
return g.nonceSize;
};
gcm.prototype.NonceSize = function() { return this.$val.NonceSize(); };
gcm.ptr.prototype.Overhead = function() {
var $ptr;
return 16;
};
gcm.prototype.Overhead = function() { return this.$val.Overhead(); };
gcm.ptr.prototype.Seal = function(dst, nonce, plaintext, data) {
var $ptr, _r, _tmp, _tmp$1, _tuple, counter, data, dst, g, nonce, out, plaintext, ret, tagMask, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
counter = [counter];
tagMask = [tagMask];
g = this;
if (!((nonce.$length === g.nonceSize))) {
$panic(new $String("cipher: incorrect nonce length given to GCM"));
}
_r = g.cipher.BlockSize(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ 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; }
/* */ $s = 2; continue;
/* 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:
$panic(new $String("cipher: message too large for GCM"));
/* } */ case 2:
_tuple = sliceForAppend(dst, plaintext.$length + 16 >> 0);
ret = _tuple[0];
out = _tuple[1];
_tmp = arrayType.zero();
_tmp$1 = arrayType.zero();
counter[0] = $clone(_tmp, arrayType);
tagMask[0] = $clone(_tmp$1, arrayType);
g.deriveCounter(counter[0], nonce);
$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; }
gcmInc32(counter[0]);
$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; }
g.auth($subslice(out, plaintext.$length), $subslice(out, 0, plaintext.$length), data, tagMask[0]);
$s = -1; return ret;
/* */ } return; } if ($f === undefined) { $f = { $blk: gcm.ptr.prototype.Seal }; } $f.$ptr = $ptr; $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;
};
gcm.prototype.Seal = function(dst, nonce, plaintext, data) { return this.$val.Seal(dst, nonce, plaintext, data); };
gcm.ptr.prototype.Open = function(dst, nonce, ciphertext, data) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
counter = [counter];
tagMask = [tagMask];
g = this;
if (!((nonce.$length === g.nonceSize))) {
$panic(new $String("cipher: incorrect nonce length given to GCM"));
}
if (ciphertext.$length < 16) {
$s = -1; return [sliceType$1.nil, errOpen];
}
_r = g.cipher.BlockSize(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ 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; }
/* */ $s = 2; continue;
/* 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:
$s = -1; return [sliceType$1.nil, errOpen];
/* } */ case 2:
tag = $subslice(ciphertext, (ciphertext.$length - 16 >> 0));
ciphertext = $subslice(ciphertext, 0, (ciphertext.$length - 16 >> 0));
_tmp = arrayType.zero();
_tmp$1 = arrayType.zero();
counter[0] = $clone(_tmp, arrayType);
tagMask[0] = $clone(_tmp$1, arrayType);
g.deriveCounter(counter[0], nonce);
$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; }
gcmInc32(counter[0]);
expectedTag = arrayType.zero();
g.auth(new sliceType$1(expectedTag), ciphertext, data, tagMask[0]);
_tuple = sliceForAppend(dst, ciphertext.$length);
ret = _tuple[0];
out = _tuple[1];
if (!((subtle.ConstantTimeCompare(new sliceType$1(expectedTag), tag) === 1))) {
_ref = out;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
((i < 0 || i >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i] = 0);
_i++;
}
$s = -1; return [sliceType$1.nil, errOpen];
}
$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; }
$s = -1; return [ret, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: gcm.ptr.prototype.Open }; } $f.$ptr = $ptr; $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;
};
gcm.prototype.Open = function(dst, nonce, ciphertext, data) { return this.$val.Open(dst, nonce, ciphertext, data); };
reverseBits = function(i) {
var $ptr, i;
i = ((((i << 2 >> 0)) & 12)) | ((((i >> 2 >> 0)) & 3));
i = ((((i << 1 >> 0)) & 10)) | ((((i >> 1 >> 0)) & 5));
return i;
};
gcmAdd = function(x, y) {
var $ptr, x, x$1, x$2, x$3, x$4, y;
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)));
};
gcmDouble = function(x) {
var $ptr, double$1, msbSet, x, x$1, x$2, x$3, x$4, x$5, x$6;
double$1 = new gcmFieldElement.ptr(new $Uint64(0, 0), new $Uint64(0, 0));
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));
double$1.high = $shiftRightUint64(x.high, 1);
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));
double$1.low = $shiftRightUint64(x.low, 1);
if (msbSet) {
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));
}
return double$1;
};
gcm.ptr.prototype.mul = function(y) {
var $ptr, 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;
g = this;
z = new gcmFieldElement.ptr(new $Uint64(0, 0), new $Uint64(0, 0));
i = 0;
while (true) {
if (!(i < 2)) { break; }
word = y.high;
if (i === 1) {
word = y.low;
}
j = 0;
while (true) {
if (!(j < 64)) { break; }
msw = (x = z.high, new $Uint64(x.$high & 0, (x.$low & 15) >>> 0));
z.high = $shiftRightUint64(z.high, (4));
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));
z.low = $shiftRightUint64(z.low, (4));
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));
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)]));
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));
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));
word = $shiftRightUint64(word, (4));
j = j + (4) >> 0;
}
i = i + (1) >> 0;
}
gcmFieldElement.copy(y, z);
};
gcm.prototype.mul = function(y) { return this.$val.mul(y); };
gcm.ptr.prototype.updateBlocks = function(y, blocks) {
var $ptr, blocks, g, x, x$1, x$2, x$3, y;
g = this;
while (true) {
if (!(blocks.$length > 0)) { break; }
y.low = (x = y.low, x$1 = getUint64(blocks), new $Uint64(x.$high ^ x$1.$high, (x.$low ^ x$1.$low) >>> 0));
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));
g.mul(y);
blocks = $subslice(blocks, 16);
}
};
gcm.prototype.updateBlocks = function(y, blocks) { return this.$val.updateBlocks(y, blocks); };
gcm.ptr.prototype.update = function(y, data) {
var $ptr, data, fullBlocks, g, partialBlock, y;
g = this;
fullBlocks = ((data.$length >> 4 >> 0)) << 4 >> 0;
g.updateBlocks(y, $subslice(data, 0, fullBlocks));
if (!((data.$length === fullBlocks))) {
partialBlock = arrayType.zero();
$copySlice(new sliceType$1(partialBlock), $subslice(data, fullBlocks));
g.updateBlocks(y, new sliceType$1(partialBlock));
}
};
gcm.prototype.update = function(y, data) { return this.$val.update(y, data); };
gcmInc32 = function(counterBlock) {
var $ptr, counterBlock, i;
i = 15;
while (true) {
if (!(i >= 12)) { break; }
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));
if (!(((counterBlock.nilCheck, ((i < 0 || i >= counterBlock.length) ? ($throwRuntimeError("index out of range"), undefined) : counterBlock[i])) === 0))) {
break;
}
i = i - (1) >> 0;
}
};
sliceForAppend = function(in$1, n) {
var $ptr, head, in$1, n, tail, total;
head = sliceType$1.nil;
tail = sliceType$1.nil;
total = in$1.$length + n >> 0;
if (in$1.$capacity >= total) {
head = $subslice(in$1, 0, total);
} else {
head = $makeSlice(sliceType$1, total);
$copySlice(head, in$1);
}
tail = $subslice(head, in$1.$length);
return [head, tail];
};
gcm.ptr.prototype.counterCrypt = function(out, in$1, counter) {
var $ptr, counter, g, in$1, mask, out, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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:
g = this;
mask = arrayType.zero();
/* while (true) { */ case 1:
/* if (!(in$1.$length >= 16)) { break; } */ if(!(in$1.$length >= 16)) { $s = 2; continue; }
$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; }
gcmInc32(counter);
xorWords(out, in$1, new sliceType$1(mask));
out = $subslice(out, 16);
in$1 = $subslice(in$1, 16);
/* } */ $s = 1; continue; case 2:
/* */ if (in$1.$length > 0) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (in$1.$length > 0) { */ case 4:
$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; }
gcmInc32(counter);
xorBytes(out, in$1, new sliceType$1(mask));
/* } */ case 5:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: gcm.ptr.prototype.counterCrypt }; } $f.$ptr = $ptr; $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;
};
gcm.prototype.counterCrypt = function(out, in$1, counter) { return this.$val.counterCrypt(out, in$1, counter); };
gcm.ptr.prototype.deriveCounter = function(counter, nonce) {
var $ptr, counter, g, nonce, x, x$1, y;
g = this;
if (nonce.$length === 12) {
$copySlice(new sliceType$1(counter), nonce);
counter.nilCheck, counter[15] = 1;
} else {
y = new gcmFieldElement.ptr(new $Uint64(0, 0), new $Uint64(0, 0));
g.update(y, nonce);
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));
g.mul(y);
putUint64($subslice(new sliceType$1(counter), 0, 8), y.low);
putUint64($subslice(new sliceType$1(counter), 8), y.high);
}
};
gcm.prototype.deriveCounter = function(counter, nonce) { return this.$val.deriveCounter(counter, nonce); };
gcm.ptr.prototype.auth = function(out, ciphertext, additionalData, tagMask) {
var $ptr, additionalData, ciphertext, g, out, tagMask, x, x$1, x$2, x$3, y;
g = this;
y = new gcmFieldElement.ptr(new $Uint64(0, 0), new $Uint64(0, 0));
g.update(y, additionalData);
g.update(y, ciphertext);
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));
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));
g.mul(y);
putUint64(out, y.low);
putUint64($subslice(out, 8), y.high);
xorWords(out, out, new sliceType$1(tagMask));
};
gcm.prototype.auth = function(out, ciphertext, additionalData, tagMask) { return this.$val.auth(out, ciphertext, additionalData, tagMask); };
getUint64 = function(data) {
var $ptr, 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;
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));
return r;
};
putUint64 = function(out, v) {
var $ptr, out, v;
(0 >= out.$length ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + 0] = (($shiftRightUint64(v, 56).$low << 24 >>> 24)));
(1 >= out.$length ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + 1] = (($shiftRightUint64(v, 48).$low << 24 >>> 24)));
(2 >= out.$length ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + 2] = (($shiftRightUint64(v, 40).$low << 24 >>> 24)));
(3 >= out.$length ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + 3] = (($shiftRightUint64(v, 32).$low << 24 >>> 24)));
(4 >= out.$length ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + 4] = (($shiftRightUint64(v, 24).$low << 24 >>> 24)));
(5 >= out.$length ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + 5] = (($shiftRightUint64(v, 16).$low << 24 >>> 24)));
(6 >= out.$length ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + 6] = (($shiftRightUint64(v, 8).$low << 24 >>> 24)));
(7 >= out.$length ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + 7] = ((v.$low << 24 >>> 24)));
};
StreamReader.ptr.prototype.Read = function(dst) {
var $ptr, _r, _tuple, dst, err, n, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
r = this;
_r = r.R.Read(dst); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
$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; }
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: StreamReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $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;
};
StreamReader.prototype.Read = function(dst) { return this.$val.Read(dst); };
fastXORBytes = function(dst, a, b) {
var $ptr, _q, _r, a, aw, b, bw, dst, dw, i, i$1, n, w;
n = a.$length;
if (b.$length < n) {
n = b.$length;
}
w = (_q = n / 4, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
if (w > 0) {
dw = dst;
aw = a;
bw = b;
i = 0;
while (true) {
if (!(i < w)) { break; }
((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));
i = i + (1) >> 0;
}
}
i$1 = (n - (_r = n % 4, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >> 0);
while (true) {
if (!(i$1 < n)) { break; }
((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));
i$1 = i$1 + (1) >> 0;
}
return n;
};
safeXORBytes = function(dst, a, b) {
var $ptr, a, b, dst, i, n;
n = a.$length;
if (b.$length < n) {
n = b.$length;
}
i = 0;
while (true) {
if (!(i < n)) { break; }
((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));
i = i + (1) >> 0;
}
return n;
};
xorBytes = function(dst, a, b) {
var $ptr, a, b, dst;
if (false) {
return fastXORBytes(dst, a, b);
} else {
return safeXORBytes(dst, a, b);
}
};
fastXORWords = function(dst, a, b) {
var $ptr, _q, a, aw, b, bw, dst, dw, i, n;
dw = dst;
aw = a;
bw = b;
n = (_q = b.$length / 4, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
i = 0;
while (true) {
if (!(i < n)) { break; }
((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));
i = i + (1) >> 0;
}
};
xorWords = function(dst, a, b) {
var $ptr, a, b, dst;
if (false) {
fastXORWords(dst, a, b);
} else {
safeXORBytes(dst, a, b);
}
};
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)}];
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)}];
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)}];
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)}];
StreamReader.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}];
cbc.init("crypto/cipher", [{prop: "b", name: "b", exported: false, typ: Block, tag: ""}, {prop: "blockSize", name: "blockSize", exported: false, typ: $Int, tag: ""}, {prop: "iv", name: "iv", exported: false, typ: sliceType$1, tag: ""}, {prop: "tmp", name: "tmp", exported: false, typ: sliceType$1, tag: ""}]);
cbcEncrypter.init("crypto/cipher", [{prop: "b", name: "b", exported: false, typ: Block, tag: ""}, {prop: "blockSize", name: "blockSize", exported: false, typ: $Int, tag: ""}, {prop: "iv", name: "iv", exported: false, typ: sliceType$1, tag: ""}, {prop: "tmp", name: "tmp", exported: false, typ: sliceType$1, tag: ""}]);
cbcEncAble.init([{prop: "NewCBCEncrypter", name: "NewCBCEncrypter", pkg: "", typ: $funcType([sliceType$1], [BlockMode], false)}]);
cbcDecrypter.init("crypto/cipher", [{prop: "b", name: "b", exported: false, typ: Block, tag: ""}, {prop: "blockSize", name: "blockSize", exported: false, typ: $Int, tag: ""}, {prop: "iv", name: "iv", exported: false, typ: sliceType$1, tag: ""}, {prop: "tmp", name: "tmp", exported: false, typ: sliceType$1, tag: ""}]);
cbcDecAble.init([{prop: "NewCBCDecrypter", name: "NewCBCDecrypter", pkg: "", typ: $funcType([sliceType$1], [BlockMode], false)}]);
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)}]);
Stream.init([{prop: "XORKeyStream", name: "XORKeyStream", pkg: "", typ: $funcType([sliceType$1, sliceType$1], [], false)}]);
BlockMode.init([{prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "CryptBlocks", name: "CryptBlocks", pkg: "", typ: $funcType([sliceType$1, sliceType$1], [], false)}]);
ctr.init("crypto/cipher", [{prop: "b", name: "b", exported: false, typ: Block, tag: ""}, {prop: "ctr", name: "ctr", exported: false, typ: sliceType$1, tag: ""}, {prop: "out", name: "out", exported: false, typ: sliceType$1, tag: ""}, {prop: "outUsed", name: "outUsed", exported: false, typ: $Int, tag: ""}]);
ctrAble.init([{prop: "NewCTR", name: "NewCTR", pkg: "", typ: $funcType([sliceType$1], [Stream], false)}]);
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)}]);
gcmAble.init([{prop: "NewGCM", name: "NewGCM", pkg: "", typ: $funcType([$Int], [AEAD, $error], false)}]);
gcmFieldElement.init("crypto/cipher", [{prop: "low", name: "low", exported: false, typ: $Uint64, tag: ""}, {prop: "high", name: "high", exported: false, typ: $Uint64, tag: ""}]);
gcm.init("crypto/cipher", [{prop: "cipher", name: "cipher", exported: false, typ: Block, tag: ""}, {prop: "nonceSize", name: "nonceSize", exported: false, typ: $Int, tag: ""}, {prop: "productTable", name: "productTable", exported: false, typ: arrayType$1, tag: ""}]);
StreamReader.init("", [{prop: "S", name: "S", exported: true, typ: Stream, tag: ""}, {prop: "R", name: "R", exported: true, typ: io.Reader, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = subtle.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = runtime.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
errOpen = errors.New("cipher: message authentication failed");
gcmReductionTable = new sliceType([0, 7200, 14400, 9312, 28800, 27808, 18624, 21728, 57600, 64800, 55616, 50528, 37248, 36256, 43456, 46560]);
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["crypto/aes"] = (function() {
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;
cipher = $packages["crypto/cipher"];
strconv = $packages["strconv"];
aesCipher = $pkg.aesCipher = $newType(0, $kindStruct, "aes.aesCipher", true, "crypto/aes", false, function(enc_, dec_) {
this.$val = this;
if (arguments.length === 0) {
this.enc = sliceType.nil;
this.dec = sliceType.nil;
return;
}
this.enc = enc_;
this.dec = dec_;
});
KeySizeError = $pkg.KeySizeError = $newType(4, $kindInt, "aes.KeySizeError", true, "crypto/aes", true, null);
sliceType = $sliceType($Uint32);
sliceType$1 = $sliceType($Uint8);
ptrType = $ptrType(aesCipher);
encryptBlockGo = function(xk, dst, src) {
var $ptr, _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;
_tmp = 0;
_tmp$1 = 0;
_tmp$2 = 0;
_tmp$3 = 0;
_tmp$4 = 0;
_tmp$5 = 0;
_tmp$6 = 0;
_tmp$7 = 0;
s0 = _tmp;
s1 = _tmp$1;
s2 = _tmp$2;
s3 = _tmp$3;
t0 = _tmp$4;
t1 = _tmp$5;
t2 = _tmp$6;
t3 = _tmp$7;
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;
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;
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;
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;
s0 = (s0 ^ ((0 >= xk.$length ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + 0]))) >>> 0;
s1 = (s1 ^ ((1 >= xk.$length ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + 1]))) >>> 0;
s2 = (s2 ^ ((2 >= xk.$length ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + 2]))) >>> 0;
s3 = (s3 ^ ((3 >= xk.$length ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + 3]))) >>> 0;
nr = (_q = xk.$length / 4, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) - 2 >> 0;
k = 4;
r = 0;
while (true) {
if (!(r < nr)) { break; }
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;
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;
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;
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;
k = k + (4) >> 0;
_tmp$8 = t0;
_tmp$9 = t1;
_tmp$10 = t2;
_tmp$11 = t3;
s0 = _tmp$8;
s1 = _tmp$9;
s2 = _tmp$10;
s3 = _tmp$11;
r = r + (1) >> 0;
}
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;
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;
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;
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;
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;
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;
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;
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;
_tmp$12 = (((s0 >>> 24 >>> 0) << 24 >>> 24));
_tmp$13 = (((s0 >>> 16 >>> 0) << 24 >>> 24));
_tmp$14 = (((s0 >>> 8 >>> 0) << 24 >>> 24));
_tmp$15 = ((s0 << 24 >>> 24));
(0 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 0] = _tmp$12);
(1 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 1] = _tmp$13);
(2 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 2] = _tmp$14);
(3 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 3] = _tmp$15);
_tmp$16 = (((s1 >>> 24 >>> 0) << 24 >>> 24));
_tmp$17 = (((s1 >>> 16 >>> 0) << 24 >>> 24));
_tmp$18 = (((s1 >>> 8 >>> 0) << 24 >>> 24));
_tmp$19 = ((s1 << 24 >>> 24));
(4 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 4] = _tmp$16);
(5 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 5] = _tmp$17);
(6 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 6] = _tmp$18);
(7 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 7] = _tmp$19);
_tmp$20 = (((s2 >>> 24 >>> 0) << 24 >>> 24));
_tmp$21 = (((s2 >>> 16 >>> 0) << 24 >>> 24));
_tmp$22 = (((s2 >>> 8 >>> 0) << 24 >>> 24));
_tmp$23 = ((s2 << 24 >>> 24));
(8 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 8] = _tmp$20);
(9 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 9] = _tmp$21);
(10 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 10] = _tmp$22);
(11 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 11] = _tmp$23);
_tmp$24 = (((s3 >>> 24 >>> 0) << 24 >>> 24));
_tmp$25 = (((s3 >>> 16 >>> 0) << 24 >>> 24));
_tmp$26 = (((s3 >>> 8 >>> 0) << 24 >>> 24));
_tmp$27 = ((s3 << 24 >>> 24));
(12 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 12] = _tmp$24);
(13 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 13] = _tmp$25);
(14 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 14] = _tmp$26);
(15 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 15] = _tmp$27);
};
decryptBlockGo = function(xk, dst, src) {
var $ptr, _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;
_tmp = 0;
_tmp$1 = 0;
_tmp$2 = 0;
_tmp$3 = 0;
_tmp$4 = 0;
_tmp$5 = 0;
_tmp$6 = 0;
_tmp$7 = 0;
s0 = _tmp;
s1 = _tmp$1;
s2 = _tmp$2;
s3 = _tmp$3;
t0 = _tmp$4;
t1 = _tmp$5;
t2 = _tmp$6;
t3 = _tmp$7;
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;
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;
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;
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;
s0 = (s0 ^ ((0 >= xk.$length ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + 0]))) >>> 0;
s1 = (s1 ^ ((1 >= xk.$length ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + 1]))) >>> 0;
s2 = (s2 ^ ((2 >= xk.$length ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + 2]))) >>> 0;
s3 = (s3 ^ ((3 >= xk.$length ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + 3]))) >>> 0;
nr = (_q = xk.$length / 4, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) - 2 >> 0;
k = 4;
r = 0;
while (true) {
if (!(r < nr)) { break; }
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;
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;
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;
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;
k = k + (4) >> 0;
_tmp$8 = t0;
_tmp$9 = t1;
_tmp$10 = t2;
_tmp$11 = t3;
s0 = _tmp$8;
s1 = _tmp$9;
s2 = _tmp$10;
s3 = _tmp$11;
r = r + (1) >> 0;
}
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;
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;
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;
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;
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;
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;
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;
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;
_tmp$12 = (((s0 >>> 24 >>> 0) << 24 >>> 24));
_tmp$13 = (((s0 >>> 16 >>> 0) << 24 >>> 24));
_tmp$14 = (((s0 >>> 8 >>> 0) << 24 >>> 24));
_tmp$15 = ((s0 << 24 >>> 24));
(0 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 0] = _tmp$12);
(1 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 1] = _tmp$13);
(2 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 2] = _tmp$14);
(3 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 3] = _tmp$15);
_tmp$16 = (((s1 >>> 24 >>> 0) << 24 >>> 24));
_tmp$17 = (((s1 >>> 16 >>> 0) << 24 >>> 24));
_tmp$18 = (((s1 >>> 8 >>> 0) << 24 >>> 24));
_tmp$19 = ((s1 << 24 >>> 24));
(4 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 4] = _tmp$16);
(5 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 5] = _tmp$17);
(6 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 6] = _tmp$18);
(7 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 7] = _tmp$19);
_tmp$20 = (((s2 >>> 24 >>> 0) << 24 >>> 24));
_tmp$21 = (((s2 >>> 16 >>> 0) << 24 >>> 24));
_tmp$22 = (((s2 >>> 8 >>> 0) << 24 >>> 24));
_tmp$23 = ((s2 << 24 >>> 24));
(8 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 8] = _tmp$20);
(9 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 9] = _tmp$21);
(10 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 10] = _tmp$22);
(11 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 11] = _tmp$23);
_tmp$24 = (((s3 >>> 24 >>> 0) << 24 >>> 24));
_tmp$25 = (((s3 >>> 16 >>> 0) << 24 >>> 24));
_tmp$26 = (((s3 >>> 8 >>> 0) << 24 >>> 24));
_tmp$27 = ((s3 << 24 >>> 24));
(12 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 12] = _tmp$24);
(13 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 13] = _tmp$25);
(14 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 14] = _tmp$26);
(15 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 15] = _tmp$27);
};
subw = function(w) {
var $ptr, w, x, x$1, x$2, x$3;
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;
};
rotw = function(w) {
var $ptr, w;
return ((w << 8 >>> 0) | (w >>> 24 >>> 0)) >>> 0;
};
expandKeyGo = function(key, enc, dec) {
var $ptr, _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;
i = 0;
nk = (_q = key.$length / 4, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
i = 0;
while (true) {
if (!(i < nk)) { break; }
((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));
i = i + (1) >> 0;
}
while (true) {
if (!(i < enc.$length)) { break; }
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]));
if ((_r = i % nk, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0) {
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;
} else if (nk > 6 && ((_r$1 = i % nk, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 4)) {
t = subw(t);
}
((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));
i = i + (1) >> 0;
}
if (dec === sliceType.nil) {
return;
}
n = enc.$length;
i$1 = 0;
while (true) {
if (!(i$1 < n)) { break; }
ei = (n - i$1 >> 0) - 4 >> 0;
j = 0;
while (true) {
if (!(j < 4)) { break; }
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]));
if (i$1 > 0 && (i$1 + 4 >> 0) < n) {
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;
}
(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));
j = j + (1) >> 0;
}
i$1 = i$1 + (4) >> 0;
}
};
KeySizeError.prototype.Error = function() {
var $ptr, k;
k = this.$val;
return "crypto/aes: invalid key size " + strconv.Itoa(((k >> 0)));
};
$ptrType(KeySizeError).prototype.Error = function() { return new KeySizeError(this.$get()).Error(); };
NewCipher = function(key) {
var $ptr, _1, k, key;
k = key.$length;
switch (0) { default:
_1 = k;
if ((_1 === (16)) || (_1 === (24)) || (_1 === (32))) {
break;
} else {
return [$ifaceNil, new KeySizeError(((k >> 0)))];
}
}
return newCipher(key);
};
$pkg.NewCipher = NewCipher;
newCipherGeneric = function(key) {
var $ptr, c, key, n;
n = key.$length + 28 >> 0;
c = new aesCipher.ptr($makeSlice(sliceType, n), $makeSlice(sliceType, n));
expandKeyGo(key, c.enc, c.dec);
return [c, $ifaceNil];
};
aesCipher.ptr.prototype.BlockSize = function() {
var $ptr, c;
c = this;
return 16;
};
aesCipher.prototype.BlockSize = function() { return this.$val.BlockSize(); };
aesCipher.ptr.prototype.Encrypt = function(dst, src) {
var $ptr, c, dst, src;
c = this;
if (src.$length < 16) {
$panic(new $String("crypto/aes: input not full block"));
}
if (dst.$length < 16) {
$panic(new $String("crypto/aes: output not full block"));
}
encryptBlockGo(c.enc, dst, src);
};
aesCipher.prototype.Encrypt = function(dst, src) { return this.$val.Encrypt(dst, src); };
aesCipher.ptr.prototype.Decrypt = function(dst, src) {
var $ptr, c, dst, src;
c = this;
if (src.$length < 16) {
$panic(new $String("crypto/aes: input not full block"));
}
if (dst.$length < 16) {
$panic(new $String("crypto/aes: output not full block"));
}
decryptBlockGo(c.dec, dst, src);
};
aesCipher.prototype.Decrypt = function(dst, src) { return this.$val.Decrypt(dst, src); };
newCipher = function(key) {
var $ptr, key;
return newCipherGeneric(key);
};
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)}];
KeySizeError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
aesCipher.init("crypto/aes", [{prop: "enc", name: "enc", exported: false, typ: sliceType, tag: ""}, {prop: "dec", name: "dec", exported: false, typ: sliceType, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = cipher.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strconv.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
powx = $toNativeArray($kindUint8, [1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47]);
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]);
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]);
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]);
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]);
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]);
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]);
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]);
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]);
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]);
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]);
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["crypto/des"] = (function() {
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, expandBlock, permuteInitialBlock, permuteFinalBlock, ksRotate, NewTripleDESCipher;
cipher = $packages["crypto/cipher"];
binary = $packages["encoding/binary"];
strconv = $packages["strconv"];
KeySizeError = $pkg.KeySizeError = $newType(4, $kindInt, "des.KeySizeError", true, "crypto/des", true, null);
desCipher = $pkg.desCipher = $newType(0, $kindStruct, "des.desCipher", true, "crypto/des", false, function(subkeys_) {
this.$val = this;
if (arguments.length === 0) {
this.subkeys = arrayType$4.zero();
return;
}
this.subkeys = subkeys_;
});
tripleDESCipher = $pkg.tripleDESCipher = $newType(0, $kindStruct, "des.tripleDESCipher", true, "crypto/des", false, function(cipher1_, cipher2_, cipher3_) {
this.$val = this;
if (arguments.length === 0) {
this.cipher1 = new desCipher.ptr(arrayType$4.zero());
this.cipher2 = new desCipher.ptr(arrayType$4.zero());
this.cipher3 = new desCipher.ptr(arrayType$4.zero());
return;
}
this.cipher1 = cipher1_;
this.cipher2 = cipher2_;
this.cipher3 = cipher3_;
});
arrayType = $arrayType($Uint32, 64);
arrayType$1 = $arrayType(arrayType, 8);
arrayType$2 = $arrayType($Uint8, 16);
arrayType$3 = $arrayType(arrayType$2, 4);
sliceType = $sliceType($Uint8);
sliceType$1 = $sliceType($Uint32);
arrayType$4 = $arrayType($Uint64, 16);
sliceType$2 = $sliceType($Uint64);
ptrType = $ptrType(desCipher);
ptrType$1 = $ptrType(tripleDESCipher);
cryptBlock = function(subkeys, dst, src, decrypt) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, b, decrypt, dst, i, left, preOutput, right, src, subkey, subkeys, x, x$1, x$2;
b = $clone(binary.BigEndian, binary.bigEndian).Uint64(src);
b = permuteInitialBlock(b);
_tmp = (($shiftRightUint64(b, 32).$low >>> 0));
_tmp$1 = ((b.$low >>> 0));
left = _tmp;
right = _tmp$1;
subkey = new $Uint64(0, 0);
i = 0;
while (true) {
if (!(i < 16)) { break; }
if (decrypt) {
subkey = (x = 15 - i >> 0, ((x < 0 || x >= subkeys.$length) ? ($throwRuntimeError("index out of range"), undefined) : subkeys.$array[subkeys.$offset + x]));
} else {
subkey = ((i < 0 || i >= subkeys.$length) ? ($throwRuntimeError("index out of range"), undefined) : subkeys.$array[subkeys.$offset + i]);
}
_tmp$2 = right;
_tmp$3 = (left ^ feistel(right, subkey)) >>> 0;
left = _tmp$2;
right = _tmp$3;
i = i + (1) >> 0;
}
preOutput = (x$1 = $shiftLeft64((new $Uint64(0, right)), 32), x$2 = (new $Uint64(0, left)), new $Uint64(x$1.$high | x$2.$high, (x$1.$low | x$2.$low) >>> 0));
$clone(binary.BigEndian, binary.bigEndian).PutUint64(dst, permuteFinalBlock(preOutput));
};
encryptBlock = function(subkeys, dst, src) {
var $ptr, dst, src, subkeys;
cryptBlock(subkeys, dst, src, false);
};
decryptBlock = function(subkeys, dst, src) {
var $ptr, dst, src, subkeys;
cryptBlock(subkeys, dst, src, true);
};
feistel = function(right, key) {
var $ptr, column, i, key, result, right, row, sBoxLocation, sBoxLocations, sBoxResult, x, x$1, x$2;
result = 0;
sBoxLocations = (x = expandBlock(right), new $Uint64(key.$high ^ x.$high, (key.$low ^ x.$low) >>> 0));
sBoxResult = 0;
i = 0;
while (true) {
if (!(i < 8)) { break; }
sBoxLocation = ((($shiftRightUint64(sBoxLocations, 42).$low << 24 >>> 24)) & 63) >>> 0;
sBoxLocations = $shiftLeft64(sBoxLocations, (6));
row = ((((sBoxLocation & 1) >>> 0)) | (((((sBoxLocation & 32) >>> 0)) >>> 4 << 24 >>> 24))) >>> 0;
column = (((sBoxLocation >>> 1 << 24 >>> 24)) & 15) >>> 0;
sBoxResult = (sBoxResult ^ ((x$1 = ((i < 0 || i >= feistelBox.length) ? ($throwRuntimeError("index out of range"), undefined) : feistelBox[i]), x$2 = (16 * row << 24 >>> 24) + column << 24 >>> 24, ((x$2 < 0 || x$2 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[x$2])))) >>> 0;
i = i + (1) << 24 >>> 24;
}
result = sBoxResult;
return result;
};
permuteBlock = function(src, permutation) {
var $ptr, _i, _ref, bit, block, n, permutation, position, src, x, x$1;
block = new $Uint64(0, 0);
_ref = permutation;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
position = _i;
n = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
bit = (x = $shiftRightUint64(src, n), new $Uint64(x.$high & 0, (x.$low & 1) >>> 0));
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));
_i++;
}
return block;
};
init = function() {
var $ptr, _i, _ref, f, i, j, s, x, x$1, x$2, x$3;
_ref = sBoxes;
_i = 0;
while (true) {
if (!(_i < 8)) { break; }
s = _i;
i = 0;
while (true) {
if (!(i < 4)) { break; }
j = 0;
while (true) {
if (!(j < 16)) { break; }
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)));
f = permuteBlock(f, new sliceType(permutationFunction));
(x$2 = ((s < 0 || s >= feistelBox.length) ? ($throwRuntimeError("index out of range"), undefined) : feistelBox[s]), x$3 = ($imul(16, i)) + j >> 0, ((x$3 < 0 || x$3 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[x$3] = ((f.$low >>> 0))));
j = j + (1) >> 0;
}
i = i + (1) >> 0;
}
_i++;
}
};
expandBlock = function(src) {
var $ptr, block, i, src, x, x$1;
block = new $Uint64(0, 0);
src = (((src << 5 >>> 0)) | ((src >>> 27 >>> 0))) >>> 0;
i = 0;
while (true) {
if (!(i < 8)) { break; }
block = $shiftLeft64(block, (6));
block = (x = (x$1 = (new $Uint64(0, src)), new $Uint64(x$1.$high & 0, (x$1.$low & 63) >>> 0)), new $Uint64(block.$high | x.$high, (block.$low | x.$low) >>> 0));
src = (((src << 4 >>> 0)) | ((src >>> 28 >>> 0))) >>> 0;
i = i + (1) >> 0;
}
return block;
};
permuteInitialBlock = function(block) {
var $ptr, 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;
b1 = $shiftRightUint64(block, 48);
b2 = $shiftLeft64(block, 48);
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));
b1 = (x$5 = $shiftRightUint64(block, 32), new $Uint64(x$5.$high & 0, (x$5.$low & 16711935) >>> 0));
b2 = new $Uint64(block.$high & 0, (block.$low & 4278255360) >>> 0);
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));
b1 = new $Uint64(block.$high & 252641280, (block.$low & 252641280) >>> 0);
b2 = new $Uint64(block.$high & 61680, (block.$low & 61680) >>> 0);
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));
b1 = new $Uint64(block.$high & 855651072, (block.$low & 855651072) >>> 0);
b2 = new $Uint64(block.$high & 13369548, (block.$low & 13369548) >>> 0);
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));
b1 = new $Uint64(block.$high & 2863311530, (block.$low & 1431655765) >>> 0);
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));
return block;
};
permuteFinalBlock = function(block) {
var $ptr, 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;
b1 = new $Uint64(block.$high & 2863311530, (block.$low & 1431655765) >>> 0);
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));
b1 = new $Uint64(block.$high & 855651072, (block.$low & 855651072) >>> 0);
b2 = new $Uint64(block.$high & 13369548, (block.$low & 13369548) >>> 0);
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));
b1 = new $Uint64(block.$high & 252641280, (block.$low & 252641280) >>> 0);
b2 = new $Uint64(block.$high & 61680, (block.$low & 61680) >>> 0);
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));
b1 = (x$14 = $shiftRightUint64(block, 32), new $Uint64(x$14.$high & 0, (x$14.$low & 16711935) >>> 0));
b2 = new $Uint64(block.$high & 0, (block.$low & 4278255360) >>> 0);
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));
b1 = $shiftRightUint64(block, 48);
b2 = $shiftLeft64(block, 48);
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));
return block;
};
ksRotate = function(in$1) {
var $ptr, i, in$1, last, left, out, right, y, y$1;
out = sliceType$1.nil;
out = $makeSlice(sliceType$1, 16);
last = in$1;
i = 0;
while (true) {
if (!(i < 16)) { break; }
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;
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;
((i < 0 || i >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i] = ((left | right) >>> 0));
last = ((i < 0 || i >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i]);
i = i + (1) >> 0;
}
return out;
};
desCipher.ptr.prototype.generateSubkeys = function(keyBytes) {
var $ptr, c, i, key, keyBytes, leftRotations, pc2Input, permutedKey, rightRotations, x, x$1, x$2;
c = this;
key = $clone(binary.BigEndian, binary.bigEndian).Uint64(keyBytes);
permutedKey = permuteBlock(key, new sliceType(permutedChoice1));
leftRotations = ksRotate((($shiftRightUint64(permutedKey, 28).$low >>> 0)));
rightRotations = ksRotate((($shiftLeft64(permutedKey, 4).$low >>> 0)) >>> 4 >>> 0);
i = 0;
while (true) {
if (!(i < 16)) { break; }
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));
(x$2 = c.subkeys, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i] = permuteBlock(pc2Input, new sliceType(permutedChoice2))));
i = i + (1) >> 0;
}
};
desCipher.prototype.generateSubkeys = function(keyBytes) { return this.$val.generateSubkeys(keyBytes); };
KeySizeError.prototype.Error = function() {
var $ptr, k;
k = this.$val;
return "crypto/des: invalid key size " + strconv.Itoa(((k >> 0)));
};
$ptrType(KeySizeError).prototype.Error = function() { return new KeySizeError(this.$get()).Error(); };
desCipher.ptr.prototype.BlockSize = function() {
var $ptr, c;
c = this;
return 8;
};
desCipher.prototype.BlockSize = function() { return this.$val.BlockSize(); };
desCipher.ptr.prototype.Encrypt = function(dst, src) {
var $ptr, c, dst, src;
c = this;
encryptBlock(new sliceType$2(c.subkeys), dst, src);
};
desCipher.prototype.Encrypt = function(dst, src) { return this.$val.Encrypt(dst, src); };
desCipher.ptr.prototype.Decrypt = function(dst, src) {
var $ptr, c, dst, src;
c = this;
decryptBlock(new sliceType$2(c.subkeys), dst, src);
};
desCipher.prototype.Decrypt = function(dst, src) { return this.$val.Decrypt(dst, src); };
NewTripleDESCipher = function(key) {
var $ptr, c, key;
if (!((key.$length === 24))) {
return [$ifaceNil, new KeySizeError(((key.$length >> 0)))];
}
c = new tripleDESCipher.ptr(new desCipher.ptr(arrayType$4.zero()), new desCipher.ptr(arrayType$4.zero()), new desCipher.ptr(arrayType$4.zero()));
c.cipher1.generateSubkeys($subslice(key, 0, 8));
c.cipher2.generateSubkeys($subslice(key, 8, 16));
c.cipher3.generateSubkeys($subslice(key, 16));
return [c, $ifaceNil];
};
$pkg.NewTripleDESCipher = NewTripleDESCipher;
tripleDESCipher.ptr.prototype.BlockSize = function() {
var $ptr, c;
c = this;
return 8;
};
tripleDESCipher.prototype.BlockSize = function() { return this.$val.BlockSize(); };
tripleDESCipher.ptr.prototype.Encrypt = function(dst, src) {
var $ptr, c, dst, src;
c = this;
c.cipher1.Encrypt(dst, src);
c.cipher2.Decrypt(dst, dst);
c.cipher3.Encrypt(dst, dst);
};
tripleDESCipher.prototype.Encrypt = function(dst, src) { return this.$val.Encrypt(dst, src); };
tripleDESCipher.ptr.prototype.Decrypt = function(dst, src) {
var $ptr, c, dst, src;
c = this;
c.cipher3.Decrypt(dst, src);
c.cipher2.Encrypt(dst, dst);
c.cipher1.Decrypt(dst, dst);
};
tripleDESCipher.prototype.Decrypt = function(dst, src) { return this.$val.Decrypt(dst, src); };
KeySizeError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
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)}];
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)}];
desCipher.init("crypto/des", [{prop: "subkeys", name: "subkeys", exported: false, typ: arrayType$4, tag: ""}]);
tripleDESCipher.init("crypto/des", [{prop: "cipher1", name: "cipher1", exported: false, typ: desCipher, tag: ""}, {prop: "cipher2", name: "cipher2", exported: false, typ: desCipher, tag: ""}, {prop: "cipher3", name: "cipher3", exported: false, typ: desCipher, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = cipher.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = binary.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strconv.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
feistelBox = arrayType$1.zero();
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]);
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]);
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]);
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])])]);
ksRotations = $toNativeArray($kindUint8, [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1]);
init();
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["crypto/elliptic"] = (function() {
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;
io = $packages["io"];
big = $packages["math/big"];
sync = $packages["sync"];
Curve = $pkg.Curve = $newType(8, $kindInterface, "elliptic.Curve", true, "crypto/elliptic", true, null);
CurveParams = $pkg.CurveParams = $newType(0, $kindStruct, "elliptic.CurveParams", true, "crypto/elliptic", true, function(P_, N_, B_, Gx_, Gy_, BitSize_, Name_) {
this.$val = this;
if (arguments.length === 0) {
this.P = ptrType$1.nil;
this.N = ptrType$1.nil;
this.B = ptrType$1.nil;
this.Gx = ptrType$1.nil;
this.Gy = ptrType$1.nil;
this.BitSize = 0;
this.Name = "";
return;
}
this.P = P_;
this.N = N_;
this.B = B_;
this.Gx = Gx_;
this.Gy = Gy_;
this.BitSize = BitSize_;
this.Name = Name_;
});
p224Curve = $pkg.p224Curve = $newType(0, $kindStruct, "elliptic.p224Curve", true, "crypto/elliptic", false, function(CurveParams_, gx_, gy_, b_) {
this.$val = this;
if (arguments.length === 0) {
this.CurveParams = ptrType.nil;
this.gx = arrayType.zero();
this.gy = arrayType.zero();
this.b = arrayType.zero();
return;
}
this.CurveParams = CurveParams_;
this.gx = gx_;
this.gy = gy_;
this.b = b_;
});
p224FieldElement = $pkg.p224FieldElement = $newType(32, $kindArray, "elliptic.p224FieldElement", true, "crypto/elliptic", false, null);
p256Curve = $pkg.p256Curve = $newType(0, $kindStruct, "elliptic.p256Curve", true, "crypto/elliptic", false, function(CurveParams_) {
this.$val = this;
if (arguments.length === 0) {
this.CurveParams = ptrType.nil;
return;
}
this.CurveParams = CurveParams_;
});
ptrType = $ptrType(CurveParams);
arrayType = $arrayType($Uint32, 8);
ptrType$1 = $ptrType(big.Int);
sliceType = $sliceType($Uint8);
sliceType$1 = $sliceType($Uint32);
arrayType$1 = $arrayType($Uint64, 15);
arrayType$2 = $arrayType($Uint8, 28);
arrayType$3 = $arrayType($Uint8, 32);
arrayType$4 = $arrayType($Uint32, 9);
arrayType$5 = $arrayType($Uint32, 18);
arrayType$6 = $arrayType($Uint64, 17);
arrayType$7 = $arrayType(arrayType$4, 3);
arrayType$8 = $arrayType(arrayType$7, 16);
CurveParams.ptr.prototype.Params = function() {
var $ptr, curve;
curve = this;
return curve;
};
CurveParams.prototype.Params = function() { return this.$val.Params(); };
CurveParams.ptr.prototype.IsOnCurve = function(x, y) {
var $ptr, _r, _r$1, curve, threeX, x, x3, y, y2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
curve = this;
y2 = new big.Int.ptr(false, big.nat.nil).Mul(y, y);
_r = y2.Mod(y2, curve.P); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
x3 = new big.Int.ptr(false, big.nat.nil).Mul(x, x);
x3.Mul(x3, x);
threeX = new big.Int.ptr(false, big.nat.nil).Lsh(x, 1);
threeX.Add(threeX, x);
x3.Sub(x3, threeX);
x3.Add(x3, curve.B);
_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; }
_r$1;
$s = -1; return x3.Cmp(y2) === 0;
/* */ } return; } if ($f === undefined) { $f = { $blk: CurveParams.ptr.prototype.IsOnCurve }; } $f.$ptr = $ptr; $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;
};
CurveParams.prototype.IsOnCurve = function(x, y) { return this.$val.IsOnCurve(x, y); };
zForAffine = function(x, y) {
var $ptr, x, y, z;
z = new big.Int.ptr(false, big.nat.nil);
if (!((x.Sign() === 0)) || !((y.Sign() === 0))) {
z.SetInt64(new $Int64(0, 1));
}
return z;
};
CurveParams.ptr.prototype.affineFromJacobian = function(x, y, z) {
var $ptr, _r, _r$1, _r$2, _tmp, _tmp$1, curve, x, xOut, y, yOut, z, zinv, zinvsq, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
xOut = ptrType$1.nil;
yOut = ptrType$1.nil;
curve = this;
if (z.Sign() === 0) {
_tmp = new big.Int.ptr(false, big.nat.nil);
_tmp$1 = new big.Int.ptr(false, big.nat.nil);
xOut = _tmp;
yOut = _tmp$1;
$s = -1; return [xOut, yOut];
}
_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; }
zinv = _r;
zinvsq = new big.Int.ptr(false, big.nat.nil).Mul(zinv, zinv);
xOut = new big.Int.ptr(false, big.nat.nil).Mul(x, zinvsq);
_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; }
_r$1;
zinvsq.Mul(zinvsq, zinv);
yOut = new big.Int.ptr(false, big.nat.nil).Mul(y, zinvsq);
_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; }
_r$2;
$s = -1; return [xOut, yOut];
/* */ } return; } if ($f === undefined) { $f = { $blk: CurveParams.ptr.prototype.affineFromJacobian }; } $f.$ptr = $ptr; $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;
};
CurveParams.prototype.affineFromJacobian = function(x, y, z) { return this.$val.affineFromJacobian(x, y, z); };
CurveParams.ptr.prototype.Add = function(x1, y1, x2, y2) {
var $ptr, _r, _r$1, _tuple, curve, x1, x2, y1, y2, z1, z2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
curve = this;
z1 = zForAffine(x1, y1);
z2 = zForAffine(x2, y2);
_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; }
_tuple = _r;
_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; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: CurveParams.ptr.prototype.Add }; } $f.$ptr = $ptr; $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;
};
CurveParams.prototype.Add = function(x1, y1, x2, y2) { return this.$val.Add(x1, y1, x2, y2); };
CurveParams.ptr.prototype.addJacobian = function(x1, y1, z1, x2, y2, z2) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
curve = this;
_tmp = new big.Int.ptr(false, big.nat.nil);
_tmp$1 = new big.Int.ptr(false, big.nat.nil);
_tmp$2 = new big.Int.ptr(false, big.nat.nil);
x3 = _tmp;
y3 = _tmp$1;
z3 = _tmp$2;
if (z1.Sign() === 0) {
x3.Set(x2);
y3.Set(y2);
z3.Set(z2);
$s = -1; return [x3, y3, z3];
}
if (z2.Sign() === 0) {
x3.Set(x1);
y3.Set(y1);
z3.Set(z1);
$s = -1; return [x3, y3, z3];
}
z1z1 = new big.Int.ptr(false, big.nat.nil).Mul(z1, z1);
_r = z1z1.Mod(z1z1, curve.P); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
z2z2 = new big.Int.ptr(false, big.nat.nil).Mul(z2, z2);
_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; }
_r$1;
u1 = new big.Int.ptr(false, big.nat.nil).Mul(x1, z2z2);
_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; }
_r$2;
u2 = new big.Int.ptr(false, big.nat.nil).Mul(x2, z1z1);
_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; }
_r$3;
h = new big.Int.ptr(false, big.nat.nil).Sub(u2, u1);
xEqual = h.Sign() === 0;
if (h.Sign() === -1) {
h.Add(h, curve.P);
}
i = new big.Int.ptr(false, big.nat.nil).Lsh(h, 1);
i.Mul(i, i);
j = new big.Int.ptr(false, big.nat.nil).Mul(h, i);
s1 = new big.Int.ptr(false, big.nat.nil).Mul(y1, z2);
s1.Mul(s1, z2z2);
_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; }
_r$4;
s2 = new big.Int.ptr(false, big.nat.nil).Mul(y2, z1);
s2.Mul(s2, z1z1);
_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; }
_r$5;
r = new big.Int.ptr(false, big.nat.nil).Sub(s2, s1);
if (r.Sign() === -1) {
r.Add(r, curve.P);
}
yEqual = r.Sign() === 0;
/* */ if (xEqual && yEqual) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (xEqual && yEqual) { */ case 7:
_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; }
$s = -1; return _r$6;
/* } */ case 8:
r.Lsh(r, 1);
v = new big.Int.ptr(false, big.nat.nil).Mul(u1, i);
x3.Set(r);
x3.Mul(x3, x3);
x3.Sub(x3, j);
x3.Sub(x3, v);
x3.Sub(x3, v);
_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; }
_r$7;
y3.Set(r);
v.Sub(v, x3);
y3.Mul(y3, v);
s1.Mul(s1, j);
s1.Lsh(s1, 1);
y3.Sub(y3, s1);
_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; }
_r$8;
z3.Add(z1, z2);
z3.Mul(z3, z3);
z3.Sub(z3, z1z1);
z3.Sub(z3, z2z2);
z3.Mul(z3, h);
_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; }
_r$9;
$s = -1; return [x3, y3, z3];
/* */ } return; } if ($f === undefined) { $f = { $blk: CurveParams.ptr.prototype.addJacobian }; } $f.$ptr = $ptr; $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;
};
CurveParams.prototype.addJacobian = function(x1, y1, z1, x2, y2, z2) { return this.$val.addJacobian(x1, y1, z1, x2, y2, z2); };
CurveParams.ptr.prototype.Double = function(x1, y1) {
var $ptr, _r, _r$1, _tuple, curve, x1, y1, z1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
curve = this;
z1 = zForAffine(x1, y1);
_r = curve.doubleJacobian(x1, y1, z1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
_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; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: CurveParams.ptr.prototype.Double }; } $f.$ptr = $ptr; $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;
};
CurveParams.prototype.Double = function(x1, y1) { return this.$val.Double(x1, y1); };
CurveParams.ptr.prototype.doubleJacobian = function(x, y, z) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
curve = this;
delta = new big.Int.ptr(false, big.nat.nil).Mul(z, z);
_r = delta.Mod(delta, curve.P); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
gamma = new big.Int.ptr(false, big.nat.nil).Mul(y, y);
_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; }
_r$1;
alpha = new big.Int.ptr(false, big.nat.nil).Sub(x, delta);
if (alpha.Sign() === -1) {
alpha.Add(alpha, curve.P);
}
alpha2 = new big.Int.ptr(false, big.nat.nil).Add(x, delta);
alpha.Mul(alpha, alpha2);
alpha2.Set(alpha);
alpha.Lsh(alpha, 1);
alpha.Add(alpha, alpha2);
beta = alpha2.Mul(x, gamma);
x3 = new big.Int.ptr(false, big.nat.nil).Mul(alpha, alpha);
beta8 = new big.Int.ptr(false, big.nat.nil).Lsh(beta, 3);
x3.Sub(x3, beta8);
while (true) {
if (!(x3.Sign() === -1)) { break; }
x3.Add(x3, curve.P);
}
_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; }
_r$2;
z3 = new big.Int.ptr(false, big.nat.nil).Add(y, z);
z3.Mul(z3, z3);
z3.Sub(z3, gamma);
if (z3.Sign() === -1) {
z3.Add(z3, curve.P);
}
z3.Sub(z3, delta);
if (z3.Sign() === -1) {
z3.Add(z3, curve.P);
}
_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; }
_r$3;
beta.Lsh(beta, 2);
beta.Sub(beta, x3);
if (beta.Sign() === -1) {
beta.Add(beta, curve.P);
}
y3 = alpha.Mul(alpha, beta);
gamma.Mul(gamma, gamma);
gamma.Lsh(gamma, 3);
_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; }
_r$4;
y3.Sub(y3, gamma);
if (y3.Sign() === -1) {
y3.Add(y3, curve.P);
}
_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; }
_r$5;
$s = -1; return [x3, y3, z3];
/* */ } return; } if ($f === undefined) { $f = { $blk: CurveParams.ptr.prototype.doubleJacobian }; } $f.$ptr = $ptr; $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;
};
CurveParams.prototype.doubleJacobian = function(x, y, z) { return this.$val.doubleJacobian(x, y, z); };
CurveParams.ptr.prototype.ScalarMult = function(Bx, By, k) {
var $ptr, 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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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:
curve = this;
Bz = new big.Int.ptr(false, big.nat.nil).SetInt64(new $Int64(0, 1));
_tmp = new big.Int.ptr(false, big.nat.nil);
_tmp$1 = new big.Int.ptr(false, big.nat.nil);
_tmp$2 = new big.Int.ptr(false, big.nat.nil);
x = _tmp;
y = _tmp$1;
z = _tmp$2;
_ref = k;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
byte$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
bitNum = 0;
/* while (true) { */ case 3:
/* if (!(bitNum < 8)) { break; } */ if(!(bitNum < 8)) { $s = 4; continue; }
_r = curve.doubleJacobian(x, y, z); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
x = _tuple[0];
y = _tuple[1];
z = _tuple[2];
/* */ if (((byte$1 & 128) >>> 0) === 128) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (((byte$1 & 128) >>> 0) === 128) { */ case 6:
_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; }
_tuple$1 = _r$1;
x = _tuple$1[0];
y = _tuple$1[1];
z = _tuple$1[2];
/* } */ case 7:
byte$1 = (y$1 = (1), y$1 < 32 ? (byte$1 << y$1) : 0) << 24 >>> 24;
bitNum = bitNum + (1) >> 0;
/* } */ $s = 3; continue; case 4:
_i++;
/* } */ $s = 1; continue; case 2:
_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; }
$s = -1; return _r$2;
/* */ } return; } if ($f === undefined) { $f = { $blk: CurveParams.ptr.prototype.ScalarMult }; } $f.$ptr = $ptr; $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;
};
CurveParams.prototype.ScalarMult = function(Bx, By, k) { return this.$val.ScalarMult(Bx, By, k); };
CurveParams.ptr.prototype.ScalarBaseMult = function(k) {
var $ptr, _r, curve, k, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; curve = $f.curve; k = $f.k; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
curve = this;
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: CurveParams.ptr.prototype.ScalarBaseMult }; } $f.$ptr = $ptr; $f._r = _r; $f.curve = curve; $f.k = k; $f.$s = $s; $f.$r = $r; return $f;
};
CurveParams.prototype.ScalarBaseMult = function(k) { return this.$val.ScalarBaseMult(k); };
GenerateKey = function(curve, rand) {
var $ptr, N, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, bitSize, byteLen, curve, err, priv, rand, x, x$1, y, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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:
priv = sliceType.nil;
x = ptrType$1.nil;
y = ptrType$1.nil;
err = $ifaceNil;
_r = curve.Params(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
N = _r.N;
bitSize = N.BitLen();
byteLen = ((bitSize + 7 >> 0)) >> 3 >> 0;
priv = $makeSlice(sliceType, byteLen);
/* while (true) { */ case 2:
/* if (!(x === ptrType$1.nil)) { break; } */ if(!(x === ptrType$1.nil)) { $s = 3; continue; }
_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; }
_tuple = _r$1;
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [priv, x, y, err];
}
(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));
(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));
/* */ if (new big.Int.ptr(false, big.nat.nil).SetBytes(priv).Cmp(N) >= 0) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (new big.Int.ptr(false, big.nat.nil).SetBytes(priv).Cmp(N) >= 0) { */ case 5:
/* continue; */ $s = 2; continue;
/* } */ case 6:
_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; }
_tuple$1 = _r$3;
x = _tuple$1[0];
y = _tuple$1[1];
/* } */ $s = 2; continue; case 3:
$s = -1; return [priv, x, y, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: GenerateKey }; } $f.$ptr = $ptr; $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;
};
$pkg.GenerateKey = GenerateKey;
Marshal = function(curve, x, y) {
var $ptr, _r, byteLen, curve, ret, x, xBytes, y, yBytes, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = curve.Params(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
byteLen = ((_r.BitSize + 7 >> 0)) >> 3 >> 0;
ret = $makeSlice(sliceType, (1 + ($imul(2, byteLen)) >> 0));
(0 >= ret.$length ? ($throwRuntimeError("index out of range"), undefined) : ret.$array[ret.$offset + 0] = 4);
xBytes = x.Bytes();
$copySlice($subslice(ret, ((1 + byteLen >> 0) - xBytes.$length >> 0)), xBytes);
yBytes = y.Bytes();
$copySlice($subslice(ret, ((1 + ($imul(2, byteLen)) >> 0) - yBytes.$length >> 0)), yBytes);
$s = -1; return ret;
/* */ } return; } if ($f === undefined) { $f = { $blk: Marshal }; } $f.$ptr = $ptr; $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;
};
$pkg.Marshal = Marshal;
Unmarshal = function(curve, data) {
var $ptr, _r, _r$1, _tmp, _tmp$1, byteLen, curve, data, x, y, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; byteLen = $f.byteLen; curve = $f.curve; data = $f.data; x = $f.x; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
x = ptrType$1.nil;
y = ptrType$1.nil;
_r = curve.Params(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
byteLen = ((_r.BitSize + 7 >> 0)) >> 3 >> 0;
if (!((data.$length === (1 + ($imul(2, byteLen)) >> 0)))) {
$s = -1; return [x, y];
}
if (!(((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) === 4))) {
$s = -1; return [x, y];
}
x = new big.Int.ptr(false, big.nat.nil).SetBytes($subslice(data, 1, (1 + byteLen >> 0)));
y = new big.Int.ptr(false, big.nat.nil).SetBytes($subslice(data, (1 + byteLen >> 0)));
_r$1 = curve.IsOnCurve(x, y); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
/* */ if (!_r$1) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!_r$1) { */ case 2:
_tmp = ptrType$1.nil;
_tmp$1 = ptrType$1.nil;
x = _tmp;
y = _tmp$1;
/* } */ case 3:
$s = -1; return [x, y];
/* */ } return; } if ($f === undefined) { $f = { $blk: Unmarshal }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.byteLen = byteLen; $f.curve = curve; $f.data = data; $f.x = x; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Unmarshal = Unmarshal;
initAll = function() {
var $ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = initP224(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = initP256(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = initP384(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = initP521(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: initAll }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
};
initP384 = function() {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
p384 = new CurveParams.ptr(ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, 0, "P-384");
_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; }
_tuple = _r;
p384.P = _tuple[0];
_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; }
_tuple$1 = _r$1;
p384.N = _tuple$1[0];
_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; }
_tuple$2 = _r$2;
p384.B = _tuple$2[0];
_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; }
_tuple$3 = _r$3;
p384.Gx = _tuple$3[0];
_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; }
_tuple$4 = _r$4;
p384.Gy = _tuple$4[0];
p384.BitSize = 384;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: initP384 }; } $f.$ptr = $ptr; $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;
};
initP521 = function() {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
p521 = new CurveParams.ptr(ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, 0, "P-521");
_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; }
_tuple = _r;
p521.P = _tuple[0];
_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; }
_tuple$1 = _r$1;
p521.N = _tuple$1[0];
_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; }
_tuple$2 = _r$2;
p521.B = _tuple$2[0];
_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; }
_tuple$3 = _r$3;
p521.Gx = _tuple$3[0];
_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; }
_tuple$4 = _r$4;
p521.Gy = _tuple$4[0];
p521.BitSize = 521;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: initP521 }; } $f.$ptr = $ptr; $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;
};
P256 = function() {
var $ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = initonce.Do(initAll); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return new p256.constructor.elem(p256);
/* */ } return; } if ($f === undefined) { $f = { $blk: P256 }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.P256 = P256;
P384 = function() {
var $ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = initonce.Do(initAll); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return p384;
/* */ } return; } if ($f === undefined) { $f = { $blk: P384 }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.P384 = P384;
P521 = function() {
var $ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = initonce.Do(initAll); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return p521;
/* */ } return; } if ($f === undefined) { $f = { $blk: P521 }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.P521 = P521;
initP224 = function() {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
p224.CurveParams = new CurveParams.ptr(ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, 0, "P-224");
_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; }
_tuple = _r;
p224.CurveParams.P = _tuple[0];
_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; }
_tuple$1 = _r$1;
p224.CurveParams.N = _tuple$1[0];
_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; }
_tuple$2 = _r$2;
p224.CurveParams.B = _tuple$2[0];
_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; }
_tuple$3 = _r$3;
p224.CurveParams.Gx = _tuple$3[0];
_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; }
_tuple$4 = _r$4;
p224.CurveParams.Gy = _tuple$4[0];
p224.CurveParams.BitSize = 224;
p224FromBig(p224.gx, p224.CurveParams.Gx);
p224FromBig(p224.gy, p224.CurveParams.Gy);
p224FromBig(p224.b, p224.CurveParams.B);
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: initP224 }; } $f.$ptr = $ptr; $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;
};
P224 = function() {
var $ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = initonce.Do(initAll); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return new p224.constructor.elem(p224);
/* */ } return; } if ($f === undefined) { $f = { $blk: P224 }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.P224 = P224;
p224Curve.ptr.prototype.Params = function() {
var $ptr, curve;
curve = this;
return curve.CurveParams;
};
p224Curve.prototype.Params = function() { return this.$val.Params(); };
p224Curve.ptr.prototype.IsOnCurve = function(bigX, bigY) {
var $ptr, _tmp, _tmp$1, bigX, bigY, curve, i, i$1, tmp, x, x3, y;
curve = this;
_tmp = arrayType.zero();
_tmp$1 = arrayType.zero();
x = $clone(_tmp, p224FieldElement);
y = $clone(_tmp$1, p224FieldElement);
p224FromBig(x, bigX);
p224FromBig(y, bigY);
tmp = arrayType$1.zero();
x3 = arrayType.zero();
p224Square(x3, x, tmp);
p224Mul(x3, x3, x, tmp);
i = 0;
while (true) {
if (!(i < 8)) { break; }
((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));
i = i + (1) >> 0;
}
p224Sub(x3, x3, x);
p224Reduce(x3);
p224Add(x3, x3, curve.b);
p224Contract(x3, x3);
p224Square(y, y, tmp);
p224Contract(y, y);
i$1 = 0;
while (true) {
if (!(i$1 < 8)) { break; }
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])))) {
return false;
}
i$1 = i$1 + (1) >> 0;
}
return true;
};
p224Curve.prototype.IsOnCurve = function(bigX, bigY) { return this.$val.IsOnCurve(bigX, bigY); };
p224Curve.ptr.prototype.Add = function(bigX1, bigY1, bigX2, bigY2) {
var $ptr, _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;
x = ptrType$1.nil;
y = ptrType$1.nil;
_tmp = arrayType.zero();
_tmp$1 = arrayType.zero();
_tmp$2 = arrayType.zero();
_tmp$3 = arrayType.zero();
_tmp$4 = arrayType.zero();
_tmp$5 = arrayType.zero();
_tmp$6 = arrayType.zero();
_tmp$7 = arrayType.zero();
_tmp$8 = arrayType.zero();
x1 = $clone(_tmp, p224FieldElement);
y1 = $clone(_tmp$1, p224FieldElement);
z1 = $clone(_tmp$2, p224FieldElement);
x2 = $clone(_tmp$3, p224FieldElement);
y2 = $clone(_tmp$4, p224FieldElement);
z2 = $clone(_tmp$5, p224FieldElement);
x3 = $clone(_tmp$6, p224FieldElement);
y3 = $clone(_tmp$7, p224FieldElement);
z3 = $clone(_tmp$8, p224FieldElement);
p224FromBig(x1, bigX1);
p224FromBig(y1, bigY1);
if (!((bigX1.Sign() === 0)) || !((bigY1.Sign() === 0))) {
z1[0] = 1;
}
p224FromBig(x2, bigX2);
p224FromBig(y2, bigY2);
if (!((bigX2.Sign() === 0)) || !((bigY2.Sign() === 0))) {
z2[0] = 1;
}
p224AddJacobian(x3, y3, z3, x1, y1, z1, x2, y2, z2);
_tuple = p224ToAffine(x3, y3, z3);
x = _tuple[0];
y = _tuple[1];
return [x, y];
};
p224Curve.prototype.Add = function(bigX1, bigY1, bigX2, bigY2) { return this.$val.Add(bigX1, bigY1, bigX2, bigY2); };
p224Curve.ptr.prototype.Double = function(bigX1, bigY1) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, bigX1, bigY1, x, x1, x2, y, y1, y2, z1, z2;
x = ptrType$1.nil;
y = ptrType$1.nil;
_tmp = arrayType.zero();
_tmp$1 = arrayType.zero();
_tmp$2 = arrayType.zero();
_tmp$3 = arrayType.zero();
_tmp$4 = arrayType.zero();
_tmp$5 = arrayType.zero();
x1 = $clone(_tmp, p224FieldElement);
y1 = $clone(_tmp$1, p224FieldElement);
z1 = $clone(_tmp$2, p224FieldElement);
x2 = $clone(_tmp$3, p224FieldElement);
y2 = $clone(_tmp$4, p224FieldElement);
z2 = $clone(_tmp$5, p224FieldElement);
p224FromBig(x1, bigX1);
p224FromBig(y1, bigY1);
z1[0] = 1;
p224DoubleJacobian(x2, y2, z2, x1, y1, z1);
_tuple = p224ToAffine(x2, y2, z2);
x = _tuple[0];
y = _tuple[1];
return [x, y];
};
p224Curve.prototype.Double = function(bigX1, bigY1) { return this.$val.Double(bigX1, bigY1); };
p224Curve.ptr.prototype.ScalarMult = function(bigX1, bigY1, scalar) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, bigX1, bigY1, scalar, x, x1, x2, y, y1, y2, z1, z2;
x = ptrType$1.nil;
y = ptrType$1.nil;
_tmp = arrayType.zero();
_tmp$1 = arrayType.zero();
_tmp$2 = arrayType.zero();
_tmp$3 = arrayType.zero();
_tmp$4 = arrayType.zero();
_tmp$5 = arrayType.zero();
x1 = $clone(_tmp, p224FieldElement);
y1 = $clone(_tmp$1, p224FieldElement);
z1 = $clone(_tmp$2, p224FieldElement);
x2 = $clone(_tmp$3, p224FieldElement);
y2 = $clone(_tmp$4, p224FieldElement);
z2 = $clone(_tmp$5, p224FieldElement);
p224FromBig(x1, bigX1);
p224FromBig(y1, bigY1);
z1[0] = 1;
p224ScalarMult(x2, y2, z2, x1, y1, z1, scalar);
_tuple = p224ToAffine(x2, y2, z2);
x = _tuple[0];
y = _tuple[1];
return [x, y];
};
p224Curve.prototype.ScalarMult = function(bigX1, bigY1, scalar) { return this.$val.ScalarMult(bigX1, bigY1, scalar); };
p224Curve.ptr.prototype.ScalarBaseMult = function(scalar) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, curve, scalar, x, x2, y, y2, z1, z2;
x = ptrType$1.nil;
y = ptrType$1.nil;
curve = this;
_tmp = arrayType.zero();
_tmp$1 = arrayType.zero();
_tmp$2 = arrayType.zero();
_tmp$3 = arrayType.zero();
z1 = $clone(_tmp, p224FieldElement);
x2 = $clone(_tmp$1, p224FieldElement);
y2 = $clone(_tmp$2, p224FieldElement);
z2 = $clone(_tmp$3, p224FieldElement);
z1[0] = 1;
p224ScalarMult(x2, y2, z2, curve.gx, curve.gy, z1, scalar);
_tuple = p224ToAffine(x2, y2, z2);
x = _tuple[0];
y = _tuple[1];
return [x, y];
};
p224Curve.prototype.ScalarBaseMult = function(scalar) { return this.$val.ScalarBaseMult(scalar); };
p224IsZero = function(a) {
var $ptr, _i, _ref, _tmp, _tmp$1, a, i, isP, isZero, minimal, result, v;
minimal = arrayType.zero();
p224Contract(minimal, a);
_tmp = 0;
_tmp$1 = 0;
isZero = _tmp;
isP = _tmp$1;
_ref = minimal;
_i = 0;
while (true) {
if (!(_i < 8)) { break; }
i = _i;
v = ((_i < 0 || _i >= _ref.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref[_i]);
isZero = (isZero | (v)) >>> 0;
isP = (isP | ((v - ((i < 0 || i >= p224P.length) ? ($throwRuntimeError("index out of range"), undefined) : p224P[i]) >>> 0))) >>> 0;
_i++;
}
isZero = (isZero | ((isZero >>> 16 >>> 0))) >>> 0;
isZero = (isZero | ((isZero >>> 8 >>> 0))) >>> 0;
isZero = (isZero | ((isZero >>> 4 >>> 0))) >>> 0;
isZero = (isZero | ((isZero >>> 2 >>> 0))) >>> 0;
isZero = (isZero | ((isZero >>> 1 >>> 0))) >>> 0;
isP = (isP | ((isP >>> 16 >>> 0))) >>> 0;
isP = (isP | ((isP >>> 8 >>> 0))) >>> 0;
isP = (isP | ((isP >>> 4 >>> 0))) >>> 0;
isP = (isP | ((isP >>> 2 >>> 0))) >>> 0;
isP = (isP | ((isP >>> 1 >>> 0))) >>> 0;
result = (isZero & isP) >>> 0;
result = (((~result >>> 0)) & 1) >>> 0;
return result;
};
p224Add = function(out, a, b) {
var $ptr, a, b, i, out;
i = 0;
while (true) {
if (!(i < 8)) { break; }
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));
i = i + (1) >> 0;
}
};
p224Sub = function(out, a, b) {
var $ptr, a, b, i, out;
i = 0;
while (true) {
if (!(i < 8)) { break; }
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));
i = i + (1) >> 0;
}
};
p224Mul = function(out, a, b, tmp) {
var $ptr, _index, a, b, i, i$1, j, out, tmp, x, x$1;
i = 0;
while (true) {
if (!(i < 15)) { break; }
tmp.nilCheck, ((i < 0 || i >= tmp.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp[i] = new $Uint64(0, 0));
i = i + (1) >> 0;
}
i$1 = 0;
while (true) {
if (!(i$1 < 8)) { break; }
j = 0;
while (true) {
if (!(j < 8)) { break; }
_index = i$1 + j >> 0;
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)));
j = j + (1) >> 0;
}
i$1 = i$1 + (1) >> 0;
}
p224ReduceLarge(out, tmp);
};
p224Square = function(out, a, tmp) {
var $ptr, _index, _index$1, a, i, i$1, j, out, r, tmp, x, x$1, x$2, x$3;
i = 0;
while (true) {
if (!(i < 15)) { break; }
tmp.nilCheck, ((i < 0 || i >= tmp.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp[i] = new $Uint64(0, 0));
i = i + (1) >> 0;
}
i$1 = 0;
while (true) {
if (!(i$1 < 8)) { break; }
j = 0;
while (true) {
if (!(j <= i$1)) { break; }
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])))));
if (i$1 === j) {
_index = i$1 + j >> 0;
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)));
} else {
_index$1 = i$1 + j >> 0;
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)));
}
j = j + (1) >> 0;
}
i$1 = i$1 + (1) >> 0;
}
p224ReduceLarge(out, tmp);
};
p224ReduceLarge = function(out, in$1) {
var $ptr, _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;
i = 0;
while (true) {
if (!(i < 8)) { break; }
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)));
i = i + (1) >> 0;
}
i$1 = 14;
while (true) {
if (!(i$1 >= 8)) { break; }
_index = i$1 - 8 >> 0;
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)));
_index$1 = i$1 - 5 >> 0;
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)));
_index$2 = i$1 - 4 >> 0;
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)));
i$1 = i$1 - (1) >> 0;
}
in$1.nilCheck, in$1[8] = new $Uint64(0, 0);
i$2 = 1;
while (true) {
if (!(i$2 < 8)) { break; }
_index$3 = i$2 + 1 >> 0;
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)));
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)));
i$2 = i$2 + (1) >> 0;
}
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));
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);
out.nilCheck, out[4] = ((out.nilCheck, out[4]) + ((($shiftRightUint64((in$1.nilCheck, in$1[8]), 16).$low >>> 0))) >>> 0);
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));
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);
out.nilCheck, out[2] = ((out.nilCheck, out[2]) + ((($shiftRightUint64((in$1.nilCheck, in$1[0]), 56).$low >>> 0))) >>> 0);
};
p224Reduce = function(a) {
var $ptr, _index, a, i, mask$1, top, y;
i = 0;
while (true) {
if (!(i < 7)) { break; }
_index = i + 1 >> 0;
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));
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));
i = i + (1) >> 0;
}
top = (a.nilCheck, a[7]) >>> 28 >>> 0;
a.nilCheck, a[7] = (((a.nilCheck, a[7]) & (268435455)) >>> 0);
mask$1 = top;
mask$1 = (mask$1 | ((mask$1 >>> 2 >>> 0))) >>> 0;
mask$1 = (mask$1 | ((mask$1 >>> 1 >>> 0))) >>> 0;
mask$1 = (y = (31), y < 32 ? (mask$1 << y) : 0) >>> 0;
mask$1 = (((((mask$1 >> 0)) >> 31 >> 0) >>> 0));
a.nilCheck, a[0] = ((a.nilCheck, a[0]) - (top) >>> 0);
a.nilCheck, a[3] = ((a.nilCheck, a[3]) + ((top << 12 >>> 0)) >>> 0);
a.nilCheck, a[3] = ((a.nilCheck, a[3]) - (((1 & mask$1) >>> 0)) >>> 0);
a.nilCheck, a[2] = ((a.nilCheck, a[2]) + (((mask$1 & 268435455) >>> 0)) >>> 0);
a.nilCheck, a[1] = ((a.nilCheck, a[1]) + (((mask$1 & 268435455) >>> 0)) >>> 0);
a.nilCheck, a[0] = ((a.nilCheck, a[0]) + (((mask$1 & 268435456) >>> 0)) >>> 0);
};
p224Invert = function(out, in$1) {
var $ptr, _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;
_tmp = arrayType.zero();
_tmp$1 = arrayType.zero();
_tmp$2 = arrayType.zero();
_tmp$3 = arrayType.zero();
f1 = $clone(_tmp, p224FieldElement);
f2 = $clone(_tmp$1, p224FieldElement);
f3 = $clone(_tmp$2, p224FieldElement);
f4 = $clone(_tmp$3, p224FieldElement);
c = arrayType$1.zero();
p224Square(f1, in$1, c);
p224Mul(f1, f1, in$1, c);
p224Square(f1, f1, c);
p224Mul(f1, f1, in$1, c);
p224Square(f2, f1, c);
p224Square(f2, f2, c);
p224Square(f2, f2, c);
p224Mul(f1, f1, f2, c);
p224Square(f2, f1, c);
i = 0;
while (true) {
if (!(i < 5)) { break; }
p224Square(f2, f2, c);
i = i + (1) >> 0;
}
p224Mul(f2, f2, f1, c);
p224Square(f3, f2, c);
i$1 = 0;
while (true) {
if (!(i$1 < 11)) { break; }
p224Square(f3, f3, c);
i$1 = i$1 + (1) >> 0;
}
p224Mul(f2, f3, f2, c);
p224Square(f3, f2, c);
i$2 = 0;
while (true) {
if (!(i$2 < 23)) { break; }
p224Square(f3, f3, c);
i$2 = i$2 + (1) >> 0;
}
p224Mul(f3, f3, f2, c);
p224Square(f4, f3, c);
i$3 = 0;
while (true) {
if (!(i$3 < 47)) { break; }
p224Square(f4, f4, c);
i$3 = i$3 + (1) >> 0;
}
p224Mul(f3, f3, f4, c);
p224Square(f4, f3, c);
i$4 = 0;
while (true) {
if (!(i$4 < 23)) { break; }
p224Square(f4, f4, c);
i$4 = i$4 + (1) >> 0;
}
p224Mul(f2, f4, f2, c);
i$5 = 0;
while (true) {
if (!(i$5 < 6)) { break; }
p224Square(f2, f2, c);
i$5 = i$5 + (1) >> 0;
}
p224Mul(f1, f1, f2, c);
p224Square(f1, f1, c);
p224Mul(f1, f1, in$1, c);
i$6 = 0;
while (true) {
if (!(i$6 < 97)) { break; }
p224Square(f1, f1, c);
i$6 = i$6 + (1) >> 0;
}
p224Mul(out, f1, f3, c);
};
p224Contract = function(out, in$1) {
var $ptr, _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;
$copySlice(new sliceType$1(out), new sliceType$1(in$1));
i = 0;
while (true) {
if (!(i < 7)) { break; }
_index = i + 1 >> 0;
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));
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));
i = i + (1) >> 0;
}
top = (out.nilCheck, out[7]) >>> 28 >>> 0;
out.nilCheck, out[7] = (((out.nilCheck, out[7]) & (268435455)) >>> 0);
out.nilCheck, out[0] = ((out.nilCheck, out[0]) - (top) >>> 0);
out.nilCheck, out[3] = ((out.nilCheck, out[3]) + ((top << 12 >>> 0)) >>> 0);
i$1 = 0;
while (true) {
if (!(i$1 < 3)) { break; }
mask$1 = ((((((out.nilCheck, ((i$1 < 0 || i$1 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$1])) >> 0)) >> 31 >> 0) >>> 0));
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));
_index$1 = i$1 + 1 >> 0;
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));
i$1 = i$1 + (1) >> 0;
}
i$2 = 3;
while (true) {
if (!(i$2 < 7)) { break; }
_index$2 = i$2 + 1 >> 0;
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));
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));
i$2 = i$2 + (1) >> 0;
}
top = (out.nilCheck, out[7]) >>> 28 >>> 0;
out.nilCheck, out[7] = (((out.nilCheck, out[7]) & (268435455)) >>> 0);
out.nilCheck, out[0] = ((out.nilCheck, out[0]) - (top) >>> 0);
out.nilCheck, out[3] = ((out.nilCheck, out[3]) + ((top << 12 >>> 0)) >>> 0);
i$3 = 0;
while (true) {
if (!(i$3 < 3)) { break; }
mask$2 = ((((((out.nilCheck, ((i$3 < 0 || i$3 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$3])) >> 0)) >> 31 >> 0) >>> 0));
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));
_index$3 = i$3 + 1 >> 0;
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));
i$3 = i$3 + (1) >> 0;
}
top4AllOnes = 4294967295;
i$4 = 4;
while (true) {
if (!(i$4 < 8)) { break; }
top4AllOnes = (top4AllOnes & ((out.nilCheck, ((i$4 < 0 || i$4 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$4])))) >>> 0;
i$4 = i$4 + (1) >> 0;
}
top4AllOnes = (top4AllOnes | (4026531840)) >>> 0;
top4AllOnes = (top4AllOnes & ((top4AllOnes >>> 16 >>> 0))) >>> 0;
top4AllOnes = (top4AllOnes & ((top4AllOnes >>> 8 >>> 0))) >>> 0;
top4AllOnes = (top4AllOnes & ((top4AllOnes >>> 4 >>> 0))) >>> 0;
top4AllOnes = (top4AllOnes & ((top4AllOnes >>> 2 >>> 0))) >>> 0;
top4AllOnes = (top4AllOnes & ((top4AllOnes >>> 1 >>> 0))) >>> 0;
top4AllOnes = ((((((top4AllOnes << 31 >>> 0) >> 0)) >> 31 >> 0) >>> 0));
bottom3NonZero = ((((out.nilCheck, out[0]) | (out.nilCheck, out[1])) >>> 0) | (out.nilCheck, out[2])) >>> 0;
bottom3NonZero = (bottom3NonZero | ((bottom3NonZero >>> 16 >>> 0))) >>> 0;
bottom3NonZero = (bottom3NonZero | ((bottom3NonZero >>> 8 >>> 0))) >>> 0;
bottom3NonZero = (bottom3NonZero | ((bottom3NonZero >>> 4 >>> 0))) >>> 0;
bottom3NonZero = (bottom3NonZero | ((bottom3NonZero >>> 2 >>> 0))) >>> 0;
bottom3NonZero = (bottom3NonZero | ((bottom3NonZero >>> 1 >>> 0))) >>> 0;
bottom3NonZero = ((((((bottom3NonZero << 31 >>> 0) >> 0)) >> 31 >> 0) >>> 0));
n = (out.nilCheck, out[3]) - 268431360 >>> 0;
out3Equal = n;
out3Equal = (out3Equal | ((out3Equal >>> 16 >>> 0))) >>> 0;
out3Equal = (out3Equal | ((out3Equal >>> 8 >>> 0))) >>> 0;
out3Equal = (out3Equal | ((out3Equal >>> 4 >>> 0))) >>> 0;
out3Equal = (out3Equal | ((out3Equal >>> 2 >>> 0))) >>> 0;
out3Equal = (out3Equal | ((out3Equal >>> 1 >>> 0))) >>> 0;
out3Equal = ~((((((out3Equal << 31 >>> 0) >> 0)) >> 31 >> 0) >>> 0)) >>> 0;
out3GT = ~(((((n >> 0)) >> 31 >> 0) >>> 0)) >>> 0;
mask$3 = (top4AllOnes & ((((((out3Equal & bottom3NonZero) >>> 0)) | out3GT) >>> 0))) >>> 0;
out.nilCheck, out[0] = ((out.nilCheck, out[0]) - (((1 & mask$3) >>> 0)) >>> 0);
out.nilCheck, out[3] = ((out.nilCheck, out[3]) - (((268431360 & mask$3) >>> 0)) >>> 0);
out.nilCheck, out[4] = ((out.nilCheck, out[4]) - (((268435455 & mask$3) >>> 0)) >>> 0);
out.nilCheck, out[5] = ((out.nilCheck, out[5]) - (((268435455 & mask$3) >>> 0)) >>> 0);
out.nilCheck, out[6] = ((out.nilCheck, out[6]) - (((268435455 & mask$3) >>> 0)) >>> 0);
out.nilCheck, out[7] = ((out.nilCheck, out[7]) - (((268435455 & mask$3) >>> 0)) >>> 0);
};
p224AddJacobian = function(x3, y3, z3, x1, y1, z1, x2, y2, z2) {
var $ptr, _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;
_tmp = arrayType.zero();
_tmp$1 = arrayType.zero();
_tmp$2 = arrayType.zero();
_tmp$3 = arrayType.zero();
_tmp$4 = arrayType.zero();
_tmp$5 = arrayType.zero();
_tmp$6 = arrayType.zero();
_tmp$7 = arrayType.zero();
_tmp$8 = arrayType.zero();
_tmp$9 = arrayType.zero();
_tmp$10 = arrayType.zero();
z1z1 = $clone(_tmp, p224FieldElement);
z2z2 = $clone(_tmp$1, p224FieldElement);
u1 = $clone(_tmp$2, p224FieldElement);
u2 = $clone(_tmp$3, p224FieldElement);
s1 = $clone(_tmp$4, p224FieldElement);
s2 = $clone(_tmp$5, p224FieldElement);
h = $clone(_tmp$6, p224FieldElement);
i = $clone(_tmp$7, p224FieldElement);
j = $clone(_tmp$8, p224FieldElement);
r = $clone(_tmp$9, p224FieldElement);
v = $clone(_tmp$10, p224FieldElement);
c = arrayType$1.zero();
z1IsZero = p224IsZero(z1);
z2IsZero = p224IsZero(z2);
p224Square(z1z1, z1, c);
p224Square(z2z2, z2, c);
p224Mul(u1, x1, z2z2, c);
p224Mul(u2, x2, z1z1, c);
p224Mul(s1, z2, z2z2, c);
p224Mul(s1, y1, s1, c);
p224Mul(s2, z1, z1z1, c);
p224Mul(s2, y2, s2, c);
p224Sub(h, u2, u1);
p224Reduce(h);
xEqual = p224IsZero(h);
j$1 = 0;
while (true) {
if (!(j$1 < 8)) { break; }
((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));
j$1 = j$1 + (1) >> 0;
}
p224Reduce(i);
p224Square(i, i, c);
p224Mul(j, h, i, c);
p224Sub(r, s2, s1);
p224Reduce(r);
yEqual = p224IsZero(r);
if ((xEqual === 1) && (yEqual === 1) && (z1IsZero === 0) && (z2IsZero === 0)) {
p224DoubleJacobian(x3, y3, z3, x1, y1, z1);
return;
}
i$1 = 0;
while (true) {
if (!(i$1 < 8)) { break; }
((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));
i$1 = i$1 + (1) >> 0;
}
p224Reduce(r);
p224Mul(v, u1, i, c);
p224Add(z1z1, z1z1, z2z2);
p224Add(z2z2, z1, z2);
p224Reduce(z2z2);
p224Square(z2z2, z2z2, c);
p224Sub(z3, z2z2, z1z1);
p224Reduce(z3);
p224Mul(z3, z3, h, c);
i$2 = 0;
while (true) {
if (!(i$2 < 8)) { break; }
((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));
i$2 = i$2 + (1) >> 0;
}
p224Add(z1z1, j, z1z1);
p224Reduce(z1z1);
p224Square(x3, r, c);
p224Sub(x3, x3, z1z1);
p224Reduce(x3);
i$3 = 0;
while (true) {
if (!(i$3 < 8)) { break; }
((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));
i$3 = i$3 + (1) >> 0;
}
p224Mul(s1, s1, j, c);
p224Sub(z1z1, v, x3);
p224Reduce(z1z1);
p224Mul(z1z1, z1z1, r, c);
p224Sub(y3, z1z1, s1);
p224Reduce(y3);
p224CopyConditional(x3, x2, z1IsZero);
p224CopyConditional(x3, x1, z2IsZero);
p224CopyConditional(y3, y2, z1IsZero);
p224CopyConditional(y3, y1, z2IsZero);
p224CopyConditional(z3, z2, z1IsZero);
p224CopyConditional(z3, z1, z2IsZero);
};
p224DoubleJacobian = function(x3, y3, z3, x1, y1, z1) {
var $ptr, _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;
_tmp = arrayType.zero();
_tmp$1 = arrayType.zero();
_tmp$2 = arrayType.zero();
_tmp$3 = arrayType.zero();
_tmp$4 = arrayType.zero();
delta = $clone(_tmp, p224FieldElement);
gamma = $clone(_tmp$1, p224FieldElement);
beta = $clone(_tmp$2, p224FieldElement);
alpha = $clone(_tmp$3, p224FieldElement);
t = $clone(_tmp$4, p224FieldElement);
c = arrayType$1.zero();
p224Square(delta, z1, c);
p224Square(gamma, y1, c);
p224Mul(beta, x1, gamma, c);
p224Add(t, x1, delta);
i = 0;
while (true) {
if (!(i < 8)) { break; }
((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));
i = i + (1) >> 0;
}
p224Reduce(t);
p224Sub(alpha, x1, delta);
p224Reduce(alpha);
p224Mul(alpha, alpha, t, c);
p224Add(z3, y1, z1);
p224Reduce(z3);
p224Square(z3, z3, c);
p224Sub(z3, z3, gamma);
p224Reduce(z3);
p224Sub(z3, z3, delta);
p224Reduce(z3);
i$1 = 0;
while (true) {
if (!(i$1 < 8)) { break; }
((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));
i$1 = i$1 + (1) >> 0;
}
p224Reduce(delta);
p224Square(x3, alpha, c);
p224Sub(x3, x3, delta);
p224Reduce(x3);
i$2 = 0;
while (true) {
if (!(i$2 < 8)) { break; }
((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));
i$2 = i$2 + (1) >> 0;
}
p224Sub(beta, beta, x3);
p224Reduce(beta);
p224Square(gamma, gamma, c);
i$3 = 0;
while (true) {
if (!(i$3 < 8)) { break; }
((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));
i$3 = i$3 + (1) >> 0;
}
p224Reduce(gamma);
p224Mul(y3, alpha, beta, c);
p224Sub(y3, y3, gamma);
p224Reduce(y3);
};
p224CopyConditional = function(out, in$1, control) {
var $ptr, control, i, in$1, out, y;
control = (y = (31), y < 32 ? (control << y) : 0) >>> 0;
control = (((((control >> 0)) >> 31 >> 0) >>> 0));
i = 0;
while (true) {
if (!(i < 8)) { break; }
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));
i = i + (1) >> 0;
}
};
p224ScalarMult = function(outX, outY, outZ, inX, inY, inZ, scalar) {
var $ptr, _i, _ref, _tmp, _tmp$1, _tmp$2, bit, bitNum, byte$1, i, inX, inY, inZ, outX, outY, outZ, scalar, xx, y, yy, zz;
_tmp = arrayType.zero();
_tmp$1 = arrayType.zero();
_tmp$2 = arrayType.zero();
xx = $clone(_tmp, p224FieldElement);
yy = $clone(_tmp$1, p224FieldElement);
zz = $clone(_tmp$2, p224FieldElement);
i = 0;
while (true) {
if (!(i < 8)) { break; }
outX.nilCheck, ((i < 0 || i >= outX.length) ? ($throwRuntimeError("index out of range"), undefined) : outX[i] = 0);
outY.nilCheck, ((i < 0 || i >= outY.length) ? ($throwRuntimeError("index out of range"), undefined) : outY[i] = 0);
outZ.nilCheck, ((i < 0 || i >= outZ.length) ? ($throwRuntimeError("index out of range"), undefined) : outZ[i] = 0);
i = i + (1) >> 0;
}
_ref = scalar;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
byte$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
bitNum = 0;
while (true) {
if (!(bitNum < 8)) { break; }
p224DoubleJacobian(outX, outY, outZ, outX, outY, outZ);
bit = (((((((y = ((7 - bitNum >>> 0)), y < 32 ? (byte$1 >>> y) : 0) << 24 >>> 24)) & 1) >>> 0) >>> 0));
p224AddJacobian(xx, yy, zz, inX, inY, inZ, outX, outY, outZ);
p224CopyConditional(outX, xx, bit);
p224CopyConditional(outY, yy, bit);
p224CopyConditional(outZ, zz, bit);
bitNum = bitNum + (1) >>> 0;
}
_i++;
}
};
p224ToAffine = function(x, y, z) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, isPointAtInfinity, outx, outy, tmp, x, y, z, zinv, zinvsq;
_tmp = arrayType.zero();
_tmp$1 = arrayType.zero();
_tmp$2 = arrayType.zero();
_tmp$3 = arrayType.zero();
zinv = $clone(_tmp, p224FieldElement);
zinvsq = $clone(_tmp$1, p224FieldElement);
outx = $clone(_tmp$2, p224FieldElement);
outy = $clone(_tmp$3, p224FieldElement);
tmp = arrayType$1.zero();
isPointAtInfinity = p224IsZero(z);
if (isPointAtInfinity === 1) {
return [new big.Int.ptr(false, big.nat.nil), new big.Int.ptr(false, big.nat.nil)];
}
p224Invert(zinv, z);
p224Square(zinvsq, zinv, tmp);
p224Mul(x, x, zinvsq, tmp);
p224Mul(zinvsq, zinvsq, zinv, tmp);
p224Mul(y, y, zinvsq, tmp);
p224Contract(outx, x);
p224Contract(outy, y);
return [p224ToBig(outx), p224ToBig(outy)];
};
get28BitsFromEnd = function(buf, shift) {
var $ptr, b, buf, i, l, ret, shift, x, y, y$1;
ret = 0;
i = 0;
while (true) {
if (!(i < 4)) { break; }
b = 0;
l = buf.$length;
if (l > 0) {
b = (x = l - 1 >> 0, ((x < 0 || x >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + x]));
if (!((i === 3)) || (shift === 4)) {
buf = $subslice(buf, 0, (l - 1 >> 0));
}
}
ret = (ret | (((y = shift, y < 32 ? (((y$1 = ((8 * i >>> 0)), y$1 < 32 ? (((b >>> 0)) << y$1) : 0) >>> 0) >>> y) : 0) >>> 0))) >>> 0;
i = i + (1) >>> 0;
}
ret = (ret & (268435455)) >>> 0;
return [ret, buf];
};
p224FromBig = function(out, in$1) {
var $ptr, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, bytes, in$1, out;
bytes = in$1.Bytes();
_tuple = get28BitsFromEnd(bytes, 0);
out.nilCheck, out[0] = _tuple[0];
bytes = _tuple[1];
_tuple$1 = get28BitsFromEnd(bytes, 4);
out.nilCheck, out[1] = _tuple$1[0];
bytes = _tuple$1[1];
_tuple$2 = get28BitsFromEnd(bytes, 0);
out.nilCheck, out[2] = _tuple$2[0];
bytes = _tuple$2[1];
_tuple$3 = get28BitsFromEnd(bytes, 4);
out.nilCheck, out[3] = _tuple$3[0];
bytes = _tuple$3[1];
_tuple$4 = get28BitsFromEnd(bytes, 0);
out.nilCheck, out[4] = _tuple$4[0];
bytes = _tuple$4[1];
_tuple$5 = get28BitsFromEnd(bytes, 4);
out.nilCheck, out[5] = _tuple$5[0];
bytes = _tuple$5[1];
_tuple$6 = get28BitsFromEnd(bytes, 0);
out.nilCheck, out[6] = _tuple$6[0];
bytes = _tuple$6[1];
_tuple$7 = get28BitsFromEnd(bytes, 4);
out.nilCheck, out[7] = _tuple$7[0];
bytes = _tuple$7[1];
};
p224ToBig = function(in$1) {
var $ptr, buf, in$1;
buf = arrayType$2.zero();
buf[27] = (((in$1.nilCheck, in$1[0]) << 24 >>> 24));
buf[26] = ((((in$1.nilCheck, in$1[0]) >>> 8 >>> 0) << 24 >>> 24));
buf[25] = ((((in$1.nilCheck, in$1[0]) >>> 16 >>> 0) << 24 >>> 24));
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));
buf[23] = ((((in$1.nilCheck, in$1[1]) >>> 4 >>> 0) << 24 >>> 24));
buf[22] = ((((in$1.nilCheck, in$1[1]) >>> 12 >>> 0) << 24 >>> 24));
buf[21] = ((((in$1.nilCheck, in$1[1]) >>> 20 >>> 0) << 24 >>> 24));
buf[20] = (((in$1.nilCheck, in$1[2]) << 24 >>> 24));
buf[19] = ((((in$1.nilCheck, in$1[2]) >>> 8 >>> 0) << 24 >>> 24));
buf[18] = ((((in$1.nilCheck, in$1[2]) >>> 16 >>> 0) << 24 >>> 24));
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));
buf[16] = ((((in$1.nilCheck, in$1[3]) >>> 4 >>> 0) << 24 >>> 24));
buf[15] = ((((in$1.nilCheck, in$1[3]) >>> 12 >>> 0) << 24 >>> 24));
buf[14] = ((((in$1.nilCheck, in$1[3]) >>> 20 >>> 0) << 24 >>> 24));
buf[13] = (((in$1.nilCheck, in$1[4]) << 24 >>> 24));
buf[12] = ((((in$1.nilCheck, in$1[4]) >>> 8 >>> 0) << 24 >>> 24));
buf[11] = ((((in$1.nilCheck, in$1[4]) >>> 16 >>> 0) << 24 >>> 24));
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));
buf[9] = ((((in$1.nilCheck, in$1[5]) >>> 4 >>> 0) << 24 >>> 24));
buf[8] = ((((in$1.nilCheck, in$1[5]) >>> 12 >>> 0) << 24 >>> 24));
buf[7] = ((((in$1.nilCheck, in$1[5]) >>> 20 >>> 0) << 24 >>> 24));
buf[6] = (((in$1.nilCheck, in$1[6]) << 24 >>> 24));
buf[5] = ((((in$1.nilCheck, in$1[6]) >>> 8 >>> 0) << 24 >>> 24));
buf[4] = ((((in$1.nilCheck, in$1[6]) >>> 16 >>> 0) << 24 >>> 24));
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));
buf[2] = ((((in$1.nilCheck, in$1[7]) >>> 4 >>> 0) << 24 >>> 24));
buf[1] = ((((in$1.nilCheck, in$1[7]) >>> 12 >>> 0) << 24 >>> 24));
buf[0] = ((((in$1.nilCheck, in$1[7]) >>> 20 >>> 0) << 24 >>> 24));
return new big.Int.ptr(false, big.nat.nil).SetBytes(new sliceType(buf));
};
initP256 = function() {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
p256Params = new CurveParams.ptr(ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, 0, "P-256");
_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; }
_tuple = _r;
p256Params.P = _tuple[0];
_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; }
_tuple$1 = _r$1;
p256Params.N = _tuple$1[0];
_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; }
_tuple$2 = _r$2;
p256Params.B = _tuple$2[0];
_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; }
_tuple$3 = _r$3;
p256Params.Gx = _tuple$3[0];
_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; }
_tuple$4 = _r$4;
p256Params.Gy = _tuple$4[0];
p256Params.BitSize = 256;
_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; }
_tuple$5 = _r$5;
p256RInverse = _tuple$5[0];
initP256Arch();
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: initP256 }; } $f.$ptr = $ptr; $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;
};
p256Curve.ptr.prototype.Params = function() {
var $ptr, curve;
curve = this;
return curve.CurveParams;
};
p256Curve.prototype.Params = function() { return this.$val.Params(); };
p256GetScalar = function(out, in$1) {
var $ptr, _i, _r, _ref, i, in$1, n, out, scalarBytes, v, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = new big.Int.ptr(false, big.nat.nil).SetBytes(in$1);
scalarBytes = sliceType.nil;
/* */ if (n.Cmp(p256Params.N) >= 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (n.Cmp(p256Params.N) >= 0) { */ case 1:
_r = n.Mod(n, p256Params.N); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
scalarBytes = n.Bytes();
$s = 3; continue;
/* } else { */ case 2:
scalarBytes = in$1;
/* } */ case 3:
_ref = scalarBytes;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
(x = scalarBytes.$length - ((1 + i >> 0)) >> 0, out.nilCheck, ((x < 0 || x >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[x] = v));
_i++;
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: p256GetScalar }; } $f.$ptr = $ptr; $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;
};
p256Curve.ptr.prototype.ScalarBaseMult = function(scalar) {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tuple, scalar, scalarReversed, x, x1, y, y1, z1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
scalarReversed = [scalarReversed];
x1 = [x1];
y1 = [y1];
z1 = [z1];
x = ptrType$1.nil;
y = ptrType$1.nil;
scalarReversed[0] = arrayType$3.zero();
$r = p256GetScalar(scalarReversed[0], scalar); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_tmp = arrayType$4.zero();
_tmp$1 = arrayType$4.zero();
_tmp$2 = arrayType$4.zero();
x1[0] = $clone(_tmp, arrayType$4);
y1[0] = $clone(_tmp$1, arrayType$4);
z1[0] = $clone(_tmp$2, arrayType$4);
p256ScalarBaseMult(x1[0], y1[0], z1[0], scalarReversed[0]);
_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; }
_tuple = _r;
x = _tuple[0];
y = _tuple[1];
$s = -1; return [x, y];
/* */ } return; } if ($f === undefined) { $f = { $blk: p256Curve.ptr.prototype.ScalarBaseMult }; } $f.$ptr = $ptr; $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;
};
p256Curve.prototype.ScalarBaseMult = function(scalar) { return this.$val.ScalarBaseMult(scalar); };
p256Curve.ptr.prototype.ScalarMult = function(bigX, bigY, scalar) {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tuple, bigX, bigY, px, py, scalar, scalarReversed, x, x1, y, y1, z1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
px = [px];
py = [py];
scalarReversed = [scalarReversed];
x1 = [x1];
y1 = [y1];
z1 = [z1];
x = ptrType$1.nil;
y = ptrType$1.nil;
scalarReversed[0] = arrayType$3.zero();
$r = p256GetScalar(scalarReversed[0], scalar); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_tmp = arrayType$4.zero();
_tmp$1 = arrayType$4.zero();
_tmp$2 = arrayType$4.zero();
_tmp$3 = arrayType$4.zero();
_tmp$4 = arrayType$4.zero();
px[0] = $clone(_tmp, arrayType$4);
py[0] = $clone(_tmp$1, arrayType$4);
x1[0] = $clone(_tmp$2, arrayType$4);
y1[0] = $clone(_tmp$3, arrayType$4);
z1[0] = $clone(_tmp$4, arrayType$4);
$r = p256FromBig(px[0], bigX); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = p256FromBig(py[0], bigY); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
p256ScalarMult(x1[0], y1[0], z1[0], px[0], py[0], scalarReversed[0]);
_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; }
_tuple = _r;
x = _tuple[0];
y = _tuple[1];
$s = -1; return [x, y];
/* */ } return; } if ($f === undefined) { $f = { $blk: p256Curve.ptr.prototype.ScalarMult }; } $f.$ptr = $ptr; $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;
};
p256Curve.prototype.ScalarMult = function(bigX, bigY, scalar) { return this.$val.ScalarMult(bigX, bigY, scalar); };
nonZeroToAllOnes = function(x) {
var $ptr, x;
return ((((x - 1 >>> 0)) >>> 31 >>> 0)) - 1 >>> 0;
};
p256ReduceCarry = function(inout, carry) {
var $ptr, carry, carry_mask, inout;
carry_mask = nonZeroToAllOnes(carry);
inout.nilCheck, inout[0] = ((inout.nilCheck, inout[0]) + ((carry << 1 >>> 0)) >>> 0);
inout.nilCheck, inout[3] = ((inout.nilCheck, inout[3]) + (((268435456 & carry_mask) >>> 0)) >>> 0);
inout.nilCheck, inout[3] = ((inout.nilCheck, inout[3]) - ((carry << 11 >>> 0)) >>> 0);
inout.nilCheck, inout[4] = ((inout.nilCheck, inout[4]) + (((536870911 & carry_mask) >>> 0)) >>> 0);
inout.nilCheck, inout[5] = ((inout.nilCheck, inout[5]) + (((268435455 & carry_mask) >>> 0)) >>> 0);
inout.nilCheck, inout[6] = ((inout.nilCheck, inout[6]) + (((536870911 & carry_mask) >>> 0)) >>> 0);
inout.nilCheck, inout[6] = ((inout.nilCheck, inout[6]) - ((carry << 22 >>> 0)) >>> 0);
inout.nilCheck, inout[7] = ((inout.nilCheck, inout[7]) - (((1 & carry_mask) >>> 0)) >>> 0);
inout.nilCheck, inout[7] = ((inout.nilCheck, inout[7]) + ((carry << 25 >>> 0)) >>> 0);
};
p256Sum = function(out, in$1, in2) {
var $ptr, carry, i, in$1, in2, out;
carry = 0;
i = 0;
while (true) {
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));
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));
carry = (out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 29 >>> 0;
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));
i = i + (1) >> 0;
if (i === 9) {
break;
}
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));
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));
carry = (out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 28 >>> 0;
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));
i = i + (1) >> 0;
}
p256ReduceCarry(out, carry);
};
p256Diff = function(out, in$1, in2) {
var $ptr, carry, i, in$1, in2, out;
carry = 0;
i = 0;
while (true) {
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));
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));
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));
carry = (out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 29 >>> 0;
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));
i = i + (1) >> 0;
if (i === 9) {
break;
}
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));
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));
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));
carry = (out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 28 >>> 0;
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));
i = i + (1) >> 0;
}
p256ReduceCarry(out, carry);
};
p256ReduceDegree = function(out, tmp) {
var $ptr, _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;
tmp2 = arrayType$5.zero();
_tmp = 0;
_tmp$1 = 0;
_tmp$2 = 0;
carry = _tmp;
x = _tmp$1;
xMask = _tmp$2;
tmp2[0] = ((((tmp[0].$low >>> 0)) & 536870911) >>> 0);
tmp2[1] = (((tmp[0].$low >>> 0)) >>> 29 >>> 0);
tmp2[1] = ((tmp2[1] | ((((((($shiftRightUint64(tmp[0], 32).$low >>> 0)) << 3 >>> 0)) & 268435455) >>> 0))) >>> 0);
tmp2[1] = (tmp2[1] + (((((tmp[1].$low >>> 0)) & 268435455) >>> 0)) >>> 0);
carry = tmp2[1] >>> 28 >>> 0;
tmp2[1] = ((tmp2[1] & (268435455)) >>> 0);
i = 2;
while (true) {
if (!(i < 17)) { break; }
((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));
((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));
((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));
((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));
((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));
carry = ((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i]) >>> 29 >>> 0;
((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));
i = i + (1) >> 0;
if (i === 17) {
break;
}
((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));
((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));
((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));
((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));
((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));
carry = ((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i]) >>> 28 >>> 0;
((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));
i = i + (1) >> 0;
}
tmp2[17] = ((($shiftRightUint64(tmp[15], 32).$low >>> 0)) >>> 25 >>> 0);
tmp2[17] = (tmp2[17] + ((((tmp[16].$low >>> 0)) >>> 29 >>> 0)) >>> 0);
tmp2[17] = (tmp2[17] + (((($shiftRightUint64(tmp[16], 32).$low >>> 0)) << 3 >>> 0)) >>> 0);
tmp2[17] = (tmp2[17] + (carry) >>> 0);
i$1 = 0;
while (true) {
_index = i$1 + 1 >> 0;
((_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));
x = (((i$1 < 0 || i$1 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i$1]) & 536870911) >>> 0;
xMask = nonZeroToAllOnes(x);
((i$1 < 0 || i$1 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i$1] = 0);
_index$1 = i$1 + 3 >> 0;
((_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));
_index$2 = i$1 + 4 >> 0;
((_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));
_index$3 = i$1 + 6 >> 0;
((_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));
_index$4 = i$1 + 7 >> 0;
((_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));
_index$5 = i$1 + 7 >> 0;
((_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));
_index$6 = i$1 + 8 >> 0;
((_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));
_index$7 = i$1 + 7 >> 0;
((_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));
_index$8 = i$1 + 8 >> 0;
((_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));
_index$9 = i$1 + 8 >> 0;
((_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));
_index$10 = i$1 + 8 >> 0;
((_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));
_index$11 = i$1 + 8 >> 0;
((_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));
_index$12 = i$1 + 9 >> 0;
((_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));
if ((i$1 + 1 >> 0) === 9) {
break;
}
_index$13 = i$1 + 2 >> 0;
((_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));
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;
xMask = nonZeroToAllOnes(x);
(x$9 = i$1 + 1 >> 0, ((x$9 < 0 || x$9 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[x$9] = 0));
_index$14 = i$1 + 4 >> 0;
((_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));
_index$15 = i$1 + 5 >> 0;
((_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));
_index$16 = i$1 + 7 >> 0;
((_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));
_index$17 = i$1 + 8 >> 0;
((_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));
_index$18 = i$1 + 8 >> 0;
((_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));
_index$19 = i$1 + 9 >> 0;
((_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));
_index$20 = i$1 + 8 >> 0;
((_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));
_index$21 = i$1 + 9 >> 0;
((_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));
_index$22 = i$1 + 9 >> 0;
((_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));
_index$23 = i$1 + 9 >> 0;
((_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));
_index$24 = i$1 + 10 >> 0;
((_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));
i$1 = i$1 + (2) >> 0;
}
carry = 0;
i$2 = 0;
while (true) {
if (!(i$2 < 8)) { break; }
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])));
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));
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));
carry = (out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$2])) >>> 29 >>> 0;
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));
i$2 = i$2 + (1) >> 0;
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));
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));
carry = (out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$2])) >>> 28 >>> 0;
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));
i$2 = i$2 + (1) >> 0;
}
out.nilCheck, out[8] = tmp2[17];
out.nilCheck, out[8] = ((out.nilCheck, out[8]) + (carry) >>> 0);
carry = (out.nilCheck, out[8]) >>> 29 >>> 0;
out.nilCheck, out[8] = (((out.nilCheck, out[8]) & (536870911)) >>> 0);
p256ReduceCarry(out, carry);
};
p256Square = function(out, in$1) {
var $ptr, 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;
tmp = arrayType$6.zero();
tmp[0] = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[0]))), (new $Uint64(0, (in$1.nilCheck, in$1[0]))));
tmp[1] = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[0]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[1]))), 1)));
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));
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));
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));
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));
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));
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));
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));
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));
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));
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));
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));
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));
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));
tmp[15] = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[7]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[8]))), 1)));
tmp[16] = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[8]))), (new $Uint64(0, (in$1.nilCheck, in$1[8]))));
p256ReduceDegree(out, $clone(tmp, arrayType$6));
};
p256Mul = function(out, in$1, in2) {
var $ptr, 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;
tmp = arrayType$6.zero();
tmp[0] = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[0]))), (new $Uint64(0, (in2.nilCheck, in2[0]))));
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));
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));
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));
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));
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));
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));
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));
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));
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));
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));
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));
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));
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));
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));
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));
tmp[16] = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[8]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[8]))), 0)));
p256ReduceDegree(out, $clone(tmp, arrayType$6));
};
p256Assign = function(out, in$1) {
var $ptr, in$1, out;
arrayType$4.copy(out, in$1);
};
p256Invert = function(out, in$1) {
var $ptr, _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;
_tmp = arrayType$4.zero();
_tmp$1 = arrayType$4.zero();
ftmp = $clone(_tmp, arrayType$4);
ftmp2 = $clone(_tmp$1, arrayType$4);
_tmp$2 = arrayType$4.zero();
_tmp$3 = arrayType$4.zero();
_tmp$4 = arrayType$4.zero();
_tmp$5 = arrayType$4.zero();
_tmp$6 = arrayType$4.zero();
_tmp$7 = arrayType$4.zero();
e2 = $clone(_tmp$2, arrayType$4);
e4 = $clone(_tmp$3, arrayType$4);
e8 = $clone(_tmp$4, arrayType$4);
e16 = $clone(_tmp$5, arrayType$4);
e32 = $clone(_tmp$6, arrayType$4);
e64 = $clone(_tmp$7, arrayType$4);
p256Square(ftmp, in$1);
p256Mul(ftmp, in$1, ftmp);
p256Assign(e2, ftmp);
p256Square(ftmp, ftmp);
p256Square(ftmp, ftmp);
p256Mul(ftmp, ftmp, e2);
p256Assign(e4, ftmp);
p256Square(ftmp, ftmp);
p256Square(ftmp, ftmp);
p256Square(ftmp, ftmp);
p256Square(ftmp, ftmp);
p256Mul(ftmp, ftmp, e4);
p256Assign(e8, ftmp);
i = 0;
while (true) {
if (!(i < 8)) { break; }
p256Square(ftmp, ftmp);
i = i + (1) >> 0;
}
p256Mul(ftmp, ftmp, e8);
p256Assign(e16, ftmp);
i$1 = 0;
while (true) {
if (!(i$1 < 16)) { break; }
p256Square(ftmp, ftmp);
i$1 = i$1 + (1) >> 0;
}
p256Mul(ftmp, ftmp, e16);
p256Assign(e32, ftmp);
i$2 = 0;
while (true) {
if (!(i$2 < 32)) { break; }
p256Square(ftmp, ftmp);
i$2 = i$2 + (1) >> 0;
}
p256Assign(e64, ftmp);
p256Mul(ftmp, ftmp, in$1);
i$3 = 0;
while (true) {
if (!(i$3 < 192)) { break; }
p256Square(ftmp, ftmp);
i$3 = i$3 + (1) >> 0;
}
p256Mul(ftmp2, e64, e32);
i$4 = 0;
while (true) {
if (!(i$4 < 16)) { break; }
p256Square(ftmp2, ftmp2);
i$4 = i$4 + (1) >> 0;
}
p256Mul(ftmp2, ftmp2, e16);
i$5 = 0;
while (true) {
if (!(i$5 < 8)) { break; }
p256Square(ftmp2, ftmp2);
i$5 = i$5 + (1) >> 0;
}
p256Mul(ftmp2, ftmp2, e8);
i$6 = 0;
while (true) {
if (!(i$6 < 4)) { break; }
p256Square(ftmp2, ftmp2);
i$6 = i$6 + (1) >> 0;
}
p256Mul(ftmp2, ftmp2, e4);
p256Square(ftmp2, ftmp2);
p256Square(ftmp2, ftmp2);
p256Mul(ftmp2, ftmp2, e2);
p256Square(ftmp2, ftmp2);
p256Square(ftmp2, ftmp2);
p256Mul(ftmp2, ftmp2, in$1);
p256Mul(out, ftmp2, ftmp);
};
p256Scalar3 = function(out) {
var $ptr, carry, i, out;
carry = 0;
i = 0;
while (true) {
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));
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));
carry = (out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 29 >>> 0;
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));
i = i + (1) >> 0;
if (i === 9) {
break;
}
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));
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));
carry = (out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 28 >>> 0;
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));
i = i + (1) >> 0;
}
p256ReduceCarry(out, carry);
};
p256Scalar4 = function(out) {
var $ptr, _tmp, _tmp$1, carry, i, nextCarry, out, y, y$1;
_tmp = 0;
_tmp$1 = 0;
carry = _tmp;
nextCarry = _tmp$1;
i = 0;
while (true) {
nextCarry = (out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 27 >>> 0;
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));
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));
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));
carry = nextCarry + (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 29 >>> 0)) >>> 0;
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));
i = i + (1) >> 0;
if (i === 9) {
break;
}
nextCarry = (out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 26 >>> 0;
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));
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));
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));
carry = nextCarry + (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 28 >>> 0)) >>> 0;
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));
i = i + (1) >> 0;
}
p256ReduceCarry(out, carry);
};
p256Scalar8 = function(out) {
var $ptr, _tmp, _tmp$1, carry, i, nextCarry, out, y, y$1;
_tmp = 0;
_tmp$1 = 0;
carry = _tmp;
nextCarry = _tmp$1;
i = 0;
while (true) {
nextCarry = (out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 26 >>> 0;
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));
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));
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));
carry = nextCarry + (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 29 >>> 0)) >>> 0;
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));
i = i + (1) >> 0;
if (i === 9) {
break;
}
nextCarry = (out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 25 >>> 0;
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));
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));
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));
carry = nextCarry + (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 28 >>> 0)) >>> 0;
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));
i = i + (1) >> 0;
}
p256ReduceCarry(out, carry);
};
p256PointDouble = function(xOut, yOut, zOut, x, y, z) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, alpha, beta, delta, gamma, tmp, tmp2, x, xOut, y, yOut, z, zOut;
_tmp = arrayType$4.zero();
_tmp$1 = arrayType$4.zero();
_tmp$2 = arrayType$4.zero();
_tmp$3 = arrayType$4.zero();
_tmp$4 = arrayType$4.zero();
_tmp$5 = arrayType$4.zero();
delta = $clone(_tmp, arrayType$4);
gamma = $clone(_tmp$1, arrayType$4);
alpha = $clone(_tmp$2, arrayType$4);
beta = $clone(_tmp$3, arrayType$4);
tmp = $clone(_tmp$4, arrayType$4);
tmp2 = $clone(_tmp$5, arrayType$4);
p256Square(delta, z);
p256Square(gamma, y);
p256Mul(beta, x, gamma);
p256Sum(tmp, x, delta);
p256Diff(tmp2, x, delta);
p256Mul(alpha, tmp, tmp2);
p256Scalar3(alpha);
p256Sum(tmp, y, z);
p256Square(tmp, tmp);
p256Diff(tmp, tmp, gamma);
p256Diff(zOut, tmp, delta);
p256Scalar4(beta);
p256Square(xOut, alpha);
p256Diff(xOut, xOut, beta);
p256Diff(xOut, xOut, beta);
p256Diff(tmp, beta, xOut);
p256Mul(tmp, alpha, tmp);
p256Square(tmp2, gamma);
p256Scalar8(tmp2);
p256Diff(yOut, tmp, tmp2);
};
p256PointAddMixed = function(xOut, yOut, zOut, x1, y1, z1, x2, y2) {
var $ptr, _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;
_tmp = arrayType$4.zero();
_tmp$1 = arrayType$4.zero();
_tmp$2 = arrayType$4.zero();
_tmp$3 = arrayType$4.zero();
_tmp$4 = arrayType$4.zero();
_tmp$5 = arrayType$4.zero();
_tmp$6 = arrayType$4.zero();
_tmp$7 = arrayType$4.zero();
_tmp$8 = arrayType$4.zero();
_tmp$9 = arrayType$4.zero();
_tmp$10 = arrayType$4.zero();
z1z1 = $clone(_tmp, arrayType$4);
z1z1z1 = $clone(_tmp$1, arrayType$4);
s2 = $clone(_tmp$2, arrayType$4);
u2 = $clone(_tmp$3, arrayType$4);
h = $clone(_tmp$4, arrayType$4);
i = $clone(_tmp$5, arrayType$4);
j = $clone(_tmp$6, arrayType$4);
r = $clone(_tmp$7, arrayType$4);
rr = $clone(_tmp$8, arrayType$4);
v = $clone(_tmp$9, arrayType$4);
tmp = $clone(_tmp$10, arrayType$4);
p256Square(z1z1, z1);
p256Sum(tmp, z1, z1);
p256Mul(u2, x2, z1z1);
p256Mul(z1z1z1, z1, z1z1);
p256Mul(s2, y2, z1z1z1);
p256Diff(h, u2, x1);
p256Sum(i, h, h);
p256Square(i, i);
p256Mul(j, h, i);
p256Diff(r, s2, y1);
p256Sum(r, r, r);
p256Mul(v, x1, i);
p256Mul(zOut, tmp, h);
p256Square(rr, r);
p256Diff(xOut, rr, j);
p256Diff(xOut, xOut, v);
p256Diff(xOut, xOut, v);
p256Diff(tmp, v, xOut);
p256Mul(yOut, tmp, r);
p256Mul(tmp, y1, j);
p256Diff(yOut, yOut, tmp);
p256Diff(yOut, yOut, tmp);
};
p256PointAdd = function(xOut, yOut, zOut, x1, y1, z1, x2, y2, z2) {
var $ptr, _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;
_tmp = arrayType$4.zero();
_tmp$1 = arrayType$4.zero();
_tmp$2 = arrayType$4.zero();
_tmp$3 = arrayType$4.zero();
_tmp$4 = arrayType$4.zero();
_tmp$5 = arrayType$4.zero();
_tmp$6 = arrayType$4.zero();
_tmp$7 = arrayType$4.zero();
_tmp$8 = arrayType$4.zero();
_tmp$9 = arrayType$4.zero();
_tmp$10 = arrayType$4.zero();
_tmp$11 = arrayType$4.zero();
_tmp$12 = arrayType$4.zero();
_tmp$13 = arrayType$4.zero();
_tmp$14 = arrayType$4.zero();
z1z1 = $clone(_tmp, arrayType$4);
z1z1z1 = $clone(_tmp$1, arrayType$4);
z2z2 = $clone(_tmp$2, arrayType$4);
z2z2z2 = $clone(_tmp$3, arrayType$4);
s1 = $clone(_tmp$4, arrayType$4);
s2 = $clone(_tmp$5, arrayType$4);
u1 = $clone(_tmp$6, arrayType$4);
u2 = $clone(_tmp$7, arrayType$4);
h = $clone(_tmp$8, arrayType$4);
i = $clone(_tmp$9, arrayType$4);
j = $clone(_tmp$10, arrayType$4);
r = $clone(_tmp$11, arrayType$4);
rr = $clone(_tmp$12, arrayType$4);
v = $clone(_tmp$13, arrayType$4);
tmp = $clone(_tmp$14, arrayType$4);
p256Square(z1z1, z1);
p256Square(z2z2, z2);
p256Mul(u1, x1, z2z2);
p256Sum(tmp, z1, z2);
p256Square(tmp, tmp);
p256Diff(tmp, tmp, z1z1);
p256Diff(tmp, tmp, z2z2);
p256Mul(z2z2z2, z2, z2z2);
p256Mul(s1, y1, z2z2z2);
p256Mul(u2, x2, z1z1);
p256Mul(z1z1z1, z1, z1z1);
p256Mul(s2, y2, z1z1z1);
p256Diff(h, u2, u1);
p256Sum(i, h, h);
p256Square(i, i);
p256Mul(j, h, i);
p256Diff(r, s2, s1);
p256Sum(r, r, r);
p256Mul(v, u1, i);
p256Mul(zOut, tmp, h);
p256Square(rr, r);
p256Diff(xOut, rr, j);
p256Diff(xOut, xOut, v);
p256Diff(xOut, xOut, v);
p256Diff(tmp, v, xOut);
p256Mul(yOut, tmp, r);
p256Mul(tmp, s1, j);
p256Diff(yOut, yOut, tmp);
p256Diff(yOut, yOut, tmp);
};
p256CopyConditional = function(out, in$1, mask$1) {
var $ptr, i, in$1, mask$1, out, tmp;
i = 0;
while (true) {
if (!(i < 9)) { break; }
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;
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));
i = i + (1) >> 0;
}
};
p256SelectAffinePoint = function(xOut, yOut, table, index) {
var $ptr, _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;
_ref = xOut;
_i = 0;
while (true) {
if (!(_i < 9)) { break; }
i = _i;
xOut.nilCheck, ((i < 0 || i >= xOut.length) ? ($throwRuntimeError("index out of range"), undefined) : xOut[i] = 0);
_i++;
}
_ref$1 = yOut;
_i$1 = 0;
while (true) {
if (!(_i$1 < 9)) { break; }
i$1 = _i$1;
yOut.nilCheck, ((i$1 < 0 || i$1 >= yOut.length) ? ($throwRuntimeError("index out of range"), undefined) : yOut[i$1] = 0);
_i$1++;
}
i$2 = 1;
while (true) {
if (!(i$2 < 16)) { break; }
mask$1 = (i$2 ^ index) >>> 0;
mask$1 = (mask$1 | ((mask$1 >>> 2 >>> 0))) >>> 0;
mask$1 = (mask$1 | ((mask$1 >>> 1 >>> 0))) >>> 0;
mask$1 = (mask$1 & (1)) >>> 0;
mask$1 = mask$1 - (1) >>> 0;
_ref$2 = xOut;
_i$2 = 0;
while (true) {
if (!(_i$2 < 9)) { break; }
j = _i$2;
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));
table = $subslice(table, 1);
_i$2++;
}
_ref$3 = yOut;
_i$3 = 0;
while (true) {
if (!(_i$3 < 9)) { break; }
j$1 = _i$3;
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));
table = $subslice(table, 1);
_i$3++;
}
i$2 = i$2 + (1) >>> 0;
}
};
p256SelectJacobianPoint = function(xOut, yOut, zOut, table, index) {
var $ptr, _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;
_ref = xOut;
_i = 0;
while (true) {
if (!(_i < 9)) { break; }
i = _i;
xOut.nilCheck, ((i < 0 || i >= xOut.length) ? ($throwRuntimeError("index out of range"), undefined) : xOut[i] = 0);
_i++;
}
_ref$1 = yOut;
_i$1 = 0;
while (true) {
if (!(_i$1 < 9)) { break; }
i$1 = _i$1;
yOut.nilCheck, ((i$1 < 0 || i$1 >= yOut.length) ? ($throwRuntimeError("index out of range"), undefined) : yOut[i$1] = 0);
_i$1++;
}
_ref$2 = zOut;
_i$2 = 0;
while (true) {
if (!(_i$2 < 9)) { break; }
i$2 = _i$2;
zOut.nilCheck, ((i$2 < 0 || i$2 >= zOut.length) ? ($throwRuntimeError("index out of range"), undefined) : zOut[i$2] = 0);
_i$2++;
}
i$3 = 1;
while (true) {
if (!(i$3 < 16)) { break; }
mask$1 = (i$3 ^ index) >>> 0;
mask$1 = (mask$1 | ((mask$1 >>> 2 >>> 0))) >>> 0;
mask$1 = (mask$1 | ((mask$1 >>> 1 >>> 0))) >>> 0;
mask$1 = (mask$1 & (1)) >>> 0;
mask$1 = mask$1 - (1) >>> 0;
_ref$3 = xOut;
_i$3 = 0;
while (true) {
if (!(_i$3 < 9)) { break; }
j = _i$3;
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));
_i$3++;
}
_ref$4 = yOut;
_i$4 = 0;
while (true) {
if (!(_i$4 < 9)) { break; }
j$1 = _i$4;
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));
_i$4++;
}
_ref$5 = zOut;
_i$5 = 0;
while (true) {
if (!(_i$5 < 9)) { break; }
j$2 = _i$5;
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));
_i$5++;
}
i$3 = i$3 + (1) >>> 0;
}
};
p256GetBit = function(scalar, bit) {
var $ptr, bit, scalar, x, y;
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));
};
p256ScalarBaseMult = function(xOut, yOut, zOut, scalar) {
var $ptr, _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;
nIsInfinityMask = 4294967295;
_tmp = 0;
_tmp$1 = 0;
_tmp$2 = 0;
pIsNoninfiniteMask = _tmp;
mask$1 = _tmp$1;
tableOffset = _tmp$2;
_tmp$3 = arrayType$4.zero();
_tmp$4 = arrayType$4.zero();
_tmp$5 = arrayType$4.zero();
_tmp$6 = arrayType$4.zero();
_tmp$7 = arrayType$4.zero();
px = $clone(_tmp$3, arrayType$4);
py = $clone(_tmp$4, arrayType$4);
tx = $clone(_tmp$5, arrayType$4);
ty = $clone(_tmp$6, arrayType$4);
tz = $clone(_tmp$7, arrayType$4);
_ref = xOut;
_i = 0;
while (true) {
if (!(_i < 9)) { break; }
i = _i;
xOut.nilCheck, ((i < 0 || i >= xOut.length) ? ($throwRuntimeError("index out of range"), undefined) : xOut[i] = 0);
_i++;
}
_ref$1 = yOut;
_i$1 = 0;
while (true) {
if (!(_i$1 < 9)) { break; }
i$1 = _i$1;
yOut.nilCheck, ((i$1 < 0 || i$1 >= yOut.length) ? ($throwRuntimeError("index out of range"), undefined) : yOut[i$1] = 0);
_i$1++;
}
_ref$2 = zOut;
_i$2 = 0;
while (true) {
if (!(_i$2 < 9)) { break; }
i$2 = _i$2;
zOut.nilCheck, ((i$2 < 0 || i$2 >= zOut.length) ? ($throwRuntimeError("index out of range"), undefined) : zOut[i$2] = 0);
_i$2++;
}
i$3 = 0;
while (true) {
if (!(i$3 < 32)) { break; }
if (!((i$3 === 0))) {
p256PointDouble(xOut, yOut, zOut, xOut, yOut, zOut);
}
tableOffset = 0;
j = 0;
while (true) {
if (!(j <= 32)) { break; }
bit0 = p256GetBit(scalar, (31 - i$3 >>> 0) + j >>> 0);
bit1 = p256GetBit(scalar, (95 - i$3 >>> 0) + j >>> 0);
bit2 = p256GetBit(scalar, (159 - i$3 >>> 0) + j >>> 0);
bit3 = p256GetBit(scalar, (223 - i$3 >>> 0) + j >>> 0);
index = (((((bit0 | ((bit1 << 1 >>> 0))) >>> 0) | ((bit2 << 2 >>> 0))) >>> 0) | ((bit3 << 3 >>> 0))) >>> 0;
p256SelectAffinePoint(px, py, $subslice(new sliceType$1(p256Precomputed), tableOffset), index);
tableOffset = tableOffset + (270) >>> 0;
p256PointAddMixed(tx, ty, tz, xOut, yOut, zOut, px, py);
p256CopyConditional(xOut, px, nIsInfinityMask);
p256CopyConditional(yOut, py, nIsInfinityMask);
p256CopyConditional(zOut, p256One, nIsInfinityMask);
pIsNoninfiniteMask = nonZeroToAllOnes(index);
mask$1 = (pIsNoninfiniteMask & (~nIsInfinityMask >>> 0)) >>> 0;
p256CopyConditional(xOut, tx, mask$1);
p256CopyConditional(yOut, ty, mask$1);
p256CopyConditional(zOut, tz, mask$1);
nIsInfinityMask = (nIsInfinityMask & ~(pIsNoninfiniteMask)) >>> 0;
j = j + (32) >>> 0;
}
i$3 = i$3 + (1) >>> 0;
}
};
p256PointToAffine = function(xOut, yOut, x, y, z) {
var $ptr, _tmp, _tmp$1, x, xOut, y, yOut, z, zInv, zInvSq;
_tmp = arrayType$4.zero();
_tmp$1 = arrayType$4.zero();
zInv = $clone(_tmp, arrayType$4);
zInvSq = $clone(_tmp$1, arrayType$4);
p256Invert(zInv, z);
p256Square(zInvSq, zInv);
p256Mul(xOut, x, zInvSq);
p256Mul(zInv, zInv, zInvSq);
p256Mul(yOut, y, zInv);
};
p256ToAffine = function(x, y, z) {
var $ptr, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, x, xOut, xx, y, yOut, yy, z, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
xx = [xx];
yy = [yy];
xOut = ptrType$1.nil;
yOut = ptrType$1.nil;
_tmp = arrayType$4.zero();
_tmp$1 = arrayType$4.zero();
xx[0] = $clone(_tmp, arrayType$4);
yy[0] = $clone(_tmp$1, arrayType$4);
p256PointToAffine(xx[0], yy[0], x, y, z);
_r = p256ToBig(xx[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tmp$2 = _r;
_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; }
_tmp$3 = _r$1;
xOut = _tmp$2;
yOut = _tmp$3;
$s = -1; return [xOut, yOut];
/* */ } return; } if ($f === undefined) { $f = { $blk: p256ToAffine }; } $f.$ptr = $ptr; $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;
};
p256ScalarMult = function(xOut, yOut, zOut, x, y, scalar) {
var $ptr, _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;
_tmp = arrayType$4.zero();
_tmp$1 = arrayType$4.zero();
_tmp$2 = arrayType$4.zero();
_tmp$3 = arrayType$4.zero();
_tmp$4 = arrayType$4.zero();
_tmp$5 = arrayType$4.zero();
px = $clone(_tmp, arrayType$4);
py = $clone(_tmp$1, arrayType$4);
pz = $clone(_tmp$2, arrayType$4);
tx = $clone(_tmp$3, arrayType$4);
ty = $clone(_tmp$4, arrayType$4);
tz = $clone(_tmp$5, arrayType$4);
precomp = arrayType$8.zero();
_tmp$6 = 0;
_tmp$7 = 0;
_tmp$8 = 0;
_tmp$9 = 0;
nIsInfinityMask = _tmp$6;
index = _tmp$7;
pIsNoninfiniteMask = _tmp$8;
mask$1 = _tmp$9;
arrayType$4.copy(precomp[1][0], x);
arrayType$4.copy(precomp[1][1], y);
arrayType$4.copy(precomp[1][2], p256One);
i = 2;
while (true) {
if (!(i < 16)) { break; }
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]);
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);
i = i + (2) >> 0;
}
_ref = xOut;
_i = 0;
while (true) {
if (!(_i < 9)) { break; }
i$1 = _i;
xOut.nilCheck, ((i$1 < 0 || i$1 >= xOut.length) ? ($throwRuntimeError("index out of range"), undefined) : xOut[i$1] = 0);
_i++;
}
_ref$1 = yOut;
_i$1 = 0;
while (true) {
if (!(_i$1 < 9)) { break; }
i$2 = _i$1;
yOut.nilCheck, ((i$2 < 0 || i$2 >= yOut.length) ? ($throwRuntimeError("index out of range"), undefined) : yOut[i$2] = 0);
_i$1++;
}
_ref$2 = zOut;
_i$2 = 0;
while (true) {
if (!(_i$2 < 9)) { break; }
i$3 = _i$2;
zOut.nilCheck, ((i$3 < 0 || i$3 >= zOut.length) ? ($throwRuntimeError("index out of range"), undefined) : zOut[i$3] = 0);
_i$2++;
}
nIsInfinityMask = 4294967295;
i$4 = 0;
while (true) {
if (!(i$4 < 64)) { break; }
if (!((i$4 === 0))) {
p256PointDouble(xOut, yOut, zOut, xOut, yOut, zOut);
p256PointDouble(xOut, yOut, zOut, xOut, yOut, zOut);
p256PointDouble(xOut, yOut, zOut, xOut, yOut, zOut);
p256PointDouble(xOut, yOut, zOut, xOut, yOut, zOut);
}
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));
if (((i$4 & 1)) === 1) {
index = (index & (15)) >>> 0;
} else {
index = (y$1 = (4), y$1 < 32 ? (index >>> y$1) : 0) >>> 0;
}
p256SelectJacobianPoint(px, py, pz, precomp, index);
p256PointAdd(tx, ty, tz, xOut, yOut, zOut, px, py, pz);
p256CopyConditional(xOut, px, nIsInfinityMask);
p256CopyConditional(yOut, py, nIsInfinityMask);
p256CopyConditional(zOut, pz, nIsInfinityMask);
pIsNoninfiniteMask = nonZeroToAllOnes(index);
mask$1 = (pIsNoninfiniteMask & (~nIsInfinityMask >>> 0)) >>> 0;
p256CopyConditional(xOut, tx, mask$1);
p256CopyConditional(yOut, ty, mask$1);
p256CopyConditional(zOut, tz, mask$1);
nIsInfinityMask = (nIsInfinityMask & ~(pIsNoninfiniteMask)) >>> 0;
i$4 = i$4 + (1) >> 0;
}
};
p256FromBig = function(out, in$1) {
var $ptr, _r, bits, bits$1, i, in$1, out, tmp, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
tmp = new big.Int.ptr(false, big.nat.nil).Lsh(in$1, 257);
_r = tmp.Mod(tmp, p256Params.P); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
i = 0;
while (true) {
if (!(i < 9)) { break; }
bits = tmp.Bits();
if (bits.$length > 0) {
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));
} else {
out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = 0);
}
tmp.Rsh(tmp, 29);
i = i + (1) >> 0;
if (i === 9) {
break;
}
bits$1 = tmp.Bits();
if (bits$1.$length > 0) {
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));
} else {
out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = 0);
}
tmp.Rsh(tmp, 28);
i = i + (1) >> 0;
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: p256FromBig }; } $f.$ptr = $ptr; $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;
};
p256ToBig = function(in$1) {
var $ptr, _r, _tmp, _tmp$1, i, in$1, result, tmp, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_tmp = new big.Int.ptr(false, big.nat.nil);
_tmp$1 = new big.Int.ptr(false, big.nat.nil);
result = _tmp;
tmp = _tmp$1;
result.SetInt64((new $Int64(0, (in$1.nilCheck, in$1[8]))));
i = 7;
while (true) {
if (!(i >= 0)) { break; }
if (((i & 1)) === 0) {
result.Lsh(result, 29);
} else {
result.Lsh(result, 28);
}
tmp.SetInt64((new $Int64(0, (in$1.nilCheck, ((i < 0 || i >= in$1.length) ? ($throwRuntimeError("index out of range"), undefined) : in$1[i])))));
result.Add(result, tmp);
i = i - (1) >> 0;
}
result.Mul(result, p256RInverse);
_r = result.Mod(result, p256Params.P); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
$s = -1; return result;
/* */ } return; } if ($f === undefined) { $f = { $blk: p256ToBig }; } $f.$ptr = $ptr; $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;
};
initP256Arch = function() {
var $ptr;
p256Curve.copy(p256, new p256Curve.ptr(p256Params));
};
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)}];
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)}];
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)}];
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)}]);
CurveParams.init("", [{prop: "P", name: "P", exported: true, typ: ptrType$1, tag: ""}, {prop: "N", name: "N", exported: true, typ: ptrType$1, tag: ""}, {prop: "B", name: "B", exported: true, typ: ptrType$1, tag: ""}, {prop: "Gx", name: "Gx", exported: true, typ: ptrType$1, tag: ""}, {prop: "Gy", name: "Gy", exported: true, typ: ptrType$1, tag: ""}, {prop: "BitSize", name: "BitSize", exported: true, typ: $Int, tag: ""}, {prop: "Name", name: "Name", exported: true, typ: $String, tag: ""}]);
p224Curve.init("crypto/elliptic", [{prop: "CurveParams", name: "", exported: true, typ: ptrType, tag: ""}, {prop: "gx", name: "gx", exported: false, typ: p224FieldElement, tag: ""}, {prop: "gy", name: "gy", exported: false, typ: p224FieldElement, tag: ""}, {prop: "b", name: "b", exported: false, typ: p224FieldElement, tag: ""}]);
p224FieldElement.init($Uint32, 8);
p256Curve.init("", [{prop: "CurveParams", name: "", exported: true, typ: ptrType, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = io.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = big.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sync.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
initonce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
p384 = ptrType.nil;
p521 = ptrType.nil;
p224 = new p224Curve.ptr(ptrType.nil, arrayType.zero(), arrayType.zero(), arrayType.zero());
p256Params = ptrType.nil;
p256RInverse = ptrType$1.nil;
p256 = new p256Curve.ptr(ptrType.nil);
mask = new sliceType([255, 1, 3, 7, 15, 31, 63, 127]);
p224P = $toNativeArray($kindUint32, [1, 0, 0, 268431360, 268435455, 268435455, 268435455, 268435455]);
p224ZeroModP31 = new sliceType$1([2147483656, 2147483640, 2147483640, 2147450872, 2147483640, 2147483640, 2147483640, 2147483640]);
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)]);
p256One = $toNativeArray($kindUint32, [2, 0, 0, 268433408, 536870911, 268435455, 532676607, 33554431, 0]);
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]);
p256Zero31 = $toNativeArray($kindUint32, [2147483640, 1073741820, 2147483644, 1073750012, 2147483644, 1073741820, 2164260860, 939524092, 2147483644]);
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["crypto/sha512"] = (function() {
var $pkg = {}, $init, crypto, hash, digest, sliceType, arrayType, arrayType$1, sliceType$1, arrayType$2, arrayType$6, ptrType, _K, block, init, New, New512_224, New512_256, New384, Sum512, blockGeneric;
crypto = $packages["crypto"];
hash = $packages["hash"];
digest = $pkg.digest = $newType(0, $kindStruct, "sha512.digest", true, "crypto/sha512", false, function(h_, x_, nx_, len_, function$4_) {
this.$val = this;
if (arguments.length === 0) {
this.h = arrayType.zero();
this.x = arrayType$1.zero();
this.nx = 0;
this.len = new $Uint64(0, 0);
this.function$4 = 0;
return;
}
this.h = h_;
this.x = x_;
this.nx = nx_;
this.len = len_;
this.function$4 = function$4_;
});
sliceType = $sliceType($Uint64);
arrayType = $arrayType($Uint64, 8);
arrayType$1 = $arrayType($Uint8, 128);
sliceType$1 = $sliceType($Uint8);
arrayType$2 = $arrayType($Uint8, 64);
arrayType$6 = $arrayType($Uint64, 80);
ptrType = $ptrType(digest);
init = function() {
var $ptr;
crypto.RegisterHash(6, New384);
crypto.RegisterHash(7, New);
crypto.RegisterHash(14, New512_224);
crypto.RegisterHash(15, New512_256);
};
digest.ptr.prototype.Reset = function() {
var $ptr, _1, d;
d = this;
_1 = d.function$4;
if (_1 === (6)) {
d.h[0] = new $Uint64(3418070365, 3238371032);
d.h[1] = new $Uint64(1654270250, 914150663);
d.h[2] = new $Uint64(2438529370, 812702999);
d.h[3] = new $Uint64(355462360, 4144912697);
d.h[4] = new $Uint64(1731405415, 4290775857);
d.h[5] = new $Uint64(2394180231, 1750603025);
d.h[6] = new $Uint64(3675008525, 1694076839);
d.h[7] = new $Uint64(1203062813, 3204075428);
} else if (_1 === (14)) {
d.h[0] = new $Uint64(2352822216, 424955298);
d.h[1] = new $Uint64(1944164710, 2312950998);
d.h[2] = new $Uint64(502970286, 855612546);
d.h[3] = new $Uint64(1738396948, 1479516111);
d.h[4] = new $Uint64(258812777, 2077511080);
d.h[5] = new $Uint64(2011393907, 79989058);
d.h[6] = new $Uint64(1067287976, 1780299464);
d.h[7] = new $Uint64(286451373, 2446758561);
} else if (_1 === (15)) {
d.h[0] = new $Uint64(573645204, 4230739756);
d.h[1] = new $Uint64(2673172387, 3360449730);
d.h[2] = new $Uint64(596883563, 1867755857);
d.h[3] = new $Uint64(2520282905, 1497426621);
d.h[4] = new $Uint64(2519219938, 2827943907);
d.h[5] = new $Uint64(3193839141, 1401305490);
d.h[6] = new $Uint64(721525244, 746961066);
d.h[7] = new $Uint64(246885852, 2177182882);
} else {
d.h[0] = new $Uint64(1779033703, 4089235720);
d.h[1] = new $Uint64(3144134277, 2227873595);
d.h[2] = new $Uint64(1013904242, 4271175723);
d.h[3] = new $Uint64(2773480762, 1595750129);
d.h[4] = new $Uint64(1359893119, 2917565137);
d.h[5] = new $Uint64(2600822924, 725511199);
d.h[6] = new $Uint64(528734635, 4215389547);
d.h[7] = new $Uint64(1541459225, 327033209);
}
d.nx = 0;
d.len = new $Uint64(0, 0);
};
digest.prototype.Reset = function() { return this.$val.Reset(); };
New = function() {
var $ptr, d;
d = new digest.ptr(arrayType.zero(), arrayType$1.zero(), 0, new $Uint64(0, 0), 7);
d.Reset();
return d;
};
$pkg.New = New;
New512_224 = function() {
var $ptr, d;
d = new digest.ptr(arrayType.zero(), arrayType$1.zero(), 0, new $Uint64(0, 0), 14);
d.Reset();
return d;
};
$pkg.New512_224 = New512_224;
New512_256 = function() {
var $ptr, d;
d = new digest.ptr(arrayType.zero(), arrayType$1.zero(), 0, new $Uint64(0, 0), 15);
d.Reset();
return d;
};
$pkg.New512_256 = New512_256;
New384 = function() {
var $ptr, d;
d = new digest.ptr(arrayType.zero(), arrayType$1.zero(), 0, new $Uint64(0, 0), 6);
d.Reset();
return d;
};
$pkg.New384 = New384;
digest.ptr.prototype.Size = function() {
var $ptr, _1, d;
d = this;
_1 = d.function$4;
if (_1 === (14)) {
return 28;
} else if (_1 === (15)) {
return 32;
} else if (_1 === (6)) {
return 48;
} else {
return 64;
}
};
digest.prototype.Size = function() { return this.$val.Size(); };
digest.ptr.prototype.BlockSize = function() {
var $ptr, d;
d = this;
return 128;
};
digest.prototype.BlockSize = function() { return this.$val.BlockSize(); };
digest.ptr.prototype.Write = function(p) {
var $ptr, d, err, n, n$1, nn, p, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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:
nn = 0;
err = $ifaceNil;
d = this;
nn = p.$length;
d.len = (x = d.len, x$1 = (new $Uint64(0, nn)), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low));
/* */ if (d.nx > 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (d.nx > 0) { */ case 1:
n = $copySlice($subslice(new sliceType$1(d.x), d.nx), p);
d.nx = d.nx + (n) >> 0;
/* */ if (d.nx === 128) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (d.nx === 128) { */ case 3:
$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; }
d.nx = 0;
/* } */ case 4:
p = $subslice(p, n);
/* } */ case 2:
/* */ if (p.$length >= 128) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (p.$length >= 128) { */ case 6:
n$1 = (p.$length & ~127) >> 0;
$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; }
p = $subslice(p, n$1);
/* } */ case 7:
if (p.$length > 0) {
d.nx = $copySlice(new sliceType$1(d.x), p);
}
$s = -1; return [nn, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.Write }; } $f.$ptr = $ptr; $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;
};
digest.prototype.Write = function(p) { return this.$val.Write(p); };
digest.ptr.prototype.Sum = function(in$1) {
var $ptr, _1, _r, d, d0, hash$1, in$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
d0 = this;
d = new digest.ptr(arrayType.zero(), arrayType$1.zero(), 0, new $Uint64(0, 0), 0);
digest.copy(d, d0);
_r = d.checkSum(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
hash$1 = $clone(_r, arrayType$2);
_1 = d.function$4;
if (_1 === (6)) {
$s = -1; return $appendSlice(in$1, $subslice(new sliceType$1(hash$1), 0, 48));
} else if (_1 === (14)) {
$s = -1; return $appendSlice(in$1, $subslice(new sliceType$1(hash$1), 0, 28));
} else if (_1 === (15)) {
$s = -1; return $appendSlice(in$1, $subslice(new sliceType$1(hash$1), 0, 32));
} else {
$s = -1; return $appendSlice(in$1, new sliceType$1(hash$1));
}
$s = -1; return sliceType$1.nil;
/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.Sum }; } $f.$ptr = $ptr; $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;
};
digest.prototype.Sum = function(in$1) { return this.$val.Sum(in$1); };
digest.ptr.prototype.checkSum = function() {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
d = this;
len = d.len;
tmp = arrayType$1.zero();
tmp[0] = 128;
/* */ if ((x = $div64(len, new $Uint64(0, 128), true), (x.$high < 0 || (x.$high === 0 && x.$low < 112)))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if ((x = $div64(len, new $Uint64(0, 128), true), (x.$high < 0 || (x.$high === 0 && x.$low < 112)))) { */ case 1:
_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; }
_r;
$s = 3; continue;
/* } else { */ case 2:
_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; }
_r$1;
/* } */ case 3:
len = $shiftLeft64(len, (3));
i = 0;
while (true) {
if (!(i < 16)) { break; }
((i < 0 || i >= tmp.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp[i] = (($shiftRightUint64(len, ((120 - (8 * i >>> 0) >>> 0))).$low << 24 >>> 24)));
i = i + (1) >>> 0;
}
_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; }
_r$2;
if (!((d.nx === 0))) {
$panic(new $String("d.nx != 0"));
}
h = new sliceType(d.h);
if (d.function$4 === 6) {
h = $subslice(new sliceType(d.h), 0, 6);
}
digest$1 = arrayType$2.zero();
_ref = h;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i$1 = _i;
s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
(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))));
(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))));
(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))));
(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))));
(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))));
(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))));
(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))));
(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))));
_i++;
}
$s = -1; return digest$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.checkSum }; } $f.$ptr = $ptr; $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;
};
digest.prototype.checkSum = function() { return this.$val.checkSum(); };
Sum512 = function(data) {
var $ptr, _r, _r$1, d, data, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
d = new digest.ptr(arrayType.zero(), arrayType$1.zero(), 0, new $Uint64(0, 0), 7);
d.Reset();
_r = d.Write(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
_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; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: Sum512 }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.d = d; $f.data = data; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Sum512 = Sum512;
blockGeneric = function(dig, p) {
var $ptr, _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;
w = arrayType$6.zero();
_tmp = dig.h[0];
_tmp$1 = dig.h[1];
_tmp$2 = dig.h[2];
_tmp$3 = dig.h[3];
_tmp$4 = dig.h[4];
_tmp$5 = dig.h[5];
_tmp$6 = dig.h[6];
_tmp$7 = dig.h[7];
h0 = _tmp;
h1 = _tmp$1;
h2 = _tmp$2;
h3 = _tmp$3;
h4 = _tmp$4;
h5 = _tmp$5;
h6 = _tmp$6;
h7 = _tmp$7;
while (true) {
if (!(p.$length >= 128)) { break; }
i = 0;
while (true) {
if (!(i < 16)) { break; }
j = $imul(i, 8);
((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)));
i = i + (1) >> 0;
}
i$1 = 16;
while (true) {
if (!(i$1 < 80)) { break; }
v1 = (x$21 = i$1 - 2 >> 0, ((x$21 < 0 || x$21 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$21]));
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));
v2 = (x$30 = i$1 - 15 >> 0, ((x$30 < 0 || x$30 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$30]));
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));
((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)));
i$1 = i$1 + (1) >> 0;
}
_tmp$8 = h0;
_tmp$9 = h1;
_tmp$10 = h2;
_tmp$11 = h3;
_tmp$12 = h4;
_tmp$13 = h5;
_tmp$14 = h6;
_tmp$15 = h7;
a = _tmp$8;
b = _tmp$9;
c = _tmp$10;
d = _tmp$11;
e = _tmp$12;
f = _tmp$13;
g = _tmp$14;
h = _tmp$15;
i$2 = 0;
while (true) {
if (!(i$2 < 80)) { break; }
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));
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));
h = g;
g = f;
f = e;
e = new $Uint64(d.$high + t1$1.$high, d.$low + t1$1.$low);
d = c;
c = b;
b = a;
a = new $Uint64(t1$1.$high + t2$1.$high, t1$1.$low + t2$1.$low);
i$2 = i$2 + (1) >> 0;
}
h0 = (x$81 = a, new $Uint64(h0.$high + x$81.$high, h0.$low + x$81.$low));
h1 = (x$82 = b, new $Uint64(h1.$high + x$82.$high, h1.$low + x$82.$low));
h2 = (x$83 = c, new $Uint64(h2.$high + x$83.$high, h2.$low + x$83.$low));
h3 = (x$84 = d, new $Uint64(h3.$high + x$84.$high, h3.$low + x$84.$low));
h4 = (x$85 = e, new $Uint64(h4.$high + x$85.$high, h4.$low + x$85.$low));
h5 = (x$86 = f, new $Uint64(h5.$high + x$86.$high, h5.$low + x$86.$low));
h6 = (x$87 = g, new $Uint64(h6.$high + x$87.$high, h6.$low + x$87.$low));
h7 = (x$88 = h, new $Uint64(h7.$high + x$88.$high, h7.$low + x$88.$low));
p = $subslice(p, 128);
}
_tmp$16 = h0;
_tmp$17 = h1;
_tmp$18 = h2;
_tmp$19 = h3;
_tmp$20 = h4;
_tmp$21 = h5;
_tmp$22 = h6;
_tmp$23 = h7;
dig.h[0] = _tmp$16;
dig.h[1] = _tmp$17;
dig.h[2] = _tmp$18;
dig.h[3] = _tmp$19;
dig.h[4] = _tmp$20;
dig.h[5] = _tmp$21;
dig.h[6] = _tmp$22;
dig.h[7] = _tmp$23;
};
ptrType.methods = [{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/sha512", typ: $funcType([], [arrayType$2], false)}];
digest.init("crypto/sha512", [{prop: "h", name: "h", exported: false, typ: arrayType, tag: ""}, {prop: "x", name: "x", exported: false, typ: arrayType$1, tag: ""}, {prop: "nx", name: "nx", exported: false, typ: $Int, tag: ""}, {prop: "len", name: "len", exported: false, typ: $Uint64, tag: ""}, {prop: "function$4", name: "function", exported: false, typ: crypto.Hash, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = crypto.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = hash.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_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)]);
block = blockGeneric;
init();
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["encoding/asn1"] = (function() {
var $pkg = {}, $init, errors, fmt, 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, parsePrintableString, isPrintable, parseIA5String, parseT61String, parseUTF8String, parseTagAndLength, parseSequenceOf, invalidLength, parseField, canHaveDefaultValue, setDefaultValue, Unmarshal, UnmarshalWithParams, parseFieldParameters, getUniversalType, base128IntLength, appendBase128Int, makeBigInt, appendLength, lengthLength, appendTagAndLength, makeObjectIdentifier, makePrintableString, makeIA5String, makeUTF8String, appendTwoDigits, appendFourDigits, outsideUTCRange, makeUTCTime, makeGeneralizedTime, appendUTCTime, appendGeneralizedTime, appendTimeCommon, stripTagAndLength, makeBody, makeField, Marshal;
errors = $packages["errors"];
fmt = $packages["fmt"];
big = $packages["math/big"];
reflect = $packages["reflect"];
strconv = $packages["strconv"];
strings = $packages["strings"];
time = $packages["time"];
utf8 = $packages["unicode/utf8"];
StructuralError = $pkg.StructuralError = $newType(0, $kindStruct, "asn1.StructuralError", true, "encoding/asn1", true, function(Msg_) {
this.$val = this;
if (arguments.length === 0) {
this.Msg = "";
return;
}
this.Msg = Msg_;
});
SyntaxError = $pkg.SyntaxError = $newType(0, $kindStruct, "asn1.SyntaxError", true, "encoding/asn1", true, function(Msg_) {
this.$val = this;
if (arguments.length === 0) {
this.Msg = "";
return;
}
this.Msg = Msg_;
});
BitString = $pkg.BitString = $newType(0, $kindStruct, "asn1.BitString", true, "encoding/asn1", true, function(Bytes_, BitLength_) {
this.$val = this;
if (arguments.length === 0) {
this.Bytes = sliceType.nil;
this.BitLength = 0;
return;
}
this.Bytes = Bytes_;
this.BitLength = BitLength_;
});
ObjectIdentifier = $pkg.ObjectIdentifier = $newType(12, $kindSlice, "asn1.ObjectIdentifier", true, "encoding/asn1", true, null);
Enumerated = $pkg.Enumerated = $newType(4, $kindInt, "asn1.Enumerated", true, "encoding/asn1", true, null);
Flag = $pkg.Flag = $newType(1, $kindBool, "asn1.Flag", true, "encoding/asn1", true, null);
RawValue = $pkg.RawValue = $newType(0, $kindStruct, "asn1.RawValue", true, "encoding/asn1", true, function(Class_, Tag_, IsCompound_, Bytes_, FullBytes_) {
this.$val = this;
if (arguments.length === 0) {
this.Class = 0;
this.Tag = 0;
this.IsCompound = false;
this.Bytes = sliceType.nil;
this.FullBytes = sliceType.nil;
return;
}
this.Class = Class_;
this.Tag = Tag_;
this.IsCompound = IsCompound_;
this.Bytes = Bytes_;
this.FullBytes = FullBytes_;
});
RawContent = $pkg.RawContent = $newType(12, $kindSlice, "asn1.RawContent", true, "encoding/asn1", true, null);
tagAndLength = $pkg.tagAndLength = $newType(0, $kindStruct, "asn1.tagAndLength", true, "encoding/asn1", false, function(class$0_, tag_, length_, isCompound_) {
this.$val = this;
if (arguments.length === 0) {
this.class$0 = 0;
this.tag = 0;
this.length = 0;
this.isCompound = false;
return;
}
this.class$0 = class$0_;
this.tag = tag_;
this.length = length_;
this.isCompound = isCompound_;
});
fieldParameters = $pkg.fieldParameters = $newType(0, $kindStruct, "asn1.fieldParameters", true, "encoding/asn1", false, function(optional_, explicit_, application_, defaultValue_, tag_, stringType_, timeType_, set_, omitEmpty_) {
this.$val = this;
if (arguments.length === 0) {
this.optional = false;
this.explicit = false;
this.application = false;
this.defaultValue = ptrType$3.nil;
this.tag = ptrType$4.nil;
this.stringType = 0;
this.timeType = 0;
this.set = false;
this.omitEmpty = false;
return;
}
this.optional = optional_;
this.explicit = explicit_;
this.application = application_;
this.defaultValue = defaultValue_;
this.tag = tag_;
this.stringType = stringType_;
this.timeType = timeType_;
this.set = set_;
this.omitEmpty = omitEmpty_;
});
encoder = $pkg.encoder = $newType(8, $kindInterface, "asn1.encoder", true, "encoding/asn1", false, null);
byteEncoder = $pkg.byteEncoder = $newType(1, $kindUint8, "asn1.byteEncoder", true, "encoding/asn1", false, null);
bytesEncoder = $pkg.bytesEncoder = $newType(12, $kindSlice, "asn1.bytesEncoder", true, "encoding/asn1", false, null);
stringEncoder = $pkg.stringEncoder = $newType(8, $kindString, "asn1.stringEncoder", true, "encoding/asn1", false, null);
multiEncoder = $pkg.multiEncoder = $newType(12, $kindSlice, "asn1.multiEncoder", true, "encoding/asn1", false, null);
taggedEncoder = $pkg.taggedEncoder = $newType(0, $kindStruct, "asn1.taggedEncoder", true, "encoding/asn1", false, function(scratch_, tag_, body_) {
this.$val = this;
if (arguments.length === 0) {
this.scratch = arrayType$1.zero();
this.tag = $ifaceNil;
this.body = $ifaceNil;
return;
}
this.scratch = scratch_;
this.tag = tag_;
this.body = body_;
});
int64Encoder = $pkg.int64Encoder = $newType(8, $kindInt64, "asn1.int64Encoder", true, "encoding/asn1", false, null);
bitStringEncoder = $pkg.bitStringEncoder = $newType(0, $kindStruct, "asn1.bitStringEncoder", true, "encoding/asn1", false, function(Bytes_, BitLength_) {
this.$val = this;
if (arguments.length === 0) {
this.Bytes = sliceType.nil;
this.BitLength = 0;
return;
}
this.Bytes = Bytes_;
this.BitLength = BitLength_;
});
oidEncoder = $pkg.oidEncoder = $newType(12, $kindSlice, "asn1.oidEncoder", true, "encoding/asn1", false, null);
sliceType = $sliceType($Uint8);
ptrType = $ptrType(time.Location);
ptrType$1 = $ptrType(big.Int);
sliceType$1 = $sliceType($Int);
sliceType$2 = $sliceType($emptyInterface);
ptrType$2 = $ptrType(reflect.rtype);
ptrType$3 = $ptrType($Int64);
ptrType$4 = $ptrType($Int);
sliceType$3 = $sliceType(encoder);
arrayType = $arrayType($Uint8, 4);
arrayType$1 = $arrayType($Uint8, 8);
ptrType$5 = $ptrType(taggedEncoder);
StructuralError.ptr.prototype.Error = function() {
var $ptr, e;
e = this;
return "asn1: structure error: " + e.Msg;
};
StructuralError.prototype.Error = function() { return this.$val.Error(); };
SyntaxError.ptr.prototype.Error = function() {
var $ptr, e;
e = this;
return "asn1: syntax error: " + e.Msg;
};
SyntaxError.prototype.Error = function() { return this.$val.Error(); };
parseBool = function(bytes) {
var $ptr, _1, bytes, err, ret, x$3, x$4;
ret = false;
err = $ifaceNil;
if (!((bytes.$length === 1))) {
err = (x$3 = new SyntaxError.ptr("invalid boolean"), new x$3.constructor.elem(x$3));
return [ret, err];
}
_1 = (0 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 0]);
if (_1 === (0)) {
ret = false;
} else if (_1 === (255)) {
ret = true;
} else {
err = (x$4 = new SyntaxError.ptr("invalid boolean"), new x$4.constructor.elem(x$4));
}
return [ret, err];
};
checkInteger = function(bytes) {
var $ptr, bytes, x$3, x$4;
if (bytes.$length === 0) {
return (x$3 = new StructuralError.ptr("empty integer"), new x$3.constructor.elem(x$3));
}
if (bytes.$length === 1) {
return $ifaceNil;
}
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))) {
return (x$4 = new StructuralError.ptr("integer not minimally-encoded"), new x$4.constructor.elem(x$4));
}
return $ifaceNil;
};
parseInt64 = function(bytes) {
var $ptr, bytes, bytesRead, err, ret, x$3, x$4;
ret = new $Int64(0, 0);
err = $ifaceNil;
err = checkInteger(bytes);
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [ret, err];
}
if (bytes.$length > 8) {
err = (x$3 = new StructuralError.ptr("integer too large"), new x$3.constructor.elem(x$3));
return [ret, err];
}
bytesRead = 0;
while (true) {
if (!(bytesRead < bytes.$length)) { break; }
ret = $shiftLeft64(ret, (8));
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));
bytesRead = bytesRead + (1) >> 0;
}
ret = $shiftLeft64(ret, ((64 - (((bytes.$length << 24 >>> 24)) * 8 << 24 >>> 24) << 24 >>> 24)));
ret = $shiftRightInt64(ret, ((64 - (((bytes.$length << 24 >>> 24)) * 8 << 24 >>> 24) << 24 >>> 24)));
return [ret, err];
};
parseInt32 = function(bytes) {
var $ptr, _tuple, bytes, err, err$1, ret64, x$3, x$4;
err = checkInteger(bytes);
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [0, err];
}
_tuple = parseInt64(bytes);
ret64 = _tuple[0];
err$1 = _tuple[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
return [0, err$1];
}
if (!((x$3 = (new $Int64(0, (((ret64.$low + ((ret64.$high >> 31) * 4294967296)) >> 0)))), (ret64.$high === x$3.$high && ret64.$low === x$3.$low)))) {
return [0, (x$4 = new StructuralError.ptr("integer too large"), new x$4.constructor.elem(x$4))];
}
return [(((ret64.$low + ((ret64.$high >> 31) * 4294967296)) >> 0)), $ifaceNil];
};
parseBigInt = function(bytes) {
var $ptr, _i, _ref, bytes, err, i, notBytes, ret;
err = checkInteger(bytes);
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [ptrType$1.nil, err];
}
ret = new big.Int.ptr(false, big.nat.nil);
if (bytes.$length > 0 && ((((0 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 0]) & 128) >>> 0) === 128)) {
notBytes = $makeSlice(sliceType, bytes.$length);
_ref = notBytes;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
((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));
_i++;
}
ret.SetBytes(notBytes);
ret.Add(ret, bigOne);
ret.Neg(ret);
return [ret, $ifaceNil];
}
ret.SetBytes(bytes);
return [ret, $ifaceNil];
};
BitString.ptr.prototype.At = function(i) {
var $ptr, _q, _r, b, i, x$3, x$4, y, y$1;
b = this;
if (i < 0 || i >= b.BitLength) {
return 0;
}
x$3 = (_q = i / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
y = 7 - (((_r = i % 8, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >>> 0)) >>> 0;
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;
};
BitString.prototype.At = function(i) { return this.$val.At(i); };
BitString.ptr.prototype.RightAlign = function() {
var $ptr, _r, a, b, i, shift, x$3, x$4, x$5, x$6, y, y$1, y$2;
b = this;
shift = (((8 - ((_r = b.BitLength % 8, _r === _r ? _r : $throwRuntimeError("integer divide by zero"))) >> 0) >>> 0));
if ((shift === 8) || (b.Bytes.$length === 0)) {
return b.Bytes;
}
a = $makeSlice(sliceType, b.Bytes.$length);
(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));
i = 1;
while (true) {
if (!(i < b.Bytes.$length)) { break; }
((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));
((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));
i = i + (1) >> 0;
}
return a;
};
BitString.prototype.RightAlign = function() { return this.$val.RightAlign(); };
parseBitString = function(bytes) {
var $ptr, bytes, err, paddingBits, ret, x$3, x$4, x$5, y;
ret = new BitString.ptr(sliceType.nil, 0);
err = $ifaceNil;
if (bytes.$length === 0) {
err = (x$3 = new SyntaxError.ptr("zero length BIT STRING"), new x$3.constructor.elem(x$3));
return [ret, err];
}
paddingBits = (((0 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 0]) >> 0));
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))) {
err = (x$5 = new SyntaxError.ptr("invalid padding bits in BIT STRING"), new x$5.constructor.elem(x$5));
return [ret, err];
}
ret.BitLength = ($imul(((bytes.$length - 1 >> 0)), 8)) - paddingBits >> 0;
ret.Bytes = $subslice(bytes, 1);
return [ret, err];
};
ObjectIdentifier.prototype.Equal = function(other) {
var $ptr, i, oi, other;
oi = this;
if (!((oi.$length === other.$length))) {
return false;
}
i = 0;
while (true) {
if (!(i < oi.$length)) { break; }
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])))) {
return false;
}
i = i + (1) >> 0;
}
return true;
};
$ptrType(ObjectIdentifier).prototype.Equal = function(other) { return this.$get().Equal(other); };
ObjectIdentifier.prototype.String = function() {
var $ptr, _i, _ref, i, oi, s, v;
oi = this;
s = "";
_ref = oi;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (i > 0) {
s = s + (".");
}
s = s + (strconv.Itoa(v));
_i++;
}
return s;
};
$ptrType(ObjectIdentifier).prototype.String = function() { return this.$get().String(); };
parseObjectIdentifier = function(bytes) {
var $ptr, _q, _r, _tuple, _tuple$1, bytes, err, i, offset, s, v, x$3;
s = sliceType$1.nil;
err = $ifaceNil;
if (bytes.$length === 0) {
err = (x$3 = new SyntaxError.ptr("zero length OBJECT IDENTIFIER"), new x$3.constructor.elem(x$3));
return [s, err];
}
s = $makeSlice(sliceType$1, (bytes.$length + 1 >> 0));
_tuple = parseBase128Int(bytes, 0);
v = _tuple[0];
offset = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [s, err];
}
if (v < 80) {
(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")));
(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")));
} else {
(0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0] = 2);
(1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1] = (v - 80 >> 0));
}
i = 2;
while (true) {
if (!(offset < bytes.$length)) { break; }
_tuple$1 = parseBase128Int(bytes, offset);
v = _tuple$1[0];
offset = _tuple$1[1];
err = _tuple$1[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [s, err];
}
((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = v);
i = i + (1) >> 0;
}
s = $subslice(s, 0, i);
return [s, err];
};
parseBase128Int = function(bytes, initOffset) {
var $ptr, b, bytes, err, initOffset, offset, ret, shifted, x$3, x$4, y;
ret = 0;
offset = 0;
err = $ifaceNil;
offset = initOffset;
shifted = 0;
while (true) {
if (!(offset < bytes.$length)) { break; }
if (shifted === 4) {
err = (x$3 = new StructuralError.ptr("base 128 integer too large"), new x$3.constructor.elem(x$3));
return [ret, offset, err];
}
ret = (y = (7), y < 32 ? (ret << y) : 0) >> 0;
b = ((offset < 0 || offset >= bytes.$length) ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + offset]);
ret = ret | (((((b & 127) >>> 0) >> 0)));
offset = offset + (1) >> 0;
if (((b & 128) >>> 0) === 0) {
return [ret, offset, err];
}
shifted = shifted + (1) >> 0;
}
err = (x$4 = new SyntaxError.ptr("truncated base 128 integer"), new x$4.constructor.elem(x$4));
return [ret, offset, err];
};
parseUTCTime = function(bytes) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, bytes, err, formatStr, ret, s, serialized, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
ret = new time.Time.ptr(new $Int64(0, 0), 0, ptrType.nil);
err = $ifaceNil;
s = ($bytesToString(bytes));
formatStr = "0601021504Z0700";
_r = time.Parse(formatStr, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
time.Time.copy(ret, _tuple[0]);
err = _tuple[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
formatStr = "060102150405Z0700";
_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; }
_tuple$1 = _r$1;
time.Time.copy(ret, _tuple$1[0]);
err = _tuple$1[1];
/* } */ case 3:
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ret, err];
}
_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; }
serialized = _r$2;
/* */ if (!(serialized === s)) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!(serialized === s)) { */ case 6:
_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; }
err = _r$3;
$s = -1; return [ret, err];
/* } */ case 7:
_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; }
/* */ if (_r$4 >= 2050) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (_r$4 >= 2050) { */ case 9:
_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; }
time.Time.copy(ret, _r$5);
/* } */ case 10:
$s = -1; return [ret, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: parseUTCTime }; } $f.$ptr = $ptr; $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;
};
parseGeneralizedTime = function(bytes) {
var $ptr, _r, _r$1, _r$2, _tuple, bytes, err, ret, s, serialized, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
ret = new time.Time.ptr(new $Int64(0, 0), 0, ptrType.nil);
err = $ifaceNil;
s = ($bytesToString(bytes));
_r = time.Parse("20060102150405Z0700", s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
time.Time.copy(ret, _tuple[0]);
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ret, err];
}
_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; }
serialized = _r$1;
/* */ if (!(serialized === s)) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!(serialized === s)) { */ case 3:
_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; }
err = _r$2;
/* } */ case 4:
$s = -1; return [ret, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: parseGeneralizedTime }; } $f.$ptr = $ptr; $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;
};
parsePrintableString = function(bytes) {
var $ptr, _i, _ref, b, bytes, err, ret, x$3;
ret = "";
err = $ifaceNil;
_ref = bytes;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (!isPrintable(b)) {
err = (x$3 = new SyntaxError.ptr("PrintableString contains invalid character"), new x$3.constructor.elem(x$3));
return [ret, err];
}
_i++;
}
ret = ($bytesToString(bytes));
return [ret, err];
};
isPrintable = function(b) {
var $ptr, b;
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) || (b === 42);
};
parseIA5String = function(bytes) {
var $ptr, _i, _ref, b, bytes, err, ret, x$3;
ret = "";
err = $ifaceNil;
_ref = bytes;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (b >= 128) {
err = (x$3 = new SyntaxError.ptr("IA5String contains invalid character"), new x$3.constructor.elem(x$3));
return [ret, err];
}
_i++;
}
ret = ($bytesToString(bytes));
return [ret, err];
};
parseT61String = function(bytes) {
var $ptr, _tmp, _tmp$1, bytes, err, ret;
ret = "";
err = $ifaceNil;
_tmp = ($bytesToString(bytes));
_tmp$1 = $ifaceNil;
ret = _tmp;
err = _tmp$1;
return [ret, err];
};
parseUTF8String = function(bytes) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, bytes, err, ret;
ret = "";
err = $ifaceNil;
if (!utf8.Valid(bytes)) {
_tmp = "";
_tmp$1 = errors.New("asn1: invalid UTF-8 string");
ret = _tmp;
err = _tmp$1;
return [ret, err];
}
_tmp$2 = ($bytesToString(bytes));
_tmp$3 = $ifaceNil;
ret = _tmp$2;
err = _tmp$3;
return [ret, err];
};
parseTagAndLength = function(bytes, initOffset) {
var $ptr, _tuple, b, bytes, err, i, initOffset, numBytes, offset, ret, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y;
ret = new tagAndLength.ptr(0, 0, 0, false);
offset = 0;
err = $ifaceNil;
offset = initOffset;
if (offset >= bytes.$length) {
err = errors.New("asn1: internal error in parseTagAndLength");
return [ret, offset, err];
}
b = ((offset < 0 || offset >= bytes.$length) ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + offset]);
offset = offset + (1) >> 0;
ret.class$0 = (((b >>> 6 << 24 >>> 24) >> 0));
ret.isCompound = ((b & 32) >>> 0) === 32;
ret.tag = ((((b & 31) >>> 0) >> 0));
if (ret.tag === 31) {
_tuple = parseBase128Int(bytes, offset);
ret.tag = _tuple[0];
offset = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [ret, offset, err];
}
if (ret.tag < 31) {
err = (x$3 = new SyntaxError.ptr("non-minimal tag"), new x$3.constructor.elem(x$3));
return [ret, offset, err];
}
}
if (offset >= bytes.$length) {
err = (x$4 = new SyntaxError.ptr("truncated tag or length"), new x$4.constructor.elem(x$4));
return [ret, offset, err];
}
b = ((offset < 0 || offset >= bytes.$length) ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + offset]);
offset = offset + (1) >> 0;
if (((b & 128) >>> 0) === 0) {
ret.length = ((((b & 127) >>> 0) >> 0));
} else {
numBytes = ((((b & 127) >>> 0) >> 0));
if (numBytes === 0) {
err = (x$5 = new SyntaxError.ptr("indefinite length found (not DER)"), new x$5.constructor.elem(x$5));
return [ret, offset, err];
}
ret.length = 0;
i = 0;
while (true) {
if (!(i < numBytes)) { break; }
if (offset >= bytes.$length) {
err = (x$6 = new SyntaxError.ptr("truncated tag or length"), new x$6.constructor.elem(x$6));
return [ret, offset, err];
}
b = ((offset < 0 || offset >= bytes.$length) ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + offset]);
offset = offset + (1) >> 0;
if (ret.length >= 8388608) {
err = (x$7 = new StructuralError.ptr("length too large"), new x$7.constructor.elem(x$7));
return [ret, offset, err];
}
ret.length = (y = (8), y < 32 ? (ret.length << y) : 0) >> 0;
ret.length = ret.length | (((b >> 0)));
if (ret.length === 0) {
err = (x$8 = new StructuralError.ptr("superfluous leading zeros in length"), new x$8.constructor.elem(x$8));
return [ret, offset, err];
}
i = i + (1) >> 0;
}
if (ret.length < 128) {
err = (x$9 = new StructuralError.ptr("non-minimal length"), new x$9.constructor.elem(x$9));
return [ret, offset, err];
}
}
return [ret, offset, err];
};
parseSequenceOf = function(bytes, sliceType$3, elemType) {
var $ptr, _1, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, _tuple$2, bytes, compoundType, elemType, err, expectedTag, i, numElements, offset, offset$1, ok, params, ret, sliceType$3, t, x$3, x$4, x$5, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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:
ret = new reflect.Value.ptr(ptrType$2.nil, 0, 0);
err = $ifaceNil;
_r = getUniversalType(elemType); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
expectedTag = _tuple[0];
compoundType = _tuple[1];
ok = _tuple[2];
if (!ok) {
err = (x$3 = new StructuralError.ptr("unknown Go type for slice"), new x$3.constructor.elem(x$3));
$s = -1; return [ret, err];
}
numElements = 0;
offset = 0;
while (true) {
if (!(offset < bytes.$length)) { break; }
t = new tagAndLength.ptr(0, 0, 0, false);
_tuple$1 = parseTagAndLength(bytes, offset);
tagAndLength.copy(t, _tuple$1[0]);
offset = _tuple$1[1];
err = _tuple$1[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ret, err];
}
_1 = t.tag;
if ((_1 === (22)) || (_1 === (27)) || (_1 === (20)) || (_1 === (12))) {
t.tag = 19;
} else if ((_1 === (24)) || (_1 === (23))) {
t.tag = 23;
}
if (!((t.class$0 === 0)) || !(t.isCompound === compoundType) || !((t.tag === expectedTag))) {
err = (x$4 = new StructuralError.ptr("sequence tag mismatch"), new x$4.constructor.elem(x$4));
$s = -1; return [ret, err];
}
if (invalidLength(offset, t.length, bytes.$length)) {
err = (x$5 = new SyntaxError.ptr("truncated sequence"), new x$5.constructor.elem(x$5));
$s = -1; return [ret, err];
}
offset = offset + (t.length) >> 0;
numElements = numElements + (1) >> 0;
}
_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; }
ret = _r$1;
params = new fieldParameters.ptr(false, false, false, ptrType$3.nil, ptrType$4.nil, 0, 0, false, false);
offset$1 = 0;
i = 0;
/* while (true) { */ case 3:
/* if (!(i < numElements)) { break; } */ if(!(i < numElements)) { $s = 4; continue; }
_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; }
_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; }
_tuple$2 = _r$3;
offset$1 = _tuple$2[0];
err = _tuple$2[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ret, err];
}
i = i + (1) >> 0;
/* } */ $s = 3; continue; case 4:
$s = -1; return [ret, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: parseSequenceOf }; } $f.$ptr = $ptr; $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.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;
};
invalidLength = function(offset, length, sliceLength) {
var $ptr, length, offset, sliceLength;
return (offset + length >> 0) < offset || (offset + length >> 0) > sliceLength;
};
parseField = function(v, bytes, initOffset, params) {
var $ptr, _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$4, _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$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, 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, t$2, time$1, universalTag, v, v$1, val, x$10, x$11, x$12, x$13, x$14, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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$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$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$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; 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; t$2 = $f.t$2; 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$14 = $f.x$14; 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:
offset = 0;
err = $ifaceNil;
offset = initOffset;
fieldType = $clone(v, reflect.Value).Type();
if (offset === bytes.$length) {
if (!setDefaultValue($clone(v, reflect.Value), $clone(params, fieldParameters))) {
err = (x$3 = new SyntaxError.ptr("sequence truncated"), new x$3.constructor.elem(x$3));
}
$s = -1; return [offset, err];
}
/* */ if ($interfaceIsEqual(fieldType, rawValueType)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if ($interfaceIsEqual(fieldType, rawValueType)) { */ case 1:
t = new tagAndLength.ptr(0, 0, 0, false);
_tuple = parseTagAndLength(bytes, offset);
tagAndLength.copy(t, _tuple[0]);
offset = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [offset, err];
}
if (invalidLength(offset, t.length, bytes.$length)) {
err = (x$4 = new SyntaxError.ptr("data truncated"), new x$4.constructor.elem(x$4));
$s = -1; return [offset, err];
}
result = new RawValue.ptr(t.class$0, t.tag, t.isCompound, $subslice(bytes, offset, (offset + t.length >> 0)), $subslice(bytes, initOffset, (offset + t.length >> 0)));
offset = offset + (t.length) >> 0;
_r = reflect.ValueOf(new result.constructor.elem(result)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$r = $clone(v, reflect.Value).Set($clone(_r, reflect.Value)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return [offset, err];
/* } */ case 2:
ifaceType = fieldType;
_r$1 = ifaceType.Kind(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
if (!(_r$1 === 20)) { _v = false; $s = 7; continue s; }
_r$2 = ifaceType.NumMethod(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_v = _r$2 === 0; case 7:
/* */ if (_v) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (_v) { */ case 5:
t$1 = new tagAndLength.ptr(0, 0, 0, false);
_tuple$1 = parseTagAndLength(bytes, offset);
tagAndLength.copy(t$1, _tuple$1[0]);
offset = _tuple$1[1];
err = _tuple$1[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [offset, err];
}
if (invalidLength(offset, t$1.length, bytes.$length)) {
err = (x$5 = new SyntaxError.ptr("data truncated"), new x$5.constructor.elem(x$5));
$s = -1; return [offset, err];
}
result$1 = $ifaceNil;
/* */ if (!t$1.isCompound && (t$1.class$0 === 0)) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (!t$1.isCompound && (t$1.class$0 === 0)) { */ case 10:
innerBytes = $subslice(bytes, offset, (offset + t$1.length >> 0));
_1 = t$1.tag;
/* */ if (_1 === (19)) { $s = 13; continue; }
/* */ if (_1 === (22)) { $s = 14; continue; }
/* */ if (_1 === (20)) { $s = 15; continue; }
/* */ if (_1 === (12)) { $s = 16; continue; }
/* */ if (_1 === (2)) { $s = 17; continue; }
/* */ if (_1 === (3)) { $s = 18; continue; }
/* */ if (_1 === (6)) { $s = 19; continue; }
/* */ if (_1 === (23)) { $s = 20; continue; }
/* */ if (_1 === (24)) { $s = 21; continue; }
/* */ if (_1 === (4)) { $s = 22; continue; }
/* */ $s = 23; continue;
/* if (_1 === (19)) { */ case 13:
_tuple$2 = parsePrintableString(innerBytes);
result$1 = new $String(_tuple$2[0]);
err = _tuple$2[1];
$s = 23; continue;
/* } else if (_1 === (22)) { */ case 14:
_tuple$3 = parseIA5String(innerBytes);
result$1 = new $String(_tuple$3[0]);
err = _tuple$3[1];
$s = 23; continue;
/* } else if (_1 === (20)) { */ case 15:
_tuple$4 = parseT61String(innerBytes);
result$1 = new $String(_tuple$4[0]);
err = _tuple$4[1];
$s = 23; continue;
/* } else if (_1 === (12)) { */ case 16:
_tuple$5 = parseUTF8String(innerBytes);
result$1 = new $String(_tuple$5[0]);
err = _tuple$5[1];
$s = 23; continue;
/* } else if (_1 === (2)) { */ case 17:
_tuple$6 = parseInt64(innerBytes);
result$1 = _tuple$6[0];
err = _tuple$6[1];
$s = 23; continue;
/* } else if (_1 === (3)) { */ case 18:
_tuple$7 = parseBitString(innerBytes);
result$1 = new _tuple$7[0].constructor.elem(_tuple$7[0]);
err = _tuple$7[1];
$s = 23; continue;
/* } else if (_1 === (6)) { */ case 19:
_tuple$8 = parseObjectIdentifier(innerBytes);
result$1 = _tuple$8[0];
err = _tuple$8[1];
$s = 23; continue;
/* } else if (_1 === (23)) { */ case 20:
_r$3 = parseUTCTime(innerBytes); /* */ $s = 24; case 24: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$9 = _r$3;
result$1 = new _tuple$9[0].constructor.elem(_tuple$9[0]);
err = _tuple$9[1];
$s = 23; continue;
/* } else if (_1 === (24)) { */ case 21:
_r$4 = parseGeneralizedTime(innerBytes); /* */ $s = 25; case 25: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_tuple$10 = _r$4;
result$1 = new _tuple$10[0].constructor.elem(_tuple$10[0]);
err = _tuple$10[1];
$s = 23; continue;
/* } else if (_1 === (4)) { */ case 22:
result$1 = innerBytes;
/* } */ case 23:
case 12:
/* } */ case 11:
offset = offset + (t$1.length) >> 0;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [offset, err];
}
/* */ if (!($interfaceIsEqual(result$1, $ifaceNil))) { $s = 26; continue; }
/* */ $s = 27; continue;
/* if (!($interfaceIsEqual(result$1, $ifaceNil))) { */ case 26:
_r$5 = reflect.ValueOf(result$1); /* */ $s = 28; case 28: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
$r = $clone(v, reflect.Value).Set($clone(_r$5, reflect.Value)); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 27:
$s = -1; return [offset, err];
/* } */ case 6:
_r$6 = getUniversalType(fieldType); /* */ $s = 30; case 30: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_tuple$11 = _r$6;
universalTag = _tuple$11[0];
compoundType = _tuple$11[1];
ok1 = _tuple$11[2];
/* */ if (!ok1) { $s = 31; continue; }
/* */ $s = 32; continue;
/* if (!ok1) { */ case 31:
_r$7 = fmt.Sprintf("unknown Go type: %v", new sliceType$2([fieldType])); /* */ $s = 33; case 33: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
err = (x$6 = new StructuralError.ptr(_r$7), new x$6.constructor.elem(x$6));
$s = -1; return [offset, err];
/* } */ case 32:
_tuple$12 = parseTagAndLength(bytes, offset);
t$2 = $clone(_tuple$12[0], tagAndLength);
offset = _tuple$12[1];
err = _tuple$12[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [offset, err];
}
if (params.explicit) {
expectedClass = 2;
if (params.application) {
expectedClass = 1;
}
if (offset === bytes.$length) {
err = (x$7 = new StructuralError.ptr("explicit tag has no child"), new x$7.constructor.elem(x$7));
$s = -1; return [offset, err];
}
if ((t$2.class$0 === expectedClass) && (t$2.tag === params.tag.$get()) && ((t$2.length === 0) || t$2.isCompound)) {
if (t$2.length > 0) {
_tuple$13 = parseTagAndLength(bytes, offset);
tagAndLength.copy(t$2, _tuple$13[0]);
offset = _tuple$13[1];
err = _tuple$13[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [offset, err];
}
} else {
if (!($interfaceIsEqual(fieldType, flagType))) {
err = (x$8 = new StructuralError.ptr("zero length explicit tag was not an asn1.Flag"), new x$8.constructor.elem(x$8));
$s = -1; return [offset, err];
}
$clone(v, reflect.Value).SetBool(true);
$s = -1; return [offset, err];
}
} else {
ok = setDefaultValue($clone(v, reflect.Value), $clone(params, fieldParameters));
if (ok) {
offset = initOffset;
} else {
err = (x$9 = new StructuralError.ptr("explicitly tagged member didn't match"), new x$9.constructor.elem(x$9));
}
$s = -1; return [offset, err];
}
}
if (universalTag === 19) {
if (t$2.class$0 === 0) {
_2 = t$2.tag;
if ((_2 === (22)) || (_2 === (27)) || (_2 === (20)) || (_2 === (12))) {
universalTag = t$2.tag;
}
} else if (!((params.stringType === 0))) {
universalTag = params.stringType;
}
}
if ((universalTag === 23) && (t$2.tag === 24) && (t$2.class$0 === 0)) {
universalTag = 24;
}
if (params.set) {
universalTag = 17;
}
expectedClass$1 = 0;
expectedTag = universalTag;
if (!params.explicit && !(params.tag === ptrType$4.nil)) {
expectedClass$1 = 2;
expectedTag = params.tag.$get();
}
if (!params.explicit && params.application && !(params.tag === ptrType$4.nil)) {
expectedClass$1 = 1;
expectedTag = params.tag.$get();
}
/* */ if (!((t$2.class$0 === expectedClass$1)) || !((t$2.tag === expectedTag)) || !(t$2.isCompound === compoundType)) { $s = 34; continue; }
/* */ $s = 35; continue;
/* if (!((t$2.class$0 === expectedClass$1)) || !((t$2.tag === expectedTag)) || !(t$2.isCompound === compoundType)) { */ case 34:
ok$1 = setDefaultValue($clone(v, reflect.Value), $clone(params, fieldParameters));
/* */ if (ok$1) { $s = 36; continue; }
/* */ $s = 37; continue;
/* if (ok$1) { */ case 36:
offset = initOffset;
$s = 38; continue;
/* } else { */ case 37:
_arg = new $Int(expectedTag);
_arg$1 = new t$2.constructor.elem(t$2);
_arg$2 = new params.constructor.elem(params);
_r$8 = fieldType.Name(); /* */ $s = 39; case 39: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_arg$3 = new $String(_r$8);
_arg$4 = new $Int(offset);
_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 = 40; case 40: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
err = (x$10 = new StructuralError.ptr(_r$9), new x$10.constructor.elem(x$10));
/* } */ case 38:
$s = -1; return [offset, err];
/* } */ case 35:
if (invalidLength(offset, t$2.length, bytes.$length)) {
err = (x$11 = new SyntaxError.ptr("data truncated"), new x$11.constructor.elem(x$11));
$s = -1; return [offset, err];
}
innerBytes$1 = $subslice(bytes, offset, (offset + t$2.length >> 0));
offset = offset + (t$2.length) >> 0;
_3 = fieldType;
/* */ if ($interfaceIsEqual(_3, (objectIdentifierType))) { $s = 42; continue; }
/* */ if ($interfaceIsEqual(_3, (bitStringType))) { $s = 43; continue; }
/* */ if ($interfaceIsEqual(_3, (timeType))) { $s = 44; continue; }
/* */ if ($interfaceIsEqual(_3, (enumeratedType))) { $s = 45; continue; }
/* */ if ($interfaceIsEqual(_3, (flagType))) { $s = 46; continue; }
/* */ if ($interfaceIsEqual(_3, (bigIntType))) { $s = 47; continue; }
/* */ $s = 48; continue;
/* if ($interfaceIsEqual(_3, (objectIdentifierType))) { */ case 42:
_tuple$14 = parseObjectIdentifier(innerBytes$1);
newSlice = _tuple$14[0];
err1 = _tuple$14[1];
_r$10 = reflect.MakeSlice($clone(v, reflect.Value).Type(), newSlice.$length, newSlice.$length); /* */ $s = 49; case 49: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
$r = $clone(v, reflect.Value).Set($clone(_r$10, reflect.Value)); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if ($interfaceIsEqual(err1, $ifaceNil)) { $s = 51; continue; }
/* */ $s = 52; continue;
/* if ($interfaceIsEqual(err1, $ifaceNil)) { */ case 51:
_arg$5 = $clone(v, reflect.Value);
_r$11 = reflect.ValueOf(newSlice); /* */ $s = 53; case 53: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
_arg$6 = $clone(_r$11, reflect.Value);
_r$12 = reflect.Copy(_arg$5, _arg$6); /* */ $s = 54; case 54: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
_r$12;
/* } */ case 52:
err = err1;
$s = -1; return [offset, err];
/* } else if ($interfaceIsEqual(_3, (bitStringType))) { */ case 43:
_tuple$15 = parseBitString(innerBytes$1);
bs = $clone(_tuple$15[0], BitString);
err1$1 = _tuple$15[1];
/* */ if ($interfaceIsEqual(err1$1, $ifaceNil)) { $s = 55; continue; }
/* */ $s = 56; continue;
/* if ($interfaceIsEqual(err1$1, $ifaceNil)) { */ case 55:
_r$13 = reflect.ValueOf(new bs.constructor.elem(bs)); /* */ $s = 57; case 57: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
$r = $clone(v, reflect.Value).Set($clone(_r$13, reflect.Value)); /* */ $s = 58; case 58: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 56:
err = err1$1;
$s = -1; return [offset, err];
/* } else if ($interfaceIsEqual(_3, (timeType))) { */ case 44:
time$1 = new time.Time.ptr(new $Int64(0, 0), 0, ptrType.nil);
err1$2 = $ifaceNil;
/* */ if (universalTag === 23) { $s = 59; continue; }
/* */ $s = 60; continue;
/* if (universalTag === 23) { */ case 59:
_r$14 = parseUTCTime(innerBytes$1); /* */ $s = 62; case 62: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
_tuple$16 = _r$14;
time.Time.copy(time$1, _tuple$16[0]);
err1$2 = _tuple$16[1];
$s = 61; continue;
/* } else { */ case 60:
_r$15 = parseGeneralizedTime(innerBytes$1); /* */ $s = 63; case 63: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
_tuple$17 = _r$15;
time.Time.copy(time$1, _tuple$17[0]);
err1$2 = _tuple$17[1];
/* } */ case 61:
/* */ if ($interfaceIsEqual(err1$2, $ifaceNil)) { $s = 64; continue; }
/* */ $s = 65; continue;
/* if ($interfaceIsEqual(err1$2, $ifaceNil)) { */ case 64:
_r$16 = reflect.ValueOf(new time$1.constructor.elem(time$1)); /* */ $s = 66; case 66: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
$r = $clone(v, reflect.Value).Set($clone(_r$16, reflect.Value)); /* */ $s = 67; case 67: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 65:
err = err1$2;
$s = -1; return [offset, err];
/* } else if ($interfaceIsEqual(_3, (enumeratedType))) { */ case 45:
_tuple$18 = parseInt32(innerBytes$1);
parsedInt = _tuple$18[0];
err1$3 = _tuple$18[1];
if ($interfaceIsEqual(err1$3, $ifaceNil)) {
$clone(v, reflect.Value).SetInt((new $Int64(0, parsedInt)));
}
err = err1$3;
$s = -1; return [offset, err];
/* } else if ($interfaceIsEqual(_3, (flagType))) { */ case 46:
$clone(v, reflect.Value).SetBool(true);
$s = -1; return [offset, err];
/* } else if ($interfaceIsEqual(_3, (bigIntType))) { */ case 47:
_tuple$19 = parseBigInt(innerBytes$1);
parsedInt$1 = _tuple$19[0];
err1$4 = _tuple$19[1];
/* */ if ($interfaceIsEqual(err1$4, $ifaceNil)) { $s = 68; continue; }
/* */ $s = 69; continue;
/* if ($interfaceIsEqual(err1$4, $ifaceNil)) { */ case 68:
_r$17 = reflect.ValueOf(parsedInt$1); /* */ $s = 70; case 70: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
$r = $clone(v, reflect.Value).Set($clone(_r$17, reflect.Value)); /* */ $s = 71; case 71: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 69:
err = err1$4;
$s = -1; return [offset, err];
/* } */ case 48:
case 41:
val = v;
_4 = $clone(val, reflect.Value).Kind();
/* */ if (_4 === (1)) { $s = 73; continue; }
/* */ if ((_4 === (2)) || (_4 === (5)) || (_4 === (6))) { $s = 74; continue; }
/* */ if (_4 === (25)) { $s = 75; continue; }
/* */ if (_4 === (23)) { $s = 76; continue; }
/* */ if (_4 === (24)) { $s = 77; continue; }
/* */ $s = 78; continue;
/* if (_4 === (1)) { */ case 73:
_tuple$20 = parseBool(innerBytes$1);
parsedBool = _tuple$20[0];
err1$5 = _tuple$20[1];
if ($interfaceIsEqual(err1$5, $ifaceNil)) {
$clone(val, reflect.Value).SetBool(parsedBool);
}
err = err1$5;
$s = -1; return [offset, err];
/* } else if ((_4 === (2)) || (_4 === (5)) || (_4 === (6))) { */ case 74:
_r$18 = $clone(val, reflect.Value).Type().Size(); /* */ $s = 82; case 82: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
/* */ if (_r$18 === 4) { $s = 79; continue; }
/* */ $s = 80; continue;
/* if (_r$18 === 4) { */ case 79:
_tuple$21 = parseInt32(innerBytes$1);
parsedInt$2 = _tuple$21[0];
err1$6 = _tuple$21[1];
if ($interfaceIsEqual(err1$6, $ifaceNil)) {
$clone(val, reflect.Value).SetInt((new $Int64(0, parsedInt$2)));
}
err = err1$6;
$s = 81; continue;
/* } else { */ case 80:
_tuple$22 = parseInt64(innerBytes$1);
parsedInt$3 = _tuple$22[0];
err1$7 = _tuple$22[1];
if ($interfaceIsEqual(err1$7, $ifaceNil)) {
$clone(val, reflect.Value).SetInt(parsedInt$3);
}
err = err1$7;
/* } */ case 81:
$s = -1; return [offset, err];
/* } else if (_4 === (25)) { */ case 75:
structType = fieldType;
i = 0;
/* while (true) { */ case 83:
_r$19 = structType.NumField(); /* */ $s = 85; case 85: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
/* if (!(i < _r$19)) { break; } */ if(!(i < _r$19)) { $s = 84; continue; }
_r$20 = structType.Field(i); /* */ $s = 88; case 88: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
/* */ if (!(_r$20.PkgPath === "")) { $s = 86; continue; }
/* */ $s = 87; continue;
/* if (!(_r$20.PkgPath === "")) { */ case 86:
err = (x$12 = new StructuralError.ptr("struct contains unexported fields"), new x$12.constructor.elem(x$12));
$s = -1; return [offset, err];
/* } */ case 87:
i = i + (1) >> 0;
/* } */ $s = 83; continue; case 84:
_r$21 = structType.NumField(); /* */ $s = 92; case 92: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
if (!(_r$21 > 0)) { _v$1 = false; $s = 91; continue s; }
_r$22 = structType.Field(0); /* */ $s = 93; case 93: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
_v$1 = $interfaceIsEqual(_r$22.Type, rawContentsType); case 91:
/* */ if (_v$1) { $s = 89; continue; }
/* */ $s = 90; continue;
/* if (_v$1) { */ case 89:
bytes$1 = $subslice(bytes, initOffset, offset);
_r$23 = $clone(val, reflect.Value).Field(0); /* */ $s = 94; case 94: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
_r$24 = reflect.ValueOf(($subslice(new RawContent(bytes$1.$array), bytes$1.$offset, bytes$1.$offset + bytes$1.$length))); /* */ $s = 95; case 95: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
$r = $clone(_r$23, reflect.Value).Set($clone(_r$24, reflect.Value)); /* */ $s = 96; case 96: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 90:
innerOffset = 0;
i$1 = 0;
/* while (true) { */ case 97:
_r$25 = structType.NumField(); /* */ $s = 99; case 99: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
/* if (!(i$1 < _r$25)) { break; } */ if(!(i$1 < _r$25)) { $s = 98; continue; }
_r$26 = structType.Field(i$1); /* */ $s = 100; case 100: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
field = $clone(_r$26, reflect.StructField);
/* */ if ((i$1 === 0) && $interfaceIsEqual(field.Type, rawContentsType)) { $s = 101; continue; }
/* */ $s = 102; continue;
/* if ((i$1 === 0) && $interfaceIsEqual(field.Type, rawContentsType)) { */ case 101:
i$1 = i$1 + (1) >> 0;
/* continue; */ $s = 97; continue;
/* } */ case 102:
_r$27 = $clone(val, reflect.Value).Field(i$1); /* */ $s = 103; case 103: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
_r$28 = parseField($clone(_r$27, reflect.Value), innerBytes$1, innerOffset, $clone(parseFieldParameters(new reflect.StructTag(field.Tag).Get("asn1")), fieldParameters)); /* */ $s = 104; case 104: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; }
_tuple$23 = _r$28;
innerOffset = _tuple$23[0];
err = _tuple$23[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [offset, err];
}
i$1 = i$1 + (1) >> 0;
/* } */ $s = 97; continue; case 98:
$s = -1; return [offset, err];
/* } else if (_4 === (23)) { */ case 76:
sliceType$3 = fieldType;
_r$29 = sliceType$3.Elem(); /* */ $s = 107; case 107: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; }
_r$30 = _r$29.Kind(); /* */ $s = 108; case 108: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; }
/* */ if (_r$30 === 8) { $s = 105; continue; }
/* */ $s = 106; continue;
/* if (_r$30 === 8) { */ case 105:
_r$31 = reflect.MakeSlice(sliceType$3, innerBytes$1.$length, innerBytes$1.$length); /* */ $s = 109; case 109: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; }
$r = $clone(val, reflect.Value).Set($clone(_r$31, reflect.Value)); /* */ $s = 110; case 110: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_arg$7 = $clone(val, reflect.Value);
_r$32 = reflect.ValueOf(innerBytes$1); /* */ $s = 111; case 111: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; }
_arg$8 = $clone(_r$32, reflect.Value);
_r$33 = reflect.Copy(_arg$7, _arg$8); /* */ $s = 112; case 112: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; }
_r$33;
$s = -1; return [offset, err];
/* } */ case 106:
_arg$9 = innerBytes$1;
_arg$10 = sliceType$3;
_r$34 = sliceType$3.Elem(); /* */ $s = 113; case 113: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; }
_arg$11 = _r$34;
_r$35 = parseSequenceOf(_arg$9, _arg$10, _arg$11); /* */ $s = 114; case 114: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; }
_tuple$24 = _r$35;
newSlice$1 = _tuple$24[0];
err1$8 = _tuple$24[1];
/* */ if ($interfaceIsEqual(err1$8, $ifaceNil)) { $s = 115; continue; }
/* */ $s = 116; continue;
/* if ($interfaceIsEqual(err1$8, $ifaceNil)) { */ case 115:
$r = $clone(val, reflect.Value).Set($clone(newSlice$1, reflect.Value)); /* */ $s = 117; case 117: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 116:
err = err1$8;
$s = -1; return [offset, err];
/* } else if (_4 === (24)) { */ case 77:
v$1 = "";
_5 = universalTag;
/* */ if (_5 === (19)) { $s = 119; continue; }
/* */ if (_5 === (22)) { $s = 120; continue; }
/* */ if (_5 === (20)) { $s = 121; continue; }
/* */ if (_5 === (12)) { $s = 122; continue; }
/* */ if (_5 === (27)) { $s = 123; continue; }
/* */ $s = 124; continue;
/* if (_5 === (19)) { */ case 119:
_tuple$25 = parsePrintableString(innerBytes$1);
v$1 = _tuple$25[0];
err = _tuple$25[1];
$s = 125; continue;
/* } else if (_5 === (22)) { */ case 120:
_tuple$26 = parseIA5String(innerBytes$1);
v$1 = _tuple$26[0];
err = _tuple$26[1];
$s = 125; continue;
/* } else if (_5 === (20)) { */ case 121:
_tuple$27 = parseT61String(innerBytes$1);
v$1 = _tuple$27[0];
err = _tuple$27[1];
$s = 125; continue;
/* } else if (_5 === (12)) { */ case 122:
_tuple$28 = parseUTF8String(innerBytes$1);
v$1 = _tuple$28[0];
err = _tuple$28[1];
$s = 125; continue;
/* } else if (_5 === (27)) { */ case 123:
_tuple$29 = parseT61String(innerBytes$1);
v$1 = _tuple$29[0];
err = _tuple$29[1];
$s = 125; continue;
/* } else { */ case 124:
_r$36 = fmt.Sprintf("internal error: unknown string type %d", new sliceType$2([new $Int(universalTag)])); /* */ $s = 126; case 126: if($c) { $c = false; _r$36 = _r$36.$blk(); } if (_r$36 && _r$36.$blk !== undefined) { break s; }
err = (x$13 = new SyntaxError.ptr(_r$36), new x$13.constructor.elem(x$13));
/* } */ case 125:
case 118:
if ($interfaceIsEqual(err, $ifaceNil)) {
$clone(val, reflect.Value).SetString(v$1);
}
$s = -1; return [offset, err];
/* } */ case 78:
case 72:
_r$37 = $clone(v, reflect.Value).Type().String(); /* */ $s = 127; case 127: if($c) { $c = false; _r$37 = _r$37.$blk(); } if (_r$37 && _r$37.$blk !== undefined) { break s; }
err = (x$14 = new StructuralError.ptr("unsupported: " + _r$37), new x$14.constructor.elem(x$14));
$s = -1; return [offset, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: parseField }; } $f.$ptr = $ptr; $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$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$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$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.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.t$2 = t$2; $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$14 = x$14; $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;
};
canHaveDefaultValue = function(k) {
var $ptr, _1, k;
_1 = k;
if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) {
return true;
}
return false;
};
setDefaultValue = function(v, params) {
var $ptr, ok, params, v;
ok = false;
if (!params.optional) {
return ok;
}
ok = true;
if (params.defaultValue === ptrType$3.nil) {
return ok;
}
if (canHaveDefaultValue($clone(v, reflect.Value).Kind())) {
$clone(v, reflect.Value).SetInt(params.defaultValue.$get());
}
return ok;
};
Unmarshal = function(b, val) {
var $ptr, _r, _tuple, b, err, rest, val, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
rest = sliceType.nil;
err = $ifaceNil;
_r = UnmarshalWithParams(b, val, ""); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
rest = _tuple[0];
err = _tuple[1];
$s = -1; return [rest, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Unmarshal }; } $f.$ptr = $ptr; $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;
};
$pkg.Unmarshal = Unmarshal;
UnmarshalWithParams = function(b, val, params) {
var $ptr, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, err, offset, params, rest, v, val, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
rest = sliceType.nil;
err = $ifaceNil;
_r = reflect.ValueOf(val); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_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; }
v = _r$1;
_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; }
_tuple = _r$2;
offset = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = sliceType.nil;
_tmp$1 = err;
rest = _tmp;
err = _tmp$1;
$s = -1; return [rest, err];
}
_tmp$2 = $subslice(b, offset);
_tmp$3 = $ifaceNil;
rest = _tmp$2;
err = _tmp$3;
$s = -1; return [rest, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: UnmarshalWithParams }; } $f.$ptr = $ptr; $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;
};
$pkg.UnmarshalWithParams = UnmarshalWithParams;
parseFieldParameters = function(str) {
var $ptr, _i, _ref, _tuple, _tuple$1, err, err$1, i, i$1, part, ret, str;
ret = new fieldParameters.ptr(false, false, false, ptrType$3.nil, ptrType$4.nil, 0, 0, false, false);
_ref = strings.Split(str, ",");
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
part = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (part === "optional") {
ret.optional = true;
} else if (part === "explicit") {
ret.explicit = true;
if (ret.tag === ptrType$4.nil) {
ret.tag = $newDataPointer(0, ptrType$4);
}
} else if (part === "generalized") {
ret.timeType = 24;
} else if (part === "utc") {
ret.timeType = 23;
} else if (part === "ia5") {
ret.stringType = 22;
} else if (part === "printable") {
ret.stringType = 19;
} else if (part === "utf8") {
ret.stringType = 12;
} else if (strings.HasPrefix(part, "default:")) {
_tuple = strconv.ParseInt($substring(part, 8), 10, 64);
i = _tuple[0];
err = _tuple[1];
if ($interfaceIsEqual(err, $ifaceNil)) {
ret.defaultValue = $newDataPointer(new $Int64(0, 0), ptrType$3);
ret.defaultValue.$set(i);
}
} else if (strings.HasPrefix(part, "tag:")) {
_tuple$1 = strconv.Atoi($substring(part, 4));
i$1 = _tuple$1[0];
err$1 = _tuple$1[1];
if ($interfaceIsEqual(err$1, $ifaceNil)) {
ret.tag = $newDataPointer(0, ptrType$4);
ret.tag.$set(i$1);
}
} else if (part === "set") {
ret.set = true;
} else if (part === "application") {
ret.application = true;
if (ret.tag === ptrType$4.nil) {
ret.tag = $newDataPointer(0, ptrType$4);
}
} else if (part === "omitempty") {
ret.omitEmpty = true;
}
_i++;
}
return ret;
};
getUniversalType = function(t) {
var $ptr, _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$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, isCompound, ok, t, tagNumber, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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$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; isCompound = $f.isCompound; ok = $f.ok; t = $f.t; tagNumber = $f.tagNumber; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
tagNumber = 0;
isCompound = false;
ok = false;
_1 = t;
if ($interfaceIsEqual(_1, (objectIdentifierType))) {
_tmp = 6;
_tmp$1 = false;
_tmp$2 = true;
tagNumber = _tmp;
isCompound = _tmp$1;
ok = _tmp$2;
$s = -1; return [tagNumber, isCompound, ok];
} else if ($interfaceIsEqual(_1, (bitStringType))) {
_tmp$3 = 3;
_tmp$4 = false;
_tmp$5 = true;
tagNumber = _tmp$3;
isCompound = _tmp$4;
ok = _tmp$5;
$s = -1; return [tagNumber, isCompound, ok];
} else if ($interfaceIsEqual(_1, (timeType))) {
_tmp$6 = 23;
_tmp$7 = false;
_tmp$8 = true;
tagNumber = _tmp$6;
isCompound = _tmp$7;
ok = _tmp$8;
$s = -1; return [tagNumber, isCompound, ok];
} else if ($interfaceIsEqual(_1, (enumeratedType))) {
_tmp$9 = 10;
_tmp$10 = false;
_tmp$11 = true;
tagNumber = _tmp$9;
isCompound = _tmp$10;
ok = _tmp$11;
$s = -1; return [tagNumber, isCompound, ok];
} else if ($interfaceIsEqual(_1, (bigIntType))) {
_tmp$12 = 2;
_tmp$13 = false;
_tmp$14 = true;
tagNumber = _tmp$12;
isCompound = _tmp$13;
ok = _tmp$14;
$s = -1; return [tagNumber, isCompound, ok];
}
_r = t.Kind(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_2 = _r;
/* */ if (_2 === (1)) { $s = 3; continue; }
/* */ if ((_2 === (2)) || (_2 === (3)) || (_2 === (4)) || (_2 === (5)) || (_2 === (6))) { $s = 4; continue; }
/* */ if (_2 === (25)) { $s = 5; continue; }
/* */ if (_2 === (23)) { $s = 6; continue; }
/* */ if (_2 === (24)) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (_2 === (1)) { */ case 3:
_tmp$15 = 1;
_tmp$16 = false;
_tmp$17 = true;
tagNumber = _tmp$15;
isCompound = _tmp$16;
ok = _tmp$17;
$s = -1; return [tagNumber, isCompound, ok];
/* } else if ((_2 === (2)) || (_2 === (3)) || (_2 === (4)) || (_2 === (5)) || (_2 === (6))) { */ case 4:
_tmp$18 = 2;
_tmp$19 = false;
_tmp$20 = true;
tagNumber = _tmp$18;
isCompound = _tmp$19;
ok = _tmp$20;
$s = -1; return [tagNumber, isCompound, ok];
/* } else if (_2 === (25)) { */ case 5:
_tmp$21 = 16;
_tmp$22 = true;
_tmp$23 = true;
tagNumber = _tmp$21;
isCompound = _tmp$22;
ok = _tmp$23;
$s = -1; return [tagNumber, isCompound, ok];
/* } else if (_2 === (23)) { */ case 6:
_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; }
_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; }
/* */ if (_r$2 === 8) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (_r$2 === 8) { */ case 9:
_tmp$24 = 4;
_tmp$25 = false;
_tmp$26 = true;
tagNumber = _tmp$24;
isCompound = _tmp$25;
ok = _tmp$26;
$s = -1; return [tagNumber, isCompound, ok];
/* } */ case 10:
_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; }
_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; }
/* */ if (_r$4) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (_r$4) { */ case 13:
_tmp$27 = 17;
_tmp$28 = true;
_tmp$29 = true;
tagNumber = _tmp$27;
isCompound = _tmp$28;
ok = _tmp$29;
$s = -1; return [tagNumber, isCompound, ok];
/* } */ case 14:
_tmp$30 = 16;
_tmp$31 = true;
_tmp$32 = true;
tagNumber = _tmp$30;
isCompound = _tmp$31;
ok = _tmp$32;
$s = -1; return [tagNumber, isCompound, ok];
/* } else if (_2 === (24)) { */ case 7:
_tmp$33 = 19;
_tmp$34 = false;
_tmp$35 = true;
tagNumber = _tmp$33;
isCompound = _tmp$34;
ok = _tmp$35;
$s = -1; return [tagNumber, isCompound, ok];
/* } */ case 8:
case 1:
_tmp$36 = 0;
_tmp$37 = false;
_tmp$38 = false;
tagNumber = _tmp$36;
isCompound = _tmp$37;
ok = _tmp$38;
$s = -1; return [tagNumber, isCompound, ok];
/* */ } return; } if ($f === undefined) { $f = { $blk: getUniversalType }; } $f.$ptr = $ptr; $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$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.isCompound = isCompound; $f.ok = ok; $f.t = t; $f.tagNumber = tagNumber; $f.$s = $s; $f.$r = $r; return $f;
};
byteEncoder.prototype.Len = function() {
var $ptr, c;
c = this.$val;
return 1;
};
$ptrType(byteEncoder).prototype.Len = function() { return new byteEncoder(this.$get()).Len(); };
byteEncoder.prototype.Encode = function(dst) {
var $ptr, c, dst;
c = this.$val;
(0 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 0] = ((c << 24 >>> 24)));
};
$ptrType(byteEncoder).prototype.Encode = function(dst) { return new byteEncoder(this.$get()).Encode(dst); };
bytesEncoder.prototype.Len = function() {
var $ptr, b;
b = this;
return b.$length;
};
$ptrType(bytesEncoder).prototype.Len = function() { return this.$get().Len(); };
bytesEncoder.prototype.Encode = function(dst) {
var $ptr, b, dst;
b = this;
if (!(($copySlice(dst, b) === b.$length))) {
$panic(new $String("internal error"));
}
};
$ptrType(bytesEncoder).prototype.Encode = function(dst) { return this.$get().Encode(dst); };
stringEncoder.prototype.Len = function() {
var $ptr, s;
s = this.$val;
return s.length;
};
$ptrType(stringEncoder).prototype.Len = function() { return new stringEncoder(this.$get()).Len(); };
stringEncoder.prototype.Encode = function(dst) {
var $ptr, dst, s;
s = this.$val;
if (!(($copyString(dst, s) === s.length))) {
$panic(new $String("internal error"));
}
};
$ptrType(stringEncoder).prototype.Encode = function(dst) { return new stringEncoder(this.$get()).Encode(dst); };
multiEncoder.prototype.Len = function() {
var $ptr, _i, _r, _ref, e, m, size, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
m = this;
size = 0;
_ref = m;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
e = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_r = e.Len(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
size = size + (_r) >> 0;
_i++;
/* } */ $s = 1; continue; case 2:
$s = -1; return size;
/* */ } return; } if ($f === undefined) { $f = { $blk: multiEncoder.prototype.Len }; } $f.$ptr = $ptr; $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;
};
$ptrType(multiEncoder).prototype.Len = function() { return this.$get().Len(); };
multiEncoder.prototype.Encode = function(dst) {
var $ptr, _i, _r, _ref, dst, e, m, off, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
m = this;
off = 0;
_ref = m;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
e = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
$r = e.Encode($subslice(dst, off)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r = e.Len(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
off = off + (_r) >> 0;
_i++;
/* } */ $s = 1; continue; case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: multiEncoder.prototype.Encode }; } $f.$ptr = $ptr; $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;
};
$ptrType(multiEncoder).prototype.Encode = function(dst) { return this.$get().Encode(dst); };
taggedEncoder.ptr.prototype.Len = function() {
var $ptr, _r, _r$1, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
_r = t.tag.Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_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; }
$s = -1; return _r + _r$1 >> 0;
/* */ } return; } if ($f === undefined) { $f = { $blk: taggedEncoder.ptr.prototype.Len }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
taggedEncoder.prototype.Len = function() { return this.$val.Len(); };
taggedEncoder.ptr.prototype.Encode = function(dst) {
var $ptr, _r, dst, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; dst = $f.dst; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
$r = t.tag.Encode(dst); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r = t.tag.Len(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: taggedEncoder.ptr.prototype.Encode }; } $f.$ptr = $ptr; $f._r = _r; $f.dst = dst; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
taggedEncoder.prototype.Encode = function(dst) { return this.$val.Encode(dst); };
int64Encoder.prototype.Len = function() {
var $ptr, i, n;
i = this;
n = 1;
while (true) {
if (!((i.$high > 0 || (i.$high === 0 && i.$low > 127)))) { break; }
n = n + (1) >> 0;
i = $shiftRightInt64(i, (8));
}
while (true) {
if (!((i.$high < -1 || (i.$high === -1 && i.$low < 4294967168)))) { break; }
n = n + (1) >> 0;
i = $shiftRightInt64(i, (8));
}
return n;
};
$ptrType(int64Encoder).prototype.Len = function() { return this.$get().Len(); };
int64Encoder.prototype.Encode = function(dst) {
var $ptr, dst, i, j, n;
i = this;
n = i.Len();
j = 0;
while (true) {
if (!(j < n)) { break; }
((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)));
j = j + (1) >> 0;
}
};
$ptrType(int64Encoder).prototype.Encode = function(dst) { return this.$get().Encode(dst); };
base128IntLength = function(n) {
var $ptr, i, l, n;
if ((n.$high === 0 && n.$low === 0)) {
return 1;
}
l = 0;
i = n;
while (true) {
if (!((i.$high > 0 || (i.$high === 0 && i.$low > 0)))) { break; }
l = l + (1) >> 0;
i = $shiftRightInt64(i, (7));
}
return l;
};
appendBase128Int = function(dst, n) {
var $ptr, dst, i, l, n, o;
l = base128IntLength(n);
i = l - 1 >> 0;
while (true) {
if (!(i >= 0)) { break; }
o = (($shiftRightInt64(n, ((($imul(i, 7)) >>> 0))).$low << 24 >>> 24));
o = (o & (127)) >>> 0;
if (!((i === 0))) {
o = (o | (128)) >>> 0;
}
dst = $append(dst, o);
i = i - (1) >> 0;
}
return dst;
};
makeBigInt = function(n) {
var $ptr, _i, _ref, bytes, bytes$1, i, n, nMinus1, x$3, x$4, x$5;
if (n === ptrType$1.nil) {
return [$ifaceNil, (x$3 = new StructuralError.ptr("empty integer"), new x$3.constructor.elem(x$3))];
}
if (n.Sign() < 0) {
nMinus1 = new big.Int.ptr(false, big.nat.nil).Neg(n);
nMinus1.Sub(nMinus1, bigOne);
bytes = nMinus1.Bytes();
_ref = bytes;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
((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));
_i++;
}
if ((bytes.$length === 0) || ((((0 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 0]) & 128) >>> 0) === 0)) {
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];
}
return [($subslice(new bytesEncoder(bytes.$array), bytes.$offset, bytes.$offset + bytes.$length)), $ifaceNil];
} else if (n.Sign() === 0) {
return [byte00Encoder, $ifaceNil];
} else {
bytes$1 = n.Bytes();
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))) {
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];
}
return [($subslice(new bytesEncoder(bytes$1.$array), bytes$1.$offset, bytes$1.$offset + bytes$1.$length)), $ifaceNil];
}
};
appendLength = function(dst, i) {
var $ptr, dst, i, n;
n = lengthLength(i);
while (true) {
if (!(n > 0)) { break; }
dst = $append(dst, ((((i >> $min(((($imul(((n - 1 >> 0)), 8)) >>> 0)), 31)) >> 0) << 24 >>> 24)));
n = n - (1) >> 0;
}
return dst;
};
lengthLength = function(i) {
var $ptr, i, numBytes;
numBytes = 0;
numBytes = 1;
while (true) {
if (!(i > 255)) { break; }
numBytes = numBytes + (1) >> 0;
i = (i >> $min((8), 31)) >> 0;
}
return numBytes;
};
appendTagAndLength = function(dst, t) {
var $ptr, b, dst, l, t;
b = ((t.class$0 << 24 >>> 24)) << 6 << 24 >>> 24;
if (t.isCompound) {
b = (b | (32)) >>> 0;
}
if (t.tag >= 31) {
b = (b | (31)) >>> 0;
dst = $append(dst, b);
dst = appendBase128Int(dst, (new $Int64(0, t.tag)));
} else {
b = (b | (((t.tag << 24 >>> 24)))) >>> 0;
dst = $append(dst, b);
}
if (t.length >= 128) {
l = lengthLength(t.length);
dst = $append(dst, (128 | ((l << 24 >>> 24))) >>> 0);
dst = appendLength(dst, t.length);
} else {
dst = $append(dst, ((t.length << 24 >>> 24)));
}
return dst;
};
bitStringEncoder.ptr.prototype.Len = function() {
var $ptr, b;
b = this;
return b.Bytes.$length + 1 >> 0;
};
bitStringEncoder.prototype.Len = function() { return this.$val.Len(); };
bitStringEncoder.ptr.prototype.Encode = function(dst) {
var $ptr, _r, _r$1, b, dst;
b = this;
(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)));
if (!(($copySlice($subslice(dst, 1), b.Bytes) === b.Bytes.$length))) {
$panic(new $String("internal error"));
}
};
bitStringEncoder.prototype.Encode = function(dst) { return this.$val.Encode(dst); };
oidEncoder.prototype.Len = function() {
var $ptr, i, l, oid;
oid = this;
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))));
i = 2;
while (true) {
if (!(i < oid.$length)) { break; }
l = l + (base128IntLength((new $Int64(0, ((i < 0 || i >= oid.$length) ? ($throwRuntimeError("index out of range"), undefined) : oid.$array[oid.$offset + i]))))) >> 0;
i = i + (1) >> 0;
}
return l;
};
$ptrType(oidEncoder).prototype.Len = function() { return this.$get().Len(); };
oidEncoder.prototype.Encode = function(dst) {
var $ptr, dst, i, oid;
oid = this;
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))));
i = 2;
while (true) {
if (!(i < oid.$length)) { break; }
dst = appendBase128Int(dst, (new $Int64(0, ((i < 0 || i >= oid.$length) ? ($throwRuntimeError("index out of range"), undefined) : oid.$array[oid.$offset + i]))));
i = i + (1) >> 0;
}
};
$ptrType(oidEncoder).prototype.Encode = function(dst) { return this.$get().Encode(dst); };
makeObjectIdentifier = function(oid) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, e, err, oid, x$3;
e = $ifaceNil;
err = $ifaceNil;
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)) {
_tmp = $ifaceNil;
_tmp$1 = (x$3 = new StructuralError.ptr("invalid object identifier"), new x$3.constructor.elem(x$3));
e = _tmp;
err = _tmp$1;
return [e, err];
}
_tmp$2 = ($subslice(new oidEncoder(oid.$array), oid.$offset, oid.$offset + oid.$length));
_tmp$3 = $ifaceNil;
e = _tmp$2;
err = _tmp$3;
return [e, err];
};
makePrintableString = function(s) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, e, err, i, s, x$3;
e = $ifaceNil;
err = $ifaceNil;
i = 0;
while (true) {
if (!(i < s.length)) { break; }
if (!isPrintable(s.charCodeAt(i))) {
_tmp = $ifaceNil;
_tmp$1 = (x$3 = new StructuralError.ptr("PrintableString contains invalid character"), new x$3.constructor.elem(x$3));
e = _tmp;
err = _tmp$1;
return [e, err];
}
i = i + (1) >> 0;
}
_tmp$2 = new stringEncoder((s));
_tmp$3 = $ifaceNil;
e = _tmp$2;
err = _tmp$3;
return [e, err];
};
makeIA5String = function(s) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, e, err, i, s, x$3;
e = $ifaceNil;
err = $ifaceNil;
i = 0;
while (true) {
if (!(i < s.length)) { break; }
if (s.charCodeAt(i) > 127) {
_tmp = $ifaceNil;
_tmp$1 = (x$3 = new StructuralError.ptr("IA5String contains invalid character"), new x$3.constructor.elem(x$3));
e = _tmp;
err = _tmp$1;
return [e, err];
}
i = i + (1) >> 0;
}
_tmp$2 = new stringEncoder((s));
_tmp$3 = $ifaceNil;
e = _tmp$2;
err = _tmp$3;
return [e, err];
};
makeUTF8String = function(s) {
var $ptr, s;
return new stringEncoder((s));
};
appendTwoDigits = function(dst, v) {
var $ptr, _q, _r, _r$1, dst, v;
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)));
};
appendFourDigits = function(dst, v) {
var $ptr, _i, _q, _r, _ref, bytes, dst, i, v, x$3;
bytes = arrayType.zero();
_ref = bytes;
_i = 0;
while (true) {
if (!(_i < 4)) { break; }
i = _i;
(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)));
v = (_q = v / (10), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
_i++;
}
return $appendSlice(dst, new sliceType(bytes));
};
outsideUTCRange = function(t) {
var $ptr, _r, t, year, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = $clone(t, time.Time).Year(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
year = _r;
$s = -1; return year < 1950 || year >= 2050;
/* */ } return; } if ($f === undefined) { $f = { $blk: outsideUTCRange }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.year = year; $f.$s = $s; $f.$r = $r; return $f;
};
makeUTCTime = function(t) {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, dst, e, err, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
e = $ifaceNil;
err = $ifaceNil;
dst = $makeSlice(sliceType, 0, 18);
_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; }
_tuple = _r;
dst = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = $ifaceNil;
_tmp$1 = err;
e = _tmp;
err = _tmp$1;
$s = -1; return [e, err];
}
_tmp$2 = ($subslice(new bytesEncoder(dst.$array), dst.$offset, dst.$offset + dst.$length));
_tmp$3 = $ifaceNil;
e = _tmp$2;
err = _tmp$3;
$s = -1; return [e, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: makeUTCTime }; } $f.$ptr = $ptr; $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;
};
makeGeneralizedTime = function(t) {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, dst, e, err, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
e = $ifaceNil;
err = $ifaceNil;
dst = $makeSlice(sliceType, 0, 20);
_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; }
_tuple = _r;
dst = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = $ifaceNil;
_tmp$1 = err;
e = _tmp;
err = _tmp$1;
$s = -1; return [e, err];
}
_tmp$2 = ($subslice(new bytesEncoder(dst.$array), dst.$offset, dst.$offset + dst.$length));
_tmp$3 = $ifaceNil;
e = _tmp$2;
err = _tmp$3;
$s = -1; return [e, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: makeGeneralizedTime }; } $f.$ptr = $ptr; $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;
};
appendUTCTime = function(dst, t) {
var $ptr, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, dst, err, ret, t, x$3, year, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
ret = sliceType.nil;
err = $ifaceNil;
_r = $clone(t, time.Time).Year(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
year = _r;
if (1950 <= year && year < 2000) {
dst = appendTwoDigits(dst, year - 1900 >> 0);
} else if (2000 <= year && year < 2050) {
dst = appendTwoDigits(dst, year - 2000 >> 0);
} else {
_tmp = sliceType.nil;
_tmp$1 = (x$3 = new StructuralError.ptr("cannot represent time as UTCTime"), new x$3.constructor.elem(x$3));
ret = _tmp;
err = _tmp$1;
$s = -1; return [ret, err];
}
_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; }
_tmp$2 = _r$1;
_tmp$3 = $ifaceNil;
ret = _tmp$2;
err = _tmp$3;
$s = -1; return [ret, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: appendUTCTime }; } $f.$ptr = $ptr; $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;
};
appendGeneralizedTime = function(dst, t) {
var $ptr, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, dst, err, ret, t, x$3, year, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
ret = sliceType.nil;
err = $ifaceNil;
_r = $clone(t, time.Time).Year(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
year = _r;
if (year < 0 || year > 9999) {
_tmp = sliceType.nil;
_tmp$1 = (x$3 = new StructuralError.ptr("cannot represent time as GeneralizedTime"), new x$3.constructor.elem(x$3));
ret = _tmp;
err = _tmp$1;
$s = -1; return [ret, err];
}
dst = appendFourDigits(dst, year);
_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; }
_tmp$2 = _r$1;
_tmp$3 = $ifaceNil;
ret = _tmp$2;
err = _tmp$3;
$s = -1; return [ret, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: appendGeneralizedTime }; } $f.$ptr = $ptr; $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;
};
appendTimeCommon = function(dst, t) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = $clone(t, time.Time).Date(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
month = _tuple[1];
day = _tuple[2];
dst = appendTwoDigits(dst, ((month >> 0)));
dst = appendTwoDigits(dst, day);
_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; }
_tuple$1 = _r$1;
hour = _tuple$1[0];
min = _tuple$1[1];
sec = _tuple$1[2];
dst = appendTwoDigits(dst, hour);
dst = appendTwoDigits(dst, min);
dst = appendTwoDigits(dst, sec);
_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; }
_tuple$2 = _r$2;
offset = _tuple$2[1];
if (((_q = offset / 60, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) === 0)) {
$s = -1; return $append(dst, 90);
} else if (offset > 0) {
dst = $append(dst, 43);
} else if (offset < 0) {
dst = $append(dst, 45);
}
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"));
if (offsetMinutes < 0) {
offsetMinutes = -offsetMinutes;
}
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")));
dst = appendTwoDigits(dst, (_r$3 = offsetMinutes % 60, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero")));
$s = -1; return dst;
/* */ } return; } if ($f === undefined) { $f = { $blk: appendTimeCommon }; } $f.$ptr = $ptr; $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;
};
stripTagAndLength = function(in$1) {
var $ptr, _tuple, err, in$1, offset;
_tuple = parseTagAndLength(in$1, 0);
offset = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return in$1;
}
return $subslice(in$1, offset);
};
makeBody = function(value, params) {
var $ptr, _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$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$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$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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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$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$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$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:
e = $ifaceNil;
err = $ifaceNil;
_1 = $clone(value, reflect.Value).Type();
/* */ if ($interfaceIsEqual(_1, (flagType))) { $s = 2; continue; }
/* */ if ($interfaceIsEqual(_1, (timeType))) { $s = 3; continue; }
/* */ if ($interfaceIsEqual(_1, (bitStringType))) { $s = 4; continue; }
/* */ if ($interfaceIsEqual(_1, (objectIdentifierType))) { $s = 5; continue; }
/* */ if ($interfaceIsEqual(_1, (bigIntType))) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if ($interfaceIsEqual(_1, (flagType))) { */ case 2:
_tmp = (bytesEncoder.nil);
_tmp$1 = $ifaceNil;
e = _tmp;
err = _tmp$1;
$s = -1; return [e, err];
/* } else if ($interfaceIsEqual(_1, (timeType))) { */ case 3:
_r = $clone(value, reflect.Value).Interface(); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
t = $clone($assertType(_r, time.Time), time.Time);
if (params.timeType === 24) { _v = true; $s = 11; continue s; }
_r$1 = outsideUTCRange($clone(t, time.Time)); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_v = _r$1; case 11:
/* */ if (_v) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (_v) { */ case 9:
_r$2 = makeGeneralizedTime($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; }
_tuple = _r$2;
e = _tuple[0];
err = _tuple[1];
$s = -1; return [e, err];
/* } */ case 10:
_r$3 = makeUTCTime($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; }
_tuple$1 = _r$3;
e = _tuple$1[0];
err = _tuple$1[1];
$s = -1; return [e, err];
/* } else if ($interfaceIsEqual(_1, (bitStringType))) { */ case 4:
_r$4 = $clone(value, reflect.Value).Interface(); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_tmp$2 = (x$3 = ($clone($assertType(_r$4, BitString), bitStringEncoder)), new x$3.constructor.elem(x$3));
_tmp$3 = $ifaceNil;
e = _tmp$2;
err = _tmp$3;
$s = -1; return [e, err];
/* } else if ($interfaceIsEqual(_1, (objectIdentifierType))) { */ case 5:
_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; }
_r$6 = makeObjectIdentifier((x$4 = $assertType(_r$5, ObjectIdentifier), $subslice(new sliceType$1(x$4.$array), x$4.$offset, x$4.$offset + x$4.$length))); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_tuple$2 = _r$6;
e = _tuple$2[0];
err = _tuple$2[1];
$s = -1; return [e, err];
/* } else if ($interfaceIsEqual(_1, (bigIntType))) { */ case 6:
_r$7 = $clone(value, reflect.Value).Interface(); /* */ $s = 18; case 18: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_r$8 = makeBigInt($assertType(_r$7, ptrType$1)); /* */ $s = 19; case 19: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_tuple$3 = _r$8;
e = _tuple$3[0];
err = _tuple$3[1];
$s = -1; return [e, err];
/* } */ case 7:
case 1:
v = value;
_2 = $clone(v, reflect.Value).Kind();
/* */ if (_2 === (1)) { $s = 21; continue; }
/* */ if ((_2 === (2)) || (_2 === (3)) || (_2 === (4)) || (_2 === (5)) || (_2 === (6))) { $s = 22; continue; }
/* */ if (_2 === (25)) { $s = 23; continue; }
/* */ if (_2 === (23)) { $s = 24; continue; }
/* */ if (_2 === (24)) { $s = 25; continue; }
/* */ $s = 26; continue;
/* if (_2 === (1)) { */ case 21:
if ($clone(v, reflect.Value).Bool()) {
_tmp$4 = byteFFEncoder;
_tmp$5 = $ifaceNil;
e = _tmp$4;
err = _tmp$5;
$s = -1; return [e, err];
}
_tmp$6 = byte00Encoder;
_tmp$7 = $ifaceNil;
e = _tmp$6;
err = _tmp$7;
$s = -1; return [e, err];
/* } else if ((_2 === (2)) || (_2 === (3)) || (_2 === (4)) || (_2 === (5)) || (_2 === (6))) { */ case 22:
_tmp$8 = ((x$5 = $clone(v, reflect.Value).Int(), new int64Encoder(x$5.$high, x$5.$low)));
_tmp$9 = $ifaceNil;
e = _tmp$8;
err = _tmp$9;
$s = -1; return [e, err];
/* } else if (_2 === (25)) { */ case 23:
t$1 = $clone(v, reflect.Value).Type();
i = 0;
/* while (true) { */ case 27:
_r$9 = t$1.NumField(); /* */ $s = 29; case 29: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
/* if (!(i < _r$9)) { break; } */ if(!(i < _r$9)) { $s = 28; continue; }
_r$10 = t$1.Field(i); /* */ $s = 32; case 32: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
/* */ if (!(_r$10.PkgPath === "")) { $s = 30; continue; }
/* */ $s = 31; continue;
/* if (!(_r$10.PkgPath === "")) { */ case 30:
_tmp$10 = $ifaceNil;
_tmp$11 = (x$6 = new StructuralError.ptr("struct contains unexported fields"), new x$6.constructor.elem(x$6));
e = _tmp$10;
err = _tmp$11;
$s = -1; return [e, err];
/* } */ case 31:
i = i + (1) >> 0;
/* } */ $s = 27; continue; case 28:
startingField = 0;
_r$11 = t$1.NumField(); /* */ $s = 33; case 33: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
n = _r$11;
if (n === 0) {
_tmp$12 = (bytesEncoder.nil);
_tmp$13 = $ifaceNil;
e = _tmp$12;
err = _tmp$13;
$s = -1; return [e, err];
}
_r$12 = t$1.Field(0); /* */ $s = 36; case 36: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
/* */ if ($interfaceIsEqual(_r$12.Type, rawContentsType)) { $s = 34; continue; }
/* */ $s = 35; continue;
/* if ($interfaceIsEqual(_r$12.Type, rawContentsType)) { */ case 34:
_r$13 = $clone(v, reflect.Value).Field(0); /* */ $s = 37; case 37: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
s = _r$13;
/* */ if ($clone(s, reflect.Value).Len() > 0) { $s = 38; continue; }
/* */ $s = 39; continue;
/* if ($clone(s, reflect.Value).Len() > 0) { */ case 38:
_r$14 = $clone(s, reflect.Value).Bytes(); /* */ $s = 40; case 40: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
bytes = _r$14;
_tmp$14 = ((x$7 = stripTagAndLength(bytes), $subslice(new bytesEncoder(x$7.$array), x$7.$offset, x$7.$offset + x$7.$length)));
_tmp$15 = $ifaceNil;
e = _tmp$14;
err = _tmp$15;
$s = -1; return [e, err];
/* } */ case 39:
startingField = 1;
/* } */ case 35:
n1 = n - startingField >> 0;
_3 = n1;
/* */ if (_3 === (0)) { $s = 42; continue; }
/* */ if (_3 === (1)) { $s = 43; continue; }
/* */ $s = 44; continue;
/* if (_3 === (0)) { */ case 42:
_tmp$16 = (bytesEncoder.nil);
_tmp$17 = $ifaceNil;
e = _tmp$16;
err = _tmp$17;
$s = -1; return [e, err];
/* } else if (_3 === (1)) { */ case 43:
_r$15 = $clone(v, reflect.Value).Field(startingField); /* */ $s = 46; case 46: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
_arg = $clone(_r$15, reflect.Value);
_r$16 = t$1.Field(startingField); /* */ $s = 47; case 47: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
_r$17 = new reflect.StructTag(_r$16.Tag).Get("asn1"); /* */ $s = 48; case 48: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
_r$18 = parseFieldParameters(_r$17); /* */ $s = 49; case 49: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
_arg$1 = $clone(_r$18, fieldParameters);
_r$19 = makeField(_arg, _arg$1); /* */ $s = 50; case 50: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
_tuple$4 = _r$19;
e = _tuple$4[0];
err = _tuple$4[1];
$s = -1; return [e, err];
/* } else { */ case 44:
m = $makeSlice(sliceType$3, n1);
i$1 = 0;
/* while (true) { */ case 51:
/* if (!(i$1 < n1)) { break; } */ if(!(i$1 < n1)) { $s = 52; continue; }
_r$20 = $clone(v, reflect.Value).Field(i$1 + startingField >> 0); /* */ $s = 53; case 53: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
_arg$2 = $clone(_r$20, reflect.Value);
_r$21 = t$1.Field(i$1 + startingField >> 0); /* */ $s = 54; case 54: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
_r$22 = new reflect.StructTag(_r$21.Tag).Get("asn1"); /* */ $s = 55; case 55: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
_r$23 = parseFieldParameters(_r$22); /* */ $s = 56; case 56: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
_arg$3 = $clone(_r$23, fieldParameters);
_r$24 = makeField(_arg$2, _arg$3); /* */ $s = 57; case 57: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
_tuple$5 = _r$24;
((i$1 < 0 || i$1 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + i$1] = _tuple$5[0]);
err = _tuple$5[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$18 = $ifaceNil;
_tmp$19 = err;
e = _tmp$18;
err = _tmp$19;
$s = -1; return [e, err];
}
i$1 = i$1 + (1) >> 0;
/* } */ $s = 51; continue; case 52:
_tmp$20 = ($subslice(new multiEncoder(m.$array), m.$offset, m.$offset + m.$length));
_tmp$21 = $ifaceNil;
e = _tmp$20;
err = _tmp$21;
$s = -1; return [e, err];
/* } */ case 45:
case 41:
$s = 26; continue;
/* } else if (_2 === (23)) { */ case 24:
sliceType$4 = $clone(v, reflect.Value).Type();
_r$25 = sliceType$4.Elem(); /* */ $s = 60; case 60: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
_r$26 = _r$25.Kind(); /* */ $s = 61; case 61: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
/* */ if (_r$26 === 8) { $s = 58; continue; }
/* */ $s = 59; continue;
/* if (_r$26 === 8) { */ case 58:
_r$27 = $clone(v, reflect.Value).Bytes(); /* */ $s = 62; case 62: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
_tmp$22 = ((x$8 = _r$27, $subslice(new bytesEncoder(x$8.$array), x$8.$offset, x$8.$offset + x$8.$length)));
_tmp$23 = $ifaceNil;
e = _tmp$22;
err = _tmp$23;
$s = -1; return [e, err];
/* } */ case 59:
fp = new fieldParameters.ptr(false, false, false, ptrType$3.nil, ptrType$4.nil, 0, 0, false, false);
l = $clone(v, reflect.Value).Len();
_4 = l;
/* */ if (_4 === (0)) { $s = 64; continue; }
/* */ if (_4 === (1)) { $s = 65; continue; }
/* */ $s = 66; continue;
/* if (_4 === (0)) { */ case 64:
_tmp$24 = (bytesEncoder.nil);
_tmp$25 = $ifaceNil;
e = _tmp$24;
err = _tmp$25;
$s = -1; return [e, err];
/* } else if (_4 === (1)) { */ case 65:
_r$28 = $clone(v, reflect.Value).Index(0); /* */ $s = 68; case 68: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; }
_r$29 = makeField($clone(_r$28, reflect.Value), $clone(fp, fieldParameters)); /* */ $s = 69; case 69: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; }
_tuple$6 = _r$29;
e = _tuple$6[0];
err = _tuple$6[1];
$s = -1; return [e, err];
/* } else { */ case 66:
m$1 = $makeSlice(sliceType$3, l);
i$2 = 0;
/* while (true) { */ case 70:
/* if (!(i$2 < l)) { break; } */ if(!(i$2 < l)) { $s = 71; continue; }
_r$30 = $clone(v, reflect.Value).Index(i$2); /* */ $s = 72; case 72: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; }
_r$31 = makeField($clone(_r$30, reflect.Value), $clone(fp, fieldParameters)); /* */ $s = 73; case 73: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; }
_tuple$7 = _r$31;
((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]);
err = _tuple$7[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$26 = $ifaceNil;
_tmp$27 = err;
e = _tmp$26;
err = _tmp$27;
$s = -1; return [e, err];
}
i$2 = i$2 + (1) >> 0;
/* } */ $s = 70; continue; case 71:
_tmp$28 = ($subslice(new multiEncoder(m$1.$array), m$1.$offset, m$1.$offset + m$1.$length));
_tmp$29 = $ifaceNil;
e = _tmp$28;
err = _tmp$29;
$s = -1; return [e, err];
/* } */ case 67:
case 63:
$s = 26; continue;
/* } else if (_2 === (24)) { */ case 25:
_5 = params.stringType;
/* */ if (_5 === (22)) { $s = 75; continue; }
/* */ if (_5 === (19)) { $s = 76; continue; }
/* */ $s = 77; continue;
/* if (_5 === (22)) { */ case 75:
_r$32 = $clone(v, reflect.Value).String(); /* */ $s = 79; case 79: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; }
_r$33 = makeIA5String(_r$32); /* */ $s = 80; case 80: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; }
_tuple$8 = _r$33;
e = _tuple$8[0];
err = _tuple$8[1];
$s = -1; return [e, err];
/* } else if (_5 === (19)) { */ case 76:
_r$34 = $clone(v, reflect.Value).String(); /* */ $s = 81; case 81: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; }
_r$35 = makePrintableString(_r$34); /* */ $s = 82; case 82: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; }
_tuple$9 = _r$35;
e = _tuple$9[0];
err = _tuple$9[1];
$s = -1; return [e, err];
/* } else { */ case 77:
_r$36 = $clone(v, reflect.Value).String(); /* */ $s = 83; case 83: if($c) { $c = false; _r$36 = _r$36.$blk(); } if (_r$36 && _r$36.$blk !== undefined) { break s; }
_r$37 = makeUTF8String(_r$36); /* */ $s = 84; case 84: if($c) { $c = false; _r$37 = _r$37.$blk(); } if (_r$37 && _r$37.$blk !== undefined) { break s; }
_tmp$30 = _r$37;
_tmp$31 = $ifaceNil;
e = _tmp$30;
err = _tmp$31;
$s = -1; return [e, err];
/* } */ case 78:
case 74:
/* } */ case 26:
case 20:
_tmp$32 = $ifaceNil;
_tmp$33 = (x$9 = new StructuralError.ptr("unknown Go type"), new x$9.constructor.elem(x$9));
e = _tmp$32;
err = _tmp$33;
$s = -1; return [e, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: makeBody }; } $f.$ptr = $ptr; $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$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$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$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;
};
makeField = function(v, params) {
var $ptr, _1, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _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$3, _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, 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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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$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; _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; 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:
e = $ifaceNil;
err = $ifaceNil;
/* */ if (!$clone(v, reflect.Value).IsValid()) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!$clone(v, reflect.Value).IsValid()) { */ case 1:
_tmp = $ifaceNil;
_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; }
_tmp$1 = _r;
e = _tmp;
err = _tmp$1;
$s = -1; return [e, err];
/* } */ case 2:
if (!($clone(v, reflect.Value).Kind() === 20)) { _v = false; $s = 6; continue s; }
_r$1 = $clone(v, reflect.Value).Type().NumMethod(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_v = _r$1 === 0; case 6:
/* */ if (_v) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (_v) { */ case 4:
_r$2 = $clone(v, reflect.Value).Elem(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$3 = makeField($clone(_r$2, reflect.Value), $clone(params, fieldParameters)); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple = _r$3;
e = _tuple[0];
err = _tuple[1];
$s = -1; return [e, err];
/* } */ case 5:
if (($clone(v, reflect.Value).Kind() === 23) && ($clone(v, reflect.Value).Len() === 0) && params.omitEmpty) {
_tmp$2 = (bytesEncoder.nil);
_tmp$3 = $ifaceNil;
e = _tmp$2;
err = _tmp$3;
$s = -1; return [e, err];
}
/* */ if (params.optional && !(params.defaultValue === ptrType$3.nil) && canHaveDefaultValue($clone(v, reflect.Value).Kind())) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (params.optional && !(params.defaultValue === ptrType$3.nil) && canHaveDefaultValue($clone(v, reflect.Value).Kind())) { */ case 10:
_r$4 = reflect.New($clone(v, reflect.Value).Type()); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_r$5 = $clone(_r$4, reflect.Value).Elem(); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
defaultValue = _r$5;
$clone(defaultValue, reflect.Value).SetInt(params.defaultValue.$get());
_r$6 = $clone(v, reflect.Value).Interface(); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_arg = _r$6;
_r$7 = $clone(defaultValue, reflect.Value).Interface(); /* */ $s = 17; case 17: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_arg$1 = _r$7;
_r$8 = reflect.DeepEqual(_arg, _arg$1); /* */ $s = 18; case 18: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
/* */ if (_r$8) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if (_r$8) { */ case 14:
_tmp$4 = (bytesEncoder.nil);
_tmp$5 = $ifaceNil;
e = _tmp$4;
err = _tmp$5;
$s = -1; return [e, err];
/* } */ case 15:
/* } */ case 11:
/* */ if (params.optional && params.defaultValue === ptrType$3.nil) { $s = 19; continue; }
/* */ $s = 20; continue;
/* if (params.optional && params.defaultValue === ptrType$3.nil) { */ case 19:
_r$9 = $clone(v, reflect.Value).Interface(); /* */ $s = 23; case 23: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
_arg$2 = _r$9;
_r$10 = reflect.Zero($clone(v, reflect.Value).Type()); /* */ $s = 24; case 24: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
_r$11 = $clone(_r$10, 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; }
_arg$3 = _r$11;
_r$12 = reflect.DeepEqual(_arg$2, _arg$3); /* */ $s = 26; case 26: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
/* */ if (_r$12) { $s = 21; continue; }
/* */ $s = 22; continue;
/* if (_r$12) { */ case 21:
_tmp$6 = (bytesEncoder.nil);
_tmp$7 = $ifaceNil;
e = _tmp$6;
err = _tmp$7;
$s = -1; return [e, err];
/* } */ case 22:
/* } */ case 20:
/* */ if ($interfaceIsEqual($clone(v, reflect.Value).Type(), rawValueType)) { $s = 27; continue; }
/* */ $s = 28; continue;
/* if ($interfaceIsEqual($clone(v, reflect.Value).Type(), rawValueType)) { */ case 27:
_r$13 = $clone(v, reflect.Value).Interface(); /* */ $s = 29; case 29: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
rv = $clone($assertType(_r$13, RawValue), RawValue);
if (!((rv.FullBytes.$length === 0))) {
_tmp$8 = ((x$3 = rv.FullBytes, $subslice(new bytesEncoder(x$3.$array), x$3.$offset, x$3.$offset + x$3.$length)));
_tmp$9 = $ifaceNil;
e = _tmp$8;
err = _tmp$9;
$s = -1; return [e, err];
}
t = new taggedEncoder.ptr(arrayType$1.zero(), $ifaceNil, $ifaceNil);
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)));
t.body = ((x$5 = rv.Bytes, $subslice(new bytesEncoder(x$5.$array), x$5.$offset, x$5.$offset + x$5.$length)));
_tmp$10 = t;
_tmp$11 = $ifaceNil;
e = _tmp$10;
err = _tmp$11;
$s = -1; return [e, err];
/* } */ case 28:
_r$14 = getUniversalType($clone(v, reflect.Value).Type()); /* */ $s = 30; case 30: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
_tuple$1 = _r$14;
tag = _tuple$1[0];
isCompound = _tuple$1[1];
ok = _tuple$1[2];
/* */ if (!ok) { $s = 31; continue; }
/* */ $s = 32; continue;
/* if (!ok) { */ case 31:
_tmp$12 = $ifaceNil;
_r$15 = fmt.Sprintf("unknown Go type: %v", new sliceType$2([$clone(v, reflect.Value).Type()])); /* */ $s = 33; case 33: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
_tmp$13 = (x$6 = new StructuralError.ptr(_r$15), new x$6.constructor.elem(x$6));
e = _tmp$12;
err = _tmp$13;
$s = -1; return [e, err];
/* } */ case 32:
class$1 = 0;
if (!((params.timeType === 0)) && !((tag === 23))) {
_tmp$14 = $ifaceNil;
_tmp$15 = (x$7 = new StructuralError.ptr("explicit time type given to non-time member"), new x$7.constructor.elem(x$7));
e = _tmp$14;
err = _tmp$15;
$s = -1; return [e, err];
}
if (!((params.stringType === 0)) && !((tag === 19))) {
_tmp$16 = $ifaceNil;
_tmp$17 = (x$8 = new StructuralError.ptr("explicit string type given to non-string member"), new x$8.constructor.elem(x$8));
e = _tmp$16;
err = _tmp$17;
$s = -1; return [e, err];
}
_1 = tag;
/* */ if (_1 === (19)) { $s = 35; continue; }
/* */ if (_1 === (23)) { $s = 36; continue; }
/* */ $s = 37; continue;
/* if (_1 === (19)) { */ case 35:
/* */ if (params.stringType === 0) { $s = 38; continue; }
/* */ $s = 39; continue;
/* if (params.stringType === 0) { */ case 38:
_r$16 = $clone(v, reflect.Value).String(); /* */ $s = 41; case 41: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
_ref = _r$16;
_i = 0;
/* while (true) { */ case 42:
/* if (!(_i < _ref.length)) { break; } */ if(!(_i < _ref.length)) { $s = 43; continue; }
_rune = $decodeRune(_ref, _i);
r = _rune[0];
/* */ if (r >= 128 || !isPrintable(((r << 24 >>> 24)))) { $s = 44; continue; }
/* */ $s = 45; continue;
/* if (r >= 128 || !isPrintable(((r << 24 >>> 24)))) { */ case 44:
_r$17 = $clone(v, reflect.Value).String(); /* */ $s = 48; case 48: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
_r$18 = utf8.ValidString(_r$17); /* */ $s = 49; case 49: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
/* */ if (!_r$18) { $s = 46; continue; }
/* */ $s = 47; continue;
/* if (!_r$18) { */ case 46:
_tmp$18 = $ifaceNil;
_tmp$19 = errors.New("asn1: string not valid UTF-8");
e = _tmp$18;
err = _tmp$19;
$s = -1; return [e, err];
/* } */ case 47:
tag = 12;
/* break; */ $s = 43; continue;
/* } */ case 45:
_i += _rune[1];
/* } */ $s = 42; continue; case 43:
$s = 40; continue;
/* } else { */ case 39:
tag = params.stringType;
/* } */ case 40:
$s = 37; continue;
/* } else if (_1 === (23)) { */ case 36:
if (params.timeType === 24) { _v$1 = true; $s = 52; continue s; }
_r$19 = $clone(v, reflect.Value).Interface(); /* */ $s = 53; case 53: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
_r$20 = outsideUTCRange($clone($assertType(_r$19, time.Time), time.Time)); /* */ $s = 54; case 54: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
_v$1 = _r$20; case 52:
/* */ if (_v$1) { $s = 50; continue; }
/* */ $s = 51; continue;
/* if (_v$1) { */ case 50:
tag = 24;
/* } */ case 51:
/* } */ case 37:
case 34:
if (params.set) {
if (!((tag === 16))) {
_tmp$20 = $ifaceNil;
_tmp$21 = (x$9 = new StructuralError.ptr("non sequence tagged as set"), new x$9.constructor.elem(x$9));
e = _tmp$20;
err = _tmp$21;
$s = -1; return [e, err];
}
tag = 17;
}
t$1 = new taggedEncoder.ptr(arrayType$1.zero(), $ifaceNil, $ifaceNil);
_r$21 = makeBody($clone(v, reflect.Value), $clone(params, fieldParameters)); /* */ $s = 55; case 55: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
_tuple$2 = _r$21;
t$1.body = _tuple$2[0];
err = _tuple$2[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$22 = $ifaceNil;
_tmp$23 = err;
e = _tmp$22;
err = _tmp$23;
$s = -1; return [e, err];
}
_r$22 = t$1.body.Len(); /* */ $s = 56; case 56: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
bodyLen = _r$22;
/* */ if (params.explicit) { $s = 57; continue; }
/* */ $s = 58; continue;
/* if (params.explicit) { */ case 57:
t$1.tag = ((x$10 = appendTagAndLength($subslice(new sliceType(t$1.scratch), 0, 0), new tagAndLength.ptr(class$1, tag, bodyLen, isCompound)), $subslice(new bytesEncoder(x$10.$array), x$10.$offset, x$10.$offset + x$10.$length)));
tt = new taggedEncoder.ptr(arrayType$1.zero(), $ifaceNil, $ifaceNil);
tt.body = t$1;
_arg$4 = $subslice(new sliceType(tt.scratch), 0, 0);
_r$23 = t$1.tag.Len(); /* */ $s = 59; case 59: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
_arg$5 = new tagAndLength.ptr(2, params.tag.$get(), bodyLen + _r$23 >> 0, true);
_r$24 = appendTagAndLength(_arg$4, _arg$5); /* */ $s = 60; case 60: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
tt.tag = ((x$11 = _r$24, $subslice(new bytesEncoder(x$11.$array), x$11.$offset, x$11.$offset + x$11.$length)));
_tmp$24 = tt;
_tmp$25 = $ifaceNil;
e = _tmp$24;
err = _tmp$25;
$s = -1; return [e, err];
/* } */ case 58:
if (!(params.tag === ptrType$4.nil)) {
tag = params.tag.$get();
class$1 = 2;
}
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)));
_tmp$26 = t$1;
_tmp$27 = $ifaceNil;
e = _tmp$26;
err = _tmp$27;
$s = -1; return [e, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: makeField }; } $f.$ptr = $ptr; $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._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$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._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.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;
};
Marshal = function(val) {
var $ptr, _r, _r$1, _r$2, _tuple, b, e, err, val, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = reflect.ValueOf(val); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r$1 = makeField($clone(_r, reflect.Value), new fieldParameters.ptr(false, false, false, ptrType$3.nil, ptrType$4.nil, 0, 0, false, false)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
e = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [sliceType.nil, err];
}
_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; }
b = $makeSlice(sliceType, _r$2);
$r = e.Encode(b); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return [b, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Marshal }; } $f.$ptr = $ptr; $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.val = val; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Marshal = Marshal;
StructuralError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
SyntaxError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
BitString.methods = [{prop: "At", name: "At", pkg: "", typ: $funcType([$Int], [$Int], false)}, {prop: "RightAlign", name: "RightAlign", pkg: "", typ: $funcType([], [sliceType], false)}];
ObjectIdentifier.methods = [{prop: "Equal", name: "Equal", pkg: "", typ: $funcType([ObjectIdentifier], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
byteEncoder.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Encode", name: "Encode", pkg: "", typ: $funcType([sliceType], [], false)}];
bytesEncoder.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Encode", name: "Encode", pkg: "", typ: $funcType([sliceType], [], false)}];
stringEncoder.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Encode", name: "Encode", pkg: "", typ: $funcType([sliceType], [], false)}];
multiEncoder.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Encode", name: "Encode", pkg: "", typ: $funcType([sliceType], [], false)}];
ptrType$5.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Encode", name: "Encode", pkg: "", typ: $funcType([sliceType], [], false)}];
int64Encoder.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Encode", name: "Encode", pkg: "", typ: $funcType([sliceType], [], false)}];
bitStringEncoder.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Encode", name: "Encode", pkg: "", typ: $funcType([sliceType], [], false)}];
oidEncoder.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Encode", name: "Encode", pkg: "", typ: $funcType([sliceType], [], false)}];
StructuralError.init("", [{prop: "Msg", name: "Msg", exported: true, typ: $String, tag: ""}]);
SyntaxError.init("", [{prop: "Msg", name: "Msg", exported: true, typ: $String, tag: ""}]);
BitString.init("", [{prop: "Bytes", name: "Bytes", exported: true, typ: sliceType, tag: ""}, {prop: "BitLength", name: "BitLength", exported: true, typ: $Int, tag: ""}]);
ObjectIdentifier.init($Int);
RawValue.init("", [{prop: "Class", name: "Class", exported: true, typ: $Int, tag: ""}, {prop: "Tag", name: "Tag", exported: true, typ: $Int, tag: ""}, {prop: "IsCompound", name: "IsCompound", exported: true, typ: $Bool, tag: ""}, {prop: "Bytes", name: "Bytes", exported: true, typ: sliceType, tag: ""}, {prop: "FullBytes", name: "FullBytes", exported: true, typ: sliceType, tag: ""}]);
RawContent.init($Uint8);
tagAndLength.init("encoding/asn1", [{prop: "class$0", name: "class", exported: false, typ: $Int, tag: ""}, {prop: "tag", name: "tag", exported: false, typ: $Int, tag: ""}, {prop: "length", name: "length", exported: false, typ: $Int, tag: ""}, {prop: "isCompound", name: "isCompound", exported: false, typ: $Bool, tag: ""}]);
fieldParameters.init("encoding/asn1", [{prop: "optional", name: "optional", exported: false, typ: $Bool, tag: ""}, {prop: "explicit", name: "explicit", exported: false, typ: $Bool, tag: ""}, {prop: "application", name: "application", exported: false, typ: $Bool, tag: ""}, {prop: "defaultValue", name: "defaultValue", exported: false, typ: ptrType$3, tag: ""}, {prop: "tag", name: "tag", exported: false, typ: ptrType$4, tag: ""}, {prop: "stringType", name: "stringType", exported: false, typ: $Int, tag: ""}, {prop: "timeType", name: "timeType", exported: false, typ: $Int, tag: ""}, {prop: "set", name: "set", exported: false, typ: $Bool, tag: ""}, {prop: "omitEmpty", name: "omitEmpty", exported: false, typ: $Bool, tag: ""}]);
encoder.init([{prop: "Encode", name: "Encode", pkg: "", typ: $funcType([sliceType], [], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}]);
bytesEncoder.init($Uint8);
multiEncoder.init(encoder);
taggedEncoder.init("encoding/asn1", [{prop: "scratch", name: "scratch", exported: false, typ: arrayType$1, tag: ""}, {prop: "tag", name: "tag", exported: false, typ: encoder, tag: ""}, {prop: "body", name: "body", exported: false, typ: encoder, tag: ""}]);
bitStringEncoder.init("", [{prop: "Bytes", name: "Bytes", exported: true, typ: sliceType, tag: ""}, {prop: "BitLength", name: "BitLength", exported: true, typ: $Int, tag: ""}]);
oidEncoder.init($Int);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = big.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = reflect.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strconv.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strings.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = time.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = utf8.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
bigOne = big.NewInt(new $Int64(0, 1));
bitStringType = reflect.TypeOf((x = new BitString.ptr(sliceType.nil, 0), new x.constructor.elem(x)));
objectIdentifierType = reflect.TypeOf(new ObjectIdentifier([]));
enumeratedType = reflect.TypeOf(new Enumerated(0));
flagType = reflect.TypeOf(new Flag(false));
timeType = reflect.TypeOf((x$1 = new time.Time.ptr(new $Int64(0, 0), 0, ptrType.nil), new x$1.constructor.elem(x$1)));
rawValueType = reflect.TypeOf((x$2 = new RawValue.ptr(0, 0, false, sliceType.nil, sliceType.nil), new x$2.constructor.elem(x$2)));
rawContentsType = reflect.TypeOf((RawContent.nil));
bigIntType = reflect.TypeOf(new big.Int.ptr(false, big.nat.nil));
byte00Encoder = new byteEncoder(0);
byteFFEncoder = new byteEncoder(255);
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["crypto/ecdsa"] = (function() {
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;
crypto = $packages["crypto"];
aes = $packages["crypto/aes"];
cipher = $packages["crypto/cipher"];
elliptic = $packages["crypto/elliptic"];
sha512 = $packages["crypto/sha512"];
asn1 = $packages["encoding/asn1"];
errors = $packages["errors"];
io = $packages["io"];
big = $packages["math/big"];
invertible = $pkg.invertible = $newType(8, $kindInterface, "ecdsa.invertible", true, "crypto/ecdsa", false, null);
combinedMult = $pkg.combinedMult = $newType(8, $kindInterface, "ecdsa.combinedMult", true, "crypto/ecdsa", false, null);
PublicKey = $pkg.PublicKey = $newType(0, $kindStruct, "ecdsa.PublicKey", true, "crypto/ecdsa", true, function(Curve_, X_, Y_) {
this.$val = this;
if (arguments.length === 0) {
this.Curve = $ifaceNil;
this.X = ptrType.nil;
this.Y = ptrType.nil;
return;
}
this.Curve = Curve_;
this.X = X_;
this.Y = Y_;
});
PrivateKey = $pkg.PrivateKey = $newType(0, $kindStruct, "ecdsa.PrivateKey", true, "crypto/ecdsa", true, function(PublicKey_, D_) {
this.$val = this;
if (arguments.length === 0) {
this.PublicKey = new PublicKey.ptr($ifaceNil, ptrType.nil, ptrType.nil);
this.D = ptrType.nil;
return;
}
this.PublicKey = PublicKey_;
this.D = D_;
});
ecdsaSignature = $pkg.ecdsaSignature = $newType(0, $kindStruct, "ecdsa.ecdsaSignature", true, "crypto/ecdsa", false, function(R_, S_) {
this.$val = this;
if (arguments.length === 0) {
this.R = ptrType.nil;
this.S = ptrType.nil;
return;
}
this.R = R_;
this.S = S_;
});
zr = $pkg.zr = $newType(0, $kindStruct, "ecdsa.zr", true, "crypto/ecdsa", false, function(Reader_) {
this.$val = this;
if (arguments.length === 0) {
this.Reader = $ifaceNil;
return;
}
this.Reader = Reader_;
});
sliceType = $sliceType($Uint8);
ptrType = $ptrType(big.Int);
ptrType$1 = $ptrType(PrivateKey);
ptrType$2 = $ptrType(zr);
PrivateKey.ptr.prototype.Public = function() {
var $ptr, priv;
priv = this;
return priv.PublicKey;
};
PrivateKey.prototype.Public = function() { return this.$val.Public(); };
PrivateKey.ptr.prototype.Sign = function(rand, msg, opts) {
var $ptr, _r, _r$1, _tuple, err, msg, opts, priv, r, rand, s, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; err = $f.err; msg = $f.msg; 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:
priv = this;
_r = Sign(rand, priv, msg); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
r = _tuple[0];
s = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [sliceType.nil, err];
}
_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; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: PrivateKey.ptr.prototype.Sign }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.msg = msg; $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;
};
PrivateKey.prototype.Sign = function(rand, msg, opts) { return this.$val.Sign(rand, msg, opts); };
randFieldElement = function(c, rand) {
var $ptr, _q, _r, _r$1, _r$2, _tuple, b, c, err, k, n, params, rand, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
k = ptrType.nil;
err = $ifaceNil;
_r = c.Params(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
params = _r;
b = $makeSlice(sliceType, ((_q = params.BitSize / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) + 8 >> 0));
_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; }
_tuple = _r$1;
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [k, err];
}
k = new big.Int.ptr(false, big.nat.nil).SetBytes(b);
n = new big.Int.ptr(false, big.nat.nil).Sub(params.N, one);
_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; }
_r$2;
k.Add(k, one);
$s = -1; return [k, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: randFieldElement }; } $f.$ptr = $ptr; $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;
};
hashToInt = function(hash, c) {
var $ptr, _q, _r, _r$1, c, excess, hash, orderBits, orderBytes, ret, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = c.Params(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_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; }
orderBits = _r$1;
orderBytes = (_q = ((orderBits + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
if (hash.$length > orderBytes) {
hash = $subslice(hash, 0, orderBytes);
}
ret = new big.Int.ptr(false, big.nat.nil).SetBytes(hash);
excess = ($imul(hash.$length, 8)) - orderBits >> 0;
if (excess > 0) {
ret.Rsh(ret, ((excess >>> 0)));
}
$s = -1; return ret;
/* */ } return; } if ($f === undefined) { $f = { $blk: hashToInt }; } $f.$ptr = $ptr; $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;
};
fermatInverse = function(k, N) {
var $ptr, N, _r, k, nMinus2, two, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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:
two = big.NewInt(new $Int64(0, 2));
nMinus2 = new big.Int.ptr(false, big.nat.nil).Sub(N, two);
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: fermatInverse }; } $f.$ptr = $ptr; $f.N = N; $f._r = _r; $f.k = k; $f.nMinus2 = nMinus2; $f.two = two; $f.$s = $s; $f.$r = $r; return $f;
};
Sign = function(rand, priv, hash) {
var $ptr, 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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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:
r = ptrType.nil;
s = ptrType.nil;
err = $ifaceNil;
_r = priv.PublicKey.Curve.Params(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
entropylen = (_q = ((_r.BitSize + 7 >> 0)) / 16, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
if (entropylen > 32) {
entropylen = 32;
}
entropy = $makeSlice(sliceType, entropylen);
_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; }
_tuple = _r$1;
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [r, s, err];
}
md = sha512.New();
_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; }
_r$2;
_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; }
_r$3;
_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; }
_r$4;
_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; }
key = $subslice(_r$5, 0, 32);
_tuple$1 = aes.NewCipher(key);
block = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = ptrType.nil;
_tmp$1 = ptrType.nil;
_tmp$2 = err;
r = _tmp;
s = _tmp$1;
err = _tmp$2;
$s = -1; return [r, s, err];
}
_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; }
csprng = new cipher.StreamReader.ptr(_r$6, zeroReader);
c = priv.PublicKey.Curve;
_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; }
N = _r$7.N;
if (N.Sign() === 0) {
_tmp$3 = ptrType.nil;
_tmp$4 = ptrType.nil;
_tmp$5 = errZeroParam;
r = _tmp$3;
s = _tmp$4;
err = _tmp$5;
$s = -1; return [r, s, err];
}
_tmp$6 = ptrType.nil;
_tmp$7 = ptrType.nil;
k = _tmp$6;
kInv = _tmp$7;
/* while (true) { */ case 9:
/* while (true) { */ case 11:
_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; }
_tuple$2 = _r$8;
k = _tuple$2[0];
err = _tuple$2[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
r = ptrType.nil;
$s = -1; return [r, s, err];
}
_tuple$3 = $assertType(priv.PublicKey.Curve, invertible, true);
in$1 = _tuple$3[0];
ok = _tuple$3[1];
/* */ if (ok) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if (ok) { */ case 14:
_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; }
kInv = _r$9;
$s = 16; continue;
/* } else { */ case 15:
_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; }
kInv = _r$10;
/* } */ case 16:
_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; }
_tuple$4 = _r$11;
r = _tuple$4[0];
_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; }
_r$12;
if (!((r.Sign() === 0))) {
/* break; */ $s = 12; continue;
}
/* } */ $s = 11; continue; case 12:
_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; }
e = _r$13;
s = new big.Int.ptr(false, big.nat.nil).Mul(priv.D, r);
s.Add(s, e);
s.Mul(s, kInv);
_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; }
_r$14;
if (!((s.Sign() === 0))) {
/* break; */ $s = 10; continue;
}
/* } */ $s = 9; continue; case 10:
$s = -1; return [r, s, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Sign }; } $f.$ptr = $ptr; $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;
};
$pkg.Sign = Sign;
Verify = function(pub, hash, r, s) {
var $ptr, 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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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:
c = pub.Curve;
_r = c.Params(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
N = _r.N;
if (r.Sign() <= 0 || s.Sign() <= 0) {
$s = -1; return false;
}
if (r.Cmp(N) >= 0 || s.Cmp(N) >= 0) {
$s = -1; return false;
}
_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; }
e = _r$1;
w = ptrType.nil;
_tuple = $assertType(c, invertible, true);
in$1 = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (ok) { */ case 3:
_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; }
w = _r$2;
$s = 5; continue;
/* } else { */ case 4:
_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; }
w = _r$3;
/* } */ case 5:
u1 = e.Mul(e, w);
_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; }
_r$4;
u2 = w.Mul(r, w);
_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; }
_r$5;
_tmp = ptrType.nil;
_tmp$1 = ptrType.nil;
x = _tmp;
y = _tmp$1;
_tuple$1 = $assertType(c, combinedMult, true);
opt = _tuple$1[0];
ok$1 = _tuple$1[1];
/* */ if (ok$1) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (ok$1) { */ case 10:
_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; }
_tuple$2 = _r$6;
x = _tuple$2[0];
y = _tuple$2[1];
$s = 12; continue;
/* } else { */ case 11:
_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; }
_tuple$3 = _r$7;
x1 = _tuple$3[0];
y1 = _tuple$3[1];
_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; }
_tuple$4 = _r$8;
x2 = _tuple$4[0];
y2 = _tuple$4[1];
_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; }
_tuple$5 = _r$9;
x = _tuple$5[0];
y = _tuple$5[1];
/* } */ case 12:
if ((x.Sign() === 0) && (y.Sign() === 0)) {
$s = -1; return false;
}
_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; }
_r$10;
$s = -1; return x.Cmp(r) === 0;
/* */ } return; } if ($f === undefined) { $f = { $blk: Verify }; } $f.$ptr = $ptr; $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;
};
$pkg.Verify = Verify;
zr.ptr.prototype.Read = function(dst) {
var $ptr, _i, _ref, _tmp, _tmp$1, dst, err, i, n, z;
n = 0;
err = $ifaceNil;
z = this;
_ref = dst;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
((i < 0 || i >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + i] = 0);
_i++;
}
_tmp = dst.$length;
_tmp$1 = $ifaceNil;
n = _tmp;
err = _tmp$1;
return [n, err];
};
zr.prototype.Read = function(dst) { return this.$val.Read(dst); };
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)}];
ptrType$2.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}];
invertible.init([{prop: "Inverse", name: "Inverse", pkg: "", typ: $funcType([ptrType], [ptrType], false)}]);
combinedMult.init([{prop: "CombinedMult", name: "CombinedMult", pkg: "", typ: $funcType([ptrType, ptrType, sliceType, sliceType], [ptrType, ptrType], false)}]);
PublicKey.init("", [{prop: "Curve", name: "", exported: true, typ: elliptic.Curve, tag: ""}, {prop: "X", name: "X", exported: true, typ: ptrType, tag: ""}, {prop: "Y", name: "Y", exported: true, typ: ptrType, tag: ""}]);
PrivateKey.init("", [{prop: "PublicKey", name: "", exported: true, typ: PublicKey, tag: ""}, {prop: "D", name: "D", exported: true, typ: ptrType, tag: ""}]);
ecdsaSignature.init("", [{prop: "R", name: "R", exported: true, typ: ptrType, tag: ""}, {prop: "S", name: "S", exported: true, typ: ptrType, tag: ""}]);
zr.init("", [{prop: "Reader", name: "", exported: true, typ: io.Reader, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = crypto.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = aes.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = cipher.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = elliptic.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sha512.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = asn1.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = errors.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = big.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
one = new big.Int.ptr(false, big.nat.nil).SetInt64(new $Int64(0, 1));
errZeroParam = errors.New("zero parameter");
zeroReader = new zr.ptr($ifaceNil);
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["crypto/hmac"] = (function() {
var $pkg = {}, $init, subtle, hash, hmac, sliceType, ptrType, New;
subtle = $packages["crypto/subtle"];
hash = $packages["hash"];
hmac = $pkg.hmac = $newType(0, $kindStruct, "hmac.hmac", true, "crypto/hmac", false, function(size_, blocksize_, opad_, ipad_, outer_, inner_) {
this.$val = this;
if (arguments.length === 0) {
this.size = 0;
this.blocksize = 0;
this.opad = sliceType.nil;
this.ipad = sliceType.nil;
this.outer = $ifaceNil;
this.inner = $ifaceNil;
return;
}
this.size = size_;
this.blocksize = blocksize_;
this.opad = opad_;
this.ipad = ipad_;
this.outer = outer_;
this.inner = inner_;
});
sliceType = $sliceType($Uint8);
ptrType = $ptrType(hmac);
hmac.ptr.prototype.Sum = function(in$1) {
var $ptr, _r, _r$1, _r$2, _r$3, h, in$1, origLen, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
h = this;
origLen = in$1.$length;
_r = h.inner.Sum(in$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
in$1 = _r;
$r = h.outer.Reset(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_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; }
_r$1;
_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; }
_r$2;
_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; }
$s = -1; return _r$3;
/* */ } return; } if ($f === undefined) { $f = { $blk: hmac.ptr.prototype.Sum }; } $f.$ptr = $ptr; $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;
};
hmac.prototype.Sum = function(in$1) { return this.$val.Sum(in$1); };
hmac.ptr.prototype.Write = function(p) {
var $ptr, _r, _tuple, err, h, n, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
h = this;
_r = h.inner.Write(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: hmac.ptr.prototype.Write }; } $f.$ptr = $ptr; $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;
};
hmac.prototype.Write = function(p) { return this.$val.Write(p); };
hmac.ptr.prototype.Size = function() {
var $ptr, h;
h = this;
return h.size;
};
hmac.prototype.Size = function() { return this.$val.Size(); };
hmac.ptr.prototype.BlockSize = function() {
var $ptr, h;
h = this;
return h.blocksize;
};
hmac.prototype.BlockSize = function() { return this.$val.BlockSize(); };
hmac.ptr.prototype.Reset = function() {
var $ptr, _r, h, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; h = $f.h; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
h = this;
$r = h.inner.Reset(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r = h.inner.Write(h.ipad); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: hmac.ptr.prototype.Reset }; } $f.$ptr = $ptr; $f._r = _r; $f.h = h; $f.$s = $s; $f.$r = $r; return $f;
};
hmac.prototype.Reset = function() { return this.$val.Reset(); };
New = function(h, key) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
hm = new hmac.ptr(0, 0, sliceType.nil, sliceType.nil, $ifaceNil, $ifaceNil);
_r = h(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
hm.outer = _r;
_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; }
hm.inner = _r$1;
_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; }
hm.size = _r$2;
_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; }
hm.blocksize = _r$3;
hm.ipad = $makeSlice(sliceType, hm.blocksize);
hm.opad = $makeSlice(sliceType, hm.blocksize);
/* */ if (key.$length > hm.blocksize) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (key.$length > hm.blocksize) { */ case 5:
_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; }
_r$4;
_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; }
key = _r$5;
/* } */ case 6:
$copySlice(hm.ipad, key);
$copySlice(hm.opad, key);
_ref = hm.ipad;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
(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)));
_i++;
}
_ref$1 = hm.opad;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
i$1 = _i$1;
(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)));
_i$1++;
}
_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; }
_r$6;
$s = -1; return hm;
/* */ } return; } if ($f === undefined) { $f = { $blk: New }; } $f.$ptr = $ptr; $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;
};
$pkg.New = New;
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)}];
hmac.init("crypto/hmac", [{prop: "size", name: "size", exported: false, typ: $Int, tag: ""}, {prop: "blocksize", name: "blocksize", exported: false, typ: $Int, tag: ""}, {prop: "opad", name: "opad", exported: false, typ: sliceType, tag: ""}, {prop: "ipad", name: "ipad", exported: false, typ: sliceType, tag: ""}, {prop: "outer", name: "outer", exported: false, typ: hash.Hash, tag: ""}, {prop: "inner", name: "inner", exported: false, typ: hash.Hash, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = subtle.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = hash.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["crypto/internal/cipherhw"] = (function() {
var $pkg = {}, $init, AESGCMSupport;
AESGCMSupport = function() {
var $ptr;
return false;
};
$pkg.AESGCMSupport = AESGCMSupport;
$init = function() {
$pkg.$init = function() {};
/* */ 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:
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["crypto/md5"] = (function() {
var $pkg = {}, $init, crypto, hash, runtime, digest, arrayType, arrayType$1, sliceType, arrayType$2, arrayType$3, arrayType$4, ptrType, ptrType$1, littleEndian, block, init, New, init$1, blockGeneric;
crypto = $packages["crypto"];
hash = $packages["hash"];
runtime = $packages["runtime"];
digest = $pkg.digest = $newType(0, $kindStruct, "md5.digest", true, "crypto/md5", false, function(s_, x_, nx_, len_) {
this.$val = this;
if (arguments.length === 0) {
this.s = arrayType.zero();
this.x = arrayType$1.zero();
this.nx = 0;
this.len = new $Uint64(0, 0);
return;
}
this.s = s_;
this.x = x_;
this.nx = nx_;
this.len = len_;
});
arrayType = $arrayType($Uint32, 4);
arrayType$1 = $arrayType($Uint8, 64);
sliceType = $sliceType($Uint8);
arrayType$2 = $arrayType($Uint8, 16);
arrayType$3 = $arrayType($Uint8, 4);
arrayType$4 = $arrayType($Uint32, 16);
ptrType = $ptrType(arrayType$4);
ptrType$1 = $ptrType(digest);
init = function() {
var $ptr;
crypto.RegisterHash(2, New);
};
digest.ptr.prototype.Reset = function() {
var $ptr, d;
d = this;
d.s[0] = 1732584193;
d.s[1] = 4023233417;
d.s[2] = 2562383102;
d.s[3] = 271733878;
d.nx = 0;
d.len = new $Uint64(0, 0);
};
digest.prototype.Reset = function() { return this.$val.Reset(); };
New = function() {
var $ptr, d;
d = new digest.ptr(arrayType.zero(), arrayType$1.zero(), 0, new $Uint64(0, 0));
d.Reset();
return d;
};
$pkg.New = New;
digest.ptr.prototype.Size = function() {
var $ptr, d;
d = this;
return 16;
};
digest.prototype.Size = function() { return this.$val.Size(); };
digest.ptr.prototype.BlockSize = function() {
var $ptr, d;
d = this;
return 64;
};
digest.prototype.BlockSize = function() { return this.$val.BlockSize(); };
digest.ptr.prototype.Write = function(p) {
var $ptr, d, err, n, n$1, nn, p, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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:
nn = 0;
err = $ifaceNil;
d = this;
nn = p.$length;
d.len = (x = d.len, x$1 = (new $Uint64(0, nn)), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low));
/* */ if (d.nx > 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (d.nx > 0) { */ case 1:
n = $copySlice($subslice(new sliceType(d.x), d.nx), p);
d.nx = d.nx + (n) >> 0;
/* */ if (d.nx === 64) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (d.nx === 64) { */ case 3:
$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; }
d.nx = 0;
/* } */ case 4:
p = $subslice(p, n);
/* } */ case 2:
/* */ if (p.$length >= 64) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (p.$length >= 64) { */ case 6:
n$1 = (p.$length & ~63) >> 0;
$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; }
p = $subslice(p, n$1);
/* } */ case 7:
if (p.$length > 0) {
d.nx = $copySlice(new sliceType(d.x), p);
}
$s = -1; return [nn, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.Write }; } $f.$ptr = $ptr; $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;
};
digest.prototype.Write = function(p) { return this.$val.Write(p); };
digest.ptr.prototype.Sum = function(in$1) {
var $ptr, _r, d, d0, hash$1, in$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
d0 = this;
d = $clone(d0, digest);
_r = d.checkSum(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
hash$1 = $clone(_r, arrayType$2);
$s = -1; return $appendSlice(in$1, new sliceType(hash$1));
/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.Sum }; } $f.$ptr = $ptr; $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;
};
digest.prototype.Sum = function(in$1) { return this.$val.Sum(in$1); };
digest.ptr.prototype.checkSum = function() {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
d = this;
len = d.len;
tmp = arrayType$1.zero();
tmp[0] = 128;
/* */ if ((x = $div64(len, new $Uint64(0, 64), true), (x.$high < 0 || (x.$high === 0 && x.$low < 56)))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if ((x = $div64(len, new $Uint64(0, 64), true), (x.$high < 0 || (x.$high === 0 && x.$low < 56)))) { */ case 1:
_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; }
_r;
$s = 3; continue;
/* } else { */ case 2:
_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; }
_r$1;
/* } */ case 3:
len = $shiftLeft64(len, (3));
i = 0;
while (true) {
if (!(i < 8)) { break; }
((i < 0 || i >= tmp.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp[i] = (($shiftRightUint64(len, ((8 * i >>> 0))).$low << 24 >>> 24)));
i = i + (1) >>> 0;
}
_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; }
_r$2;
if (!((d.nx === 0))) {
$panic(new $String("d.nx != 0"));
}
digest$1 = arrayType$2.zero();
_ref = d.s;
_i = 0;
while (true) {
if (!(_i < 4)) { break; }
i$1 = _i;
s = ((_i < 0 || _i >= _ref.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref[_i]);
(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))));
(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))));
(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))));
(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))));
_i++;
}
$s = -1; return digest$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.checkSum }; } $f.$ptr = $ptr; $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;
};
digest.prototype.checkSum = function() { return this.$val.checkSum(); };
init$1 = function() {
var $ptr, x, y;
x = 67305985;
y = $toNativeArray($kindUint8, [1, 2, 3, 4]);
littleEndian = $equal(x, y, arrayType$3);
};
blockGeneric = function(dig, p) {
var $ptr, 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;
a = dig.s[0];
b = dig.s[1];
c = dig.s[2];
d = dig.s[3];
X = ptrType.nil;
xbuf = arrayType$4.zero();
while (true) {
if (!(p.$length >= 64)) { break; }
_tmp = a;
_tmp$1 = b;
_tmp$2 = c;
_tmp$3 = d;
aa = _tmp;
bb = _tmp$1;
cc = _tmp$2;
dd = _tmp$3;
if (false) {
X = (($sliceToArray(p)));
} else if (littleEndian && ((((($sliceToArray(p))) & 3) >>> 0) === 0)) {
X = (($sliceToArray(p)));
} else {
X = xbuf;
j = 0;
i = 0;
while (true) {
if (!(i < 16)) { break; }
(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)));
j = j + (4) >> 0;
i = i + (1) >> 0;
}
}
a = a + ((((((((((((c ^ d) >>> 0)) & b) >>> 0)) ^ d) >>> 0)) + (X.nilCheck, X[0]) >>> 0) + 3614090360 >>> 0)) >>> 0;
a = (((a << 7 >>> 0) | (a >>> 25 >>> 0)) >>> 0) + b >>> 0;
d = d + ((((((((((((b ^ c) >>> 0)) & a) >>> 0)) ^ c) >>> 0)) + (X.nilCheck, X[1]) >>> 0) + 3905402710 >>> 0)) >>> 0;
d = (((d << 12 >>> 0) | (d >>> 20 >>> 0)) >>> 0) + a >>> 0;
c = c + ((((((((((((a ^ b) >>> 0)) & d) >>> 0)) ^ b) >>> 0)) + (X.nilCheck, X[2]) >>> 0) + 606105819 >>> 0)) >>> 0;
c = (((c << 17 >>> 0) | (c >>> 15 >>> 0)) >>> 0) + d >>> 0;
b = b + ((((((((((((d ^ a) >>> 0)) & c) >>> 0)) ^ a) >>> 0)) + (X.nilCheck, X[3]) >>> 0) + 3250441966 >>> 0)) >>> 0;
b = (((b << 22 >>> 0) | (b >>> 10 >>> 0)) >>> 0) + c >>> 0;
a = a + ((((((((((((c ^ d) >>> 0)) & b) >>> 0)) ^ d) >>> 0)) + (X.nilCheck, X[4]) >>> 0) + 4118548399 >>> 0)) >>> 0;
a = (((a << 7 >>> 0) | (a >>> 25 >>> 0)) >>> 0) + b >>> 0;
d = d + ((((((((((((b ^ c) >>> 0)) & a) >>> 0)) ^ c) >>> 0)) + (X.nilCheck, X[5]) >>> 0) + 1200080426 >>> 0)) >>> 0;
d = (((d << 12 >>> 0) | (d >>> 20 >>> 0)) >>> 0) + a >>> 0;
c = c + ((((((((((((a ^ b) >>> 0)) & d) >>> 0)) ^ b) >>> 0)) + (X.nilCheck, X[6]) >>> 0) + 2821735955 >>> 0)) >>> 0;
c = (((c << 17 >>> 0) | (c >>> 15 >>> 0)) >>> 0) + d >>> 0;
b = b + ((((((((((((d ^ a) >>> 0)) & c) >>> 0)) ^ a) >>> 0)) + (X.nilCheck, X[7]) >>> 0) + 4249261313 >>> 0)) >>> 0;
b = (((b << 22 >>> 0) | (b >>> 10 >>> 0)) >>> 0) + c >>> 0;
a = a + ((((((((((((c ^ d) >>> 0)) & b) >>> 0)) ^ d) >>> 0)) + (X.nilCheck, X[8]) >>> 0) + 1770035416 >>> 0)) >>> 0;
a = (((a << 7 >>> 0) | (a >>> 25 >>> 0)) >>> 0) + b >>> 0;
d = d + ((((((((((((b ^ c) >>> 0)) & a) >>> 0)) ^ c) >>> 0)) + (X.nilCheck, X[9]) >>> 0) + 2336552879 >>> 0)) >>> 0;
d = (((d << 12 >>> 0) | (d >>> 20 >>> 0)) >>> 0) + a >>> 0;
c = c + ((((((((((((a ^ b) >>> 0)) & d) >>> 0)) ^ b) >>> 0)) + (X.nilCheck, X[10]) >>> 0) + 4294925233 >>> 0)) >>> 0;
c = (((c << 17 >>> 0) | (c >>> 15 >>> 0)) >>> 0) + d >>> 0;
b = b + ((((((((((((d ^ a) >>> 0)) & c) >>> 0)) ^ a) >>> 0)) + (X.nilCheck, X[11]) >>> 0) + 2304563134 >>> 0)) >>> 0;
b = (((b << 22 >>> 0) | (b >>> 10 >>> 0)) >>> 0) + c >>> 0;
a = a + ((((((((((((c ^ d) >>> 0)) & b) >>> 0)) ^ d) >>> 0)) + (X.nilCheck, X[12]) >>> 0) + 1804603682 >>> 0)) >>> 0;
a = (((a << 7 >>> 0) | (a >>> 25 >>> 0)) >>> 0) + b >>> 0;
d = d + ((((((((((((b ^ c) >>> 0)) & a) >>> 0)) ^ c) >>> 0)) + (X.nilCheck, X[13]) >>> 0) + 4254626195 >>> 0)) >>> 0;
d = (((d << 12 >>> 0) | (d >>> 20 >>> 0)) >>> 0) + a >>> 0;
c = c + ((((((((((((a ^ b) >>> 0)) & d) >>> 0)) ^ b) >>> 0)) + (X.nilCheck, X[14]) >>> 0) + 2792965006 >>> 0)) >>> 0;
c = (((c << 17 >>> 0) | (c >>> 15 >>> 0)) >>> 0) + d >>> 0;
b = b + ((((((((((((d ^ a) >>> 0)) & c) >>> 0)) ^ a) >>> 0)) + (X.nilCheck, X[15]) >>> 0) + 1236535329 >>> 0)) >>> 0;
b = (((b << 22 >>> 0) | (b >>> 10 >>> 0)) >>> 0) + c >>> 0;
a = a + ((((((((((((b ^ c) >>> 0)) & d) >>> 0)) ^ c) >>> 0)) + (X.nilCheck, X[1]) >>> 0) + 4129170786 >>> 0)) >>> 0;
a = (((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0) + b >>> 0;
d = d + ((((((((((((a ^ b) >>> 0)) & c) >>> 0)) ^ b) >>> 0)) + (X.nilCheck, X[6]) >>> 0) + 3225465664 >>> 0)) >>> 0;
d = (((d << 9 >>> 0) | (d >>> 23 >>> 0)) >>> 0) + a >>> 0;
c = c + ((((((((((((d ^ a) >>> 0)) & b) >>> 0)) ^ a) >>> 0)) + (X.nilCheck, X[11]) >>> 0) + 643717713 >>> 0)) >>> 0;
c = (((c << 14 >>> 0) | (c >>> 18 >>> 0)) >>> 0) + d >>> 0;
b = b + ((((((((((((c ^ d) >>> 0)) & a) >>> 0)) ^ d) >>> 0)) + (X.nilCheck, X[0]) >>> 0) + 3921069994 >>> 0)) >>> 0;
b = (((b << 20 >>> 0) | (b >>> 12 >>> 0)) >>> 0) + c >>> 0;
a = a + ((((((((((((b ^ c) >>> 0)) & d) >>> 0)) ^ c) >>> 0)) + (X.nilCheck, X[5]) >>> 0) + 3593408605 >>> 0)) >>> 0;
a = (((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0) + b >>> 0;
d = d + ((((((((((((a ^ b) >>> 0)) & c) >>> 0)) ^ b) >>> 0)) + (X.nilCheck, X[10]) >>> 0) + 38016083 >>> 0)) >>> 0;
d = (((d << 9 >>> 0) | (d >>> 23 >>> 0)) >>> 0) + a >>> 0;
c = c + ((((((((((((d ^ a) >>> 0)) & b) >>> 0)) ^ a) >>> 0)) + (X.nilCheck, X[15]) >>> 0) + 3634488961 >>> 0)) >>> 0;
c = (((c << 14 >>> 0) | (c >>> 18 >>> 0)) >>> 0) + d >>> 0;
b = b + ((((((((((((c ^ d) >>> 0)) & a) >>> 0)) ^ d) >>> 0)) + (X.nilCheck, X[4]) >>> 0) + 3889429448 >>> 0)) >>> 0;
b = (((b << 20 >>> 0) | (b >>> 12 >>> 0)) >>> 0) + c >>> 0;
a = a + ((((((((((((b ^ c) >>> 0)) & d) >>> 0)) ^ c) >>> 0)) + (X.nilCheck, X[9]) >>> 0) + 568446438 >>> 0)) >>> 0;
a = (((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0) + b >>> 0;
d = d + ((((((((((((a ^ b) >>> 0)) & c) >>> 0)) ^ b) >>> 0)) + (X.nilCheck, X[14]) >>> 0) + 3275163606 >>> 0)) >>> 0;
d = (((d << 9 >>> 0) | (d >>> 23 >>> 0)) >>> 0) + a >>> 0;
c = c + ((((((((((((d ^ a) >>> 0)) & b) >>> 0)) ^ a) >>> 0)) + (X.nilCheck, X[3]) >>> 0) + 4107603335 >>> 0)) >>> 0;
c = (((c << 14 >>> 0) | (c >>> 18 >>> 0)) >>> 0) + d >>> 0;
b = b + ((((((((((((c ^ d) >>> 0)) & a) >>> 0)) ^ d) >>> 0)) + (X.nilCheck, X[8]) >>> 0) + 1163531501 >>> 0)) >>> 0;
b = (((b << 20 >>> 0) | (b >>> 12 >>> 0)) >>> 0) + c >>> 0;
a = a + ((((((((((((b ^ c) >>> 0)) & d) >>> 0)) ^ c) >>> 0)) + (X.nilCheck, X[13]) >>> 0) + 2850285829 >>> 0)) >>> 0;
a = (((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0) + b >>> 0;
d = d + ((((((((((((a ^ b) >>> 0)) & c) >>> 0)) ^ b) >>> 0)) + (X.nilCheck, X[2]) >>> 0) + 4243563512 >>> 0)) >>> 0;
d = (((d << 9 >>> 0) | (d >>> 23 >>> 0)) >>> 0) + a >>> 0;
c = c + ((((((((((((d ^ a) >>> 0)) & b) >>> 0)) ^ a) >>> 0)) + (X.nilCheck, X[7]) >>> 0) + 1735328473 >>> 0)) >>> 0;
c = (((c << 14 >>> 0) | (c >>> 18 >>> 0)) >>> 0) + d >>> 0;
b = b + ((((((((((((c ^ d) >>> 0)) & a) >>> 0)) ^ d) >>> 0)) + (X.nilCheck, X[12]) >>> 0) + 2368359562 >>> 0)) >>> 0;
b = (((b << 20 >>> 0) | (b >>> 12 >>> 0)) >>> 0) + c >>> 0;
a = a + ((((((((b ^ c) >>> 0) ^ d) >>> 0)) + (X.nilCheck, X[5]) >>> 0) + 4294588738 >>> 0)) >>> 0;
a = (((a << 4 >>> 0) | (a >>> 28 >>> 0)) >>> 0) + b >>> 0;
d = d + ((((((((a ^ b) >>> 0) ^ c) >>> 0)) + (X.nilCheck, X[8]) >>> 0) + 2272392833 >>> 0)) >>> 0;
d = (((d << 11 >>> 0) | (d >>> 21 >>> 0)) >>> 0) + a >>> 0;
c = c + ((((((((d ^ a) >>> 0) ^ b) >>> 0)) + (X.nilCheck, X[11]) >>> 0) + 1839030562 >>> 0)) >>> 0;
c = (((c << 16 >>> 0) | (c >>> 16 >>> 0)) >>> 0) + d >>> 0;
b = b + ((((((((c ^ d) >>> 0) ^ a) >>> 0)) + (X.nilCheck, X[14]) >>> 0) + 4259657740 >>> 0)) >>> 0;
b = (((b << 23 >>> 0) | (b >>> 9 >>> 0)) >>> 0) + c >>> 0;
a = a + ((((((((b ^ c) >>> 0) ^ d) >>> 0)) + (X.nilCheck, X[1]) >>> 0) + 2763975236 >>> 0)) >>> 0;
a = (((a << 4 >>> 0) | (a >>> 28 >>> 0)) >>> 0) + b >>> 0;
d = d + ((((((((a ^ b) >>> 0) ^ c) >>> 0)) + (X.nilCheck, X[4]) >>> 0) + 1272893353 >>> 0)) >>> 0;
d = (((d << 11 >>> 0) | (d >>> 21 >>> 0)) >>> 0) + a >>> 0;
c = c + ((((((((d ^ a) >>> 0) ^ b) >>> 0)) + (X.nilCheck, X[7]) >>> 0) + 4139469664 >>> 0)) >>> 0;
c = (((c << 16 >>> 0) | (c >>> 16 >>> 0)) >>> 0) + d >>> 0;
b = b + ((((((((c ^ d) >>> 0) ^ a) >>> 0)) + (X.nilCheck, X[10]) >>> 0) + 3200236656 >>> 0)) >>> 0;
b = (((b << 23 >>> 0) | (b >>> 9 >>> 0)) >>> 0) + c >>> 0;
a = a + ((((((((b ^ c) >>> 0) ^ d) >>> 0)) + (X.nilCheck, X[13]) >>> 0) + 681279174 >>> 0)) >>> 0;
a = (((a << 4 >>> 0) | (a >>> 28 >>> 0)) >>> 0) + b >>> 0;
d = d + ((((((((a ^ b) >>> 0) ^ c) >>> 0)) + (X.nilCheck, X[0]) >>> 0) + 3936430074 >>> 0)) >>> 0;
d = (((d << 11 >>> 0) | (d >>> 21 >>> 0)) >>> 0) + a >>> 0;
c = c + ((((((((d ^ a) >>> 0) ^ b) >>> 0)) + (X.nilCheck, X[3]) >>> 0) + 3572445317 >>> 0)) >>> 0;
c = (((c << 16 >>> 0) | (c >>> 16 >>> 0)) >>> 0) + d >>> 0;
b = b + ((((((((c ^ d) >>> 0) ^ a) >>> 0)) + (X.nilCheck, X[6]) >>> 0) + 76029189 >>> 0)) >>> 0;
b = (((b << 23 >>> 0) | (b >>> 9 >>> 0)) >>> 0) + c >>> 0;
a = a + ((((((((b ^ c) >>> 0) ^ d) >>> 0)) + (X.nilCheck, X[9]) >>> 0) + 3654602809 >>> 0)) >>> 0;
a = (((a << 4 >>> 0) | (a >>> 28 >>> 0)) >>> 0) + b >>> 0;
d = d + ((((((((a ^ b) >>> 0) ^ c) >>> 0)) + (X.nilCheck, X[12]) >>> 0) + 3873151461 >>> 0)) >>> 0;
d = (((d << 11 >>> 0) | (d >>> 21 >>> 0)) >>> 0) + a >>> 0;
c = c + ((((((((d ^ a) >>> 0) ^ b) >>> 0)) + (X.nilCheck, X[15]) >>> 0) + 530742520 >>> 0)) >>> 0;
c = (((c << 16 >>> 0) | (c >>> 16 >>> 0)) >>> 0) + d >>> 0;
b = b + ((((((((c ^ d) >>> 0) ^ a) >>> 0)) + (X.nilCheck, X[2]) >>> 0) + 3299628645 >>> 0)) >>> 0;
b = (((b << 23 >>> 0) | (b >>> 9 >>> 0)) >>> 0) + c >>> 0;
a = a + ((((((c ^ (((b | (~d >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[0]) >>> 0) + 4096336452 >>> 0)) >>> 0;
a = (((a << 6 >>> 0) | (a >>> 26 >>> 0)) >>> 0) + b >>> 0;
d = d + ((((((b ^ (((a | (~c >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[7]) >>> 0) + 1126891415 >>> 0)) >>> 0;
d = (((d << 10 >>> 0) | (d >>> 22 >>> 0)) >>> 0) + a >>> 0;
c = c + ((((((a ^ (((d | (~b >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[14]) >>> 0) + 2878612391 >>> 0)) >>> 0;
c = (((c << 15 >>> 0) | (c >>> 17 >>> 0)) >>> 0) + d >>> 0;
b = b + ((((((d ^ (((c | (~a >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[5]) >>> 0) + 4237533241 >>> 0)) >>> 0;
b = (((b << 21 >>> 0) | (b >>> 11 >>> 0)) >>> 0) + c >>> 0;
a = a + ((((((c ^ (((b | (~d >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[12]) >>> 0) + 1700485571 >>> 0)) >>> 0;
a = (((a << 6 >>> 0) | (a >>> 26 >>> 0)) >>> 0) + b >>> 0;
d = d + ((((((b ^ (((a | (~c >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[3]) >>> 0) + 2399980690 >>> 0)) >>> 0;
d = (((d << 10 >>> 0) | (d >>> 22 >>> 0)) >>> 0) + a >>> 0;
c = c + ((((((a ^ (((d | (~b >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[10]) >>> 0) + 4293915773 >>> 0)) >>> 0;
c = (((c << 15 >>> 0) | (c >>> 17 >>> 0)) >>> 0) + d >>> 0;
b = b + ((((((d ^ (((c | (~a >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[1]) >>> 0) + 2240044497 >>> 0)) >>> 0;
b = (((b << 21 >>> 0) | (b >>> 11 >>> 0)) >>> 0) + c >>> 0;
a = a + ((((((c ^ (((b | (~d >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[8]) >>> 0) + 1873313359 >>> 0)) >>> 0;
a = (((a << 6 >>> 0) | (a >>> 26 >>> 0)) >>> 0) + b >>> 0;
d = d + ((((((b ^ (((a | (~c >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[15]) >>> 0) + 4264355552 >>> 0)) >>> 0;
d = (((d << 10 >>> 0) | (d >>> 22 >>> 0)) >>> 0) + a >>> 0;
c = c + ((((((a ^ (((d | (~b >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[6]) >>> 0) + 2734768916 >>> 0)) >>> 0;
c = (((c << 15 >>> 0) | (c >>> 17 >>> 0)) >>> 0) + d >>> 0;
b = b + ((((((d ^ (((c | (~a >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[13]) >>> 0) + 1309151649 >>> 0)) >>> 0;
b = (((b << 21 >>> 0) | (b >>> 11 >>> 0)) >>> 0) + c >>> 0;
a = a + ((((((c ^ (((b | (~d >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[4]) >>> 0) + 4149444226 >>> 0)) >>> 0;
a = (((a << 6 >>> 0) | (a >>> 26 >>> 0)) >>> 0) + b >>> 0;
d = d + ((((((b ^ (((a | (~c >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[11]) >>> 0) + 3174756917 >>> 0)) >>> 0;
d = (((d << 10 >>> 0) | (d >>> 22 >>> 0)) >>> 0) + a >>> 0;
c = c + ((((((a ^ (((d | (~b >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[2]) >>> 0) + 718787259 >>> 0)) >>> 0;
c = (((c << 15 >>> 0) | (c >>> 17 >>> 0)) >>> 0) + d >>> 0;
b = b + ((((((d ^ (((c | (~a >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[9]) >>> 0) + 3951481745 >>> 0)) >>> 0;
b = (((b << 21 >>> 0) | (b >>> 11 >>> 0)) >>> 0) + c >>> 0;
a = a + (aa) >>> 0;
b = b + (bb) >>> 0;
c = c + (cc) >>> 0;
d = d + (dd) >>> 0;
p = $subslice(p, 64);
}
dig.s[0] = a;
dig.s[1] = b;
dig.s[2] = c;
dig.s[3] = d;
};
ptrType$1.methods = [{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/md5", typ: $funcType([], [arrayType$2], false)}];
digest.init("crypto/md5", [{prop: "s", name: "s", exported: false, typ: arrayType, tag: ""}, {prop: "x", name: "x", exported: false, typ: arrayType$1, tag: ""}, {prop: "nx", name: "nx", exported: false, typ: $Int, tag: ""}, {prop: "len", name: "len", exported: false, typ: $Uint64, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = crypto.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = hash.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = runtime.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
littleEndian = false;
block = blockGeneric;
init();
init$1();
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["crypto/rc4"] = (function() {
var $pkg = {}, $init, strconv, Cipher, KeySizeError, ptrType, arrayType, sliceType, NewCipher;
strconv = $packages["strconv"];
Cipher = $pkg.Cipher = $newType(0, $kindStruct, "rc4.Cipher", true, "crypto/rc4", true, function(s_, i_, j_) {
this.$val = this;
if (arguments.length === 0) {
this.s = arrayType.zero();
this.i = 0;
this.j = 0;
return;
}
this.s = s_;
this.i = i_;
this.j = j_;
});
KeySizeError = $pkg.KeySizeError = $newType(4, $kindInt, "rc4.KeySizeError", true, "crypto/rc4", true, null);
ptrType = $ptrType(Cipher);
arrayType = $arrayType($Uint32, 256);
sliceType = $sliceType($Uint8);
KeySizeError.prototype.Error = function() {
var $ptr, k;
k = this.$val;
return "crypto/rc4: invalid key size " + strconv.Itoa(((k >> 0)));
};
$ptrType(KeySizeError).prototype.Error = function() { return new KeySizeError(this.$get()).Error(); };
NewCipher = function(key) {
var $ptr, _r, _tmp, _tmp$1, c, i, i$1, j, k, key, x, x$1, x$2, x$3, x$4, x$5, x$6;
k = key.$length;
if (k < 1 || k > 256) {
return [ptrType.nil, new KeySizeError(((k >> 0)))];
}
c = new Cipher.ptr(arrayType.zero(), 0, 0);
i = 0;
while (true) {
if (!(i < 256)) { break; }
(x = c.s, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i] = ((i >>> 0))));
i = i + (1) >> 0;
}
j = 0;
i$1 = 0;
while (true) {
if (!(i$1 < 256)) { break; }
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;
_tmp = (x$3 = c.s, ((j < 0 || j >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[j]));
_tmp$1 = (x$4 = c.s, ((i$1 < 0 || i$1 >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[i$1]));
(x$5 = c.s, ((i$1 < 0 || i$1 >= x$5.length) ? ($throwRuntimeError("index out of range"), undefined) : x$5[i$1] = _tmp));
(x$6 = c.s, ((j < 0 || j >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[j] = _tmp$1));
i$1 = i$1 + (1) >> 0;
}
return [c, $ifaceNil];
};
$pkg.NewCipher = NewCipher;
Cipher.ptr.prototype.Reset = function() {
var $ptr, _i, _ref, _tmp, _tmp$1, c, i, x;
c = this;
_ref = c.s;
_i = 0;
while (true) {
if (!(_i < 256)) { break; }
i = _i;
(x = c.s, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i] = 0));
_i++;
}
_tmp = 0;
_tmp$1 = 0;
c.i = _tmp;
c.j = _tmp$1;
};
Cipher.prototype.Reset = function() { return this.$val.Reset(); };
Cipher.ptr.prototype.xorKeyStreamGeneric = function(dst, src) {
var $ptr, _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;
c = this;
_tmp = c.i;
_tmp$1 = c.j;
i = _tmp;
j = _tmp$1;
_ref = src;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
k = _i;
v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
i = i + (1) << 24 >>> 24;
j = j + ((((x = c.s, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i])) << 24 >>> 24))) << 24 >>> 24;
_tmp$2 = (x$1 = c.s, ((j < 0 || j >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[j]));
_tmp$3 = (x$2 = c.s, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i]));
(x$3 = c.s, ((i < 0 || i >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[i] = _tmp$2));
(x$4 = c.s, ((j < 0 || j >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[j] = _tmp$3));
((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));
_i++;
}
_tmp$4 = i;
_tmp$5 = j;
c.i = _tmp$4;
c.j = _tmp$5;
};
Cipher.prototype.xorKeyStreamGeneric = function(dst, src) { return this.$val.xorKeyStreamGeneric(dst, src); };
Cipher.ptr.prototype.XORKeyStream = function(dst, src) {
var $ptr, c, dst, src;
c = this;
c.xorKeyStreamGeneric(dst, src);
};
Cipher.prototype.XORKeyStream = function(dst, src) { return this.$val.XORKeyStream(dst, src); };
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)}];
KeySizeError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
Cipher.init("crypto/rc4", [{prop: "s", name: "s", exported: false, typ: arrayType, tag: ""}, {prop: "i", name: "i", exported: false, typ: $Uint8, tag: ""}, {prop: "j", name: "j", exported: false, typ: $Uint8, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = strconv.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["crypto/rsa"] = (function() {
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;
bytes = $packages["bytes"];
crypto = $packages["crypto"];
rand = $packages["crypto/rand"];
subtle = $packages["crypto/subtle"];
errors = $packages["errors"];
hash = $packages["hash"];
io = $packages["io"];
math = $packages["math"];
big = $packages["math/big"];
PKCS1v15DecryptOptions = $pkg.PKCS1v15DecryptOptions = $newType(0, $kindStruct, "rsa.PKCS1v15DecryptOptions", true, "crypto/rsa", true, function(SessionKeyLen_) {
this.$val = this;
if (arguments.length === 0) {
this.SessionKeyLen = 0;
return;
}
this.SessionKeyLen = SessionKeyLen_;
});
PSSOptions = $pkg.PSSOptions = $newType(0, $kindStruct, "rsa.PSSOptions", true, "crypto/rsa", true, function(SaltLength_, Hash_) {
this.$val = this;
if (arguments.length === 0) {
this.SaltLength = 0;
this.Hash = 0;
return;
}
this.SaltLength = SaltLength_;
this.Hash = Hash_;
});
PublicKey = $pkg.PublicKey = $newType(0, $kindStruct, "rsa.PublicKey", true, "crypto/rsa", true, function(N_, E_) {
this.$val = this;
if (arguments.length === 0) {
this.N = ptrType$1.nil;
this.E = 0;
return;
}
this.N = N_;
this.E = E_;
});
OAEPOptions = $pkg.OAEPOptions = $newType(0, $kindStruct, "rsa.OAEPOptions", true, "crypto/rsa", true, function(Hash_, Label_) {
this.$val = this;
if (arguments.length === 0) {
this.Hash = 0;
this.Label = sliceType.nil;
return;
}
this.Hash = Hash_;
this.Label = Label_;
});
PrivateKey = $pkg.PrivateKey = $newType(0, $kindStruct, "rsa.PrivateKey", true, "crypto/rsa", true, function(PublicKey_, D_, Primes_, Precomputed_) {
this.$val = this;
if (arguments.length === 0) {
this.PublicKey = new PublicKey.ptr(ptrType$1.nil, 0);
this.D = ptrType$1.nil;
this.Primes = sliceType$1.nil;
this.Precomputed = new PrecomputedValues.ptr(ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, sliceType$2.nil);
return;
}
this.PublicKey = PublicKey_;
this.D = D_;
this.Primes = Primes_;
this.Precomputed = Precomputed_;
});
PrecomputedValues = $pkg.PrecomputedValues = $newType(0, $kindStruct, "rsa.PrecomputedValues", true, "crypto/rsa", true, function(Dp_, Dq_, Qinv_, CRTValues_) {
this.$val = this;
if (arguments.length === 0) {
this.Dp = ptrType$1.nil;
this.Dq = ptrType$1.nil;
this.Qinv = ptrType$1.nil;
this.CRTValues = sliceType$2.nil;
return;
}
this.Dp = Dp_;
this.Dq = Dq_;
this.Qinv = Qinv_;
this.CRTValues = CRTValues_;
});
CRTValue = $pkg.CRTValue = $newType(0, $kindStruct, "rsa.CRTValue", true, "crypto/rsa", true, function(Exp_, Coeff_, R_) {
this.$val = this;
if (arguments.length === 0) {
this.Exp = ptrType$1.nil;
this.Coeff = ptrType$1.nil;
this.R = ptrType$1.nil;
return;
}
this.Exp = Exp_;
this.Coeff = Coeff_;
this.R = R_;
});
sliceType = $sliceType($Uint8);
arrayType = $arrayType($Uint8, 8);
ptrType = $ptrType(PSSOptions);
ptrType$1 = $ptrType(big.Int);
ptrType$2 = $ptrType(OAEPOptions);
ptrType$3 = $ptrType(PKCS1v15DecryptOptions);
sliceType$1 = $sliceType(ptrType$1);
sliceType$2 = $sliceType(CRTValue);
ptrType$4 = $ptrType(PrivateKey);
arrayType$1 = $arrayType($Uint8, 4);
EncryptPKCS1v15 = function(rand$1, pub, msg) {
var $ptr, _q, _r, _r$1, _tmp, _tmp$1, c, em, err, err$1, k, m, mm, msg, ps, pub, rand$1, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
err = checkPub(pub);
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [sliceType.nil, err];
}
k = (_q = ((pub.N.BitLen() + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
if (msg.$length > (k - 11 >> 0)) {
$s = -1; return [sliceType.nil, $pkg.ErrMessageTooLong];
}
em = $makeSlice(sliceType, k);
(1 >= em.$length ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + 1] = 2);
_tmp = $subslice(em, 2, ((em.$length - msg.$length >> 0) - 1 >> 0));
_tmp$1 = $subslice(em, (em.$length - msg.$length >> 0));
ps = _tmp;
mm = _tmp$1;
_r = nonZeroRandomBytes(ps, rand$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err$1 = _r;
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return [sliceType.nil, err$1];
}
(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));
$copySlice(mm, msg);
m = new big.Int.ptr(false, big.nat.nil).SetBytes(em);
_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; }
c = _r$1;
copyWithLeftPad(em, c.Bytes());
$s = -1; return [em, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: EncryptPKCS1v15 }; } $f.$ptr = $ptr; $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;
};
$pkg.EncryptPKCS1v15 = EncryptPKCS1v15;
DecryptPKCS1v15 = function(rand$1, priv, ciphertext) {
var $ptr, _r, _tuple, ciphertext, err, err$1, index, out, priv, rand$1, valid, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
err = checkPub(priv.PublicKey);
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [sliceType.nil, err];
}
_r = decryptPKCS1v15(rand$1, priv, ciphertext); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
valid = _tuple[0];
out = _tuple[1];
index = _tuple[2];
err$1 = _tuple[3];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return [sliceType.nil, err$1];
}
if (valid === 0) {
$s = -1; return [sliceType.nil, $pkg.ErrDecryption];
}
$s = -1; return [$subslice(out, index), $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: DecryptPKCS1v15 }; } $f.$ptr = $ptr; $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;
};
$pkg.DecryptPKCS1v15 = DecryptPKCS1v15;
DecryptPKCS1v15SessionKey = function(rand$1, priv, ciphertext, key) {
var $ptr, _q, _r, _tuple, ciphertext, em, err, err$1, index, k, key, priv, rand$1, valid, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
err = checkPub(priv.PublicKey);
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
k = (_q = ((priv.PublicKey.N.BitLen() + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
if ((k - (((key.$length + 3 >> 0) + 8 >> 0)) >> 0) < 0) {
$s = -1; return $pkg.ErrDecryption;
}
_r = decryptPKCS1v15(rand$1, priv, ciphertext); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
valid = _tuple[0];
em = _tuple[1];
index = _tuple[2];
err$1 = _tuple[3];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return err$1;
}
if (!((em.$length === k))) {
$s = -1; return $pkg.ErrDecryption;
}
valid = valid & (subtle.ConstantTimeEq((((em.$length - index >> 0) >> 0)), ((key.$length >> 0))));
subtle.ConstantTimeCopy(valid, key, $subslice(em, (em.$length - key.$length >> 0)));
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: DecryptPKCS1v15SessionKey }; } $f.$ptr = $ptr; $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;
};
$pkg.DecryptPKCS1v15SessionKey = DecryptPKCS1v15SessionKey;
decryptPKCS1v15 = function(rand$1, priv, ciphertext) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
valid = 0;
em = sliceType.nil;
index = 0;
err = $ifaceNil;
k = (_q = ((priv.PublicKey.N.BitLen() + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
if (k < 11) {
err = $pkg.ErrDecryption;
$s = -1; return [valid, em, index, err];
}
c = new big.Int.ptr(false, big.nat.nil).SetBytes(ciphertext);
_r = decrypt(rand$1, priv, c); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
m = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [valid, em, index, err];
}
em = leftPad(m.Bytes(), k);
firstByteIsZero = subtle.ConstantTimeByteEq((0 >= em.$length ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + 0]), 0);
secondByteIsTwo = subtle.ConstantTimeByteEq((1 >= em.$length ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + 1]), 2);
lookingForIndex = 1;
i = 2;
while (true) {
if (!(i < em.$length)) { break; }
equals0 = subtle.ConstantTimeByteEq(((i < 0 || i >= em.$length) ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + i]), 0);
index = subtle.ConstantTimeSelect(lookingForIndex & equals0, i, index);
lookingForIndex = subtle.ConstantTimeSelect(equals0, 0, lookingForIndex);
i = i + (1) >> 0;
}
validPS = subtle.ConstantTimeLessOrEq(10, index);
valid = ((firstByteIsZero & secondByteIsTwo) & (((~lookingForIndex >> 0) & 1))) & validPS;
index = subtle.ConstantTimeSelect(valid, index + 1 >> 0, 0);
_tmp = valid;
_tmp$1 = em;
_tmp$2 = index;
_tmp$3 = $ifaceNil;
valid = _tmp;
em = _tmp$1;
index = _tmp$2;
err = _tmp$3;
$s = -1; return [valid, em, index, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: decryptPKCS1v15 }; } $f.$ptr = $ptr; $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;
};
nonZeroRandomBytes = function(s, rand$1) {
var $ptr, _r, _r$1, _tuple, _tuple$1, err, i, rand$1, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
err = $ifaceNil;
_r = io.ReadFull(rand$1, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
i = 0;
/* while (true) { */ case 2:
/* if (!(i < s.$length)) { break; } */ if(!(i < s.$length)) { $s = 3; continue; }
/* while (true) { */ case 4:
/* 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; }
_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; }
_tuple$1 = _r$1;
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
((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));
/* } */ $s = 4; continue; case 5:
i = i + (1) >> 0;
/* } */ $s = 2; continue; case 3:
$s = -1; return err;
/* */ } return; } if ($f === undefined) { $f = { $blk: nonZeroRandomBytes }; } $f.$ptr = $ptr; $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;
};
SignPKCS1v15 = function(rand$1, priv, hash$1, hashed) {
var $ptr, _q, _r, _tuple, _tuple$1, c, em, err, hash$1, hashLen, hashed, i, k, m, prefix, priv, rand$1, tLen, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_tuple = pkcs1v15HashInfo(hash$1, hashed.$length);
hashLen = _tuple[0];
prefix = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [sliceType.nil, err];
}
tLen = prefix.$length + hashLen >> 0;
k = (_q = ((priv.PublicKey.N.BitLen() + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
if (k < (tLen + 11 >> 0)) {
$s = -1; return [sliceType.nil, $pkg.ErrMessageTooLong];
}
em = $makeSlice(sliceType, k);
(1 >= em.$length ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + 1] = 1);
i = 2;
while (true) {
if (!(i < ((k - tLen >> 0) - 1 >> 0))) { break; }
((i < 0 || i >= em.$length) ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + i] = 255);
i = i + (1) >> 0;
}
$copySlice($subslice(em, (k - tLen >> 0), (k - hashLen >> 0)), prefix);
$copySlice($subslice(em, (k - hashLen >> 0), k), hashed);
m = new big.Int.ptr(false, big.nat.nil).SetBytes(em);
_r = decryptAndCheck(rand$1, priv, m); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
c = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [sliceType.nil, err];
}
copyWithLeftPad(em, c.Bytes());
$s = -1; return [em, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: SignPKCS1v15 }; } $f.$ptr = $ptr; $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;
};
$pkg.SignPKCS1v15 = SignPKCS1v15;
VerifyPKCS1v15 = function(pub, hash$1, hashed, sig) {
var $ptr, _q, _r, _tuple, c, em, err, hash$1, hashLen, hashed, i, k, m, ok, prefix, pub, sig, tLen, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_tuple = pkcs1v15HashInfo(hash$1, hashed.$length);
hashLen = _tuple[0];
prefix = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
tLen = prefix.$length + hashLen >> 0;
k = (_q = ((pub.N.BitLen() + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
if (k < (tLen + 11 >> 0)) {
$s = -1; return $pkg.ErrVerification;
}
c = new big.Int.ptr(false, big.nat.nil).SetBytes(sig);
_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; }
m = _r;
em = leftPad(m.Bytes(), k);
ok = subtle.ConstantTimeByteEq((0 >= em.$length ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + 0]), 0);
ok = ok & (subtle.ConstantTimeByteEq((1 >= em.$length ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + 1]), 1));
ok = ok & (subtle.ConstantTimeCompare($subslice(em, (k - hashLen >> 0), k), hashed));
ok = ok & (subtle.ConstantTimeCompare($subslice(em, (k - tLen >> 0), (k - hashLen >> 0)), prefix));
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));
i = 2;
while (true) {
if (!(i < ((k - tLen >> 0) - 1 >> 0))) { break; }
ok = ok & (subtle.ConstantTimeByteEq(((i < 0 || i >= em.$length) ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + i]), 255));
i = i + (1) >> 0;
}
if (!((ok === 1))) {
$s = -1; return $pkg.ErrVerification;
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: VerifyPKCS1v15 }; } $f.$ptr = $ptr; $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;
};
$pkg.VerifyPKCS1v15 = VerifyPKCS1v15;
pkcs1v15HashInfo = function(hash$1, inLen) {
var $ptr, _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;
hashLen = 0;
prefix = sliceType.nil;
err = $ifaceNil;
if (hash$1 === 0) {
_tmp = inLen;
_tmp$1 = sliceType.nil;
_tmp$2 = $ifaceNil;
hashLen = _tmp;
prefix = _tmp$1;
err = _tmp$2;
return [hashLen, prefix, err];
}
hashLen = new crypto.Hash(hash$1).Size();
if (!((inLen === hashLen))) {
_tmp$3 = 0;
_tmp$4 = sliceType.nil;
_tmp$5 = errors.New("crypto/rsa: input must be hashed message");
hashLen = _tmp$3;
prefix = _tmp$4;
err = _tmp$5;
return [hashLen, prefix, err];
}
_tuple = (_entry = hashPrefixes[crypto.Hash.keyFor(hash$1)], _entry !== undefined ? [_entry.v, true] : [sliceType.nil, false]);
prefix = _tuple[0];
ok = _tuple[1];
if (!ok) {
_tmp$6 = 0;
_tmp$7 = sliceType.nil;
_tmp$8 = errors.New("crypto/rsa: unsupported hash function");
hashLen = _tmp$6;
prefix = _tmp$7;
err = _tmp$8;
return [hashLen, prefix, err];
}
return [hashLen, prefix, err];
};
copyWithLeftPad = function(dest, src) {
var $ptr, dest, i, numPaddingBytes, src;
numPaddingBytes = dest.$length - src.$length >> 0;
i = 0;
while (true) {
if (!(i < numPaddingBytes)) { break; }
((i < 0 || i >= dest.$length) ? ($throwRuntimeError("index out of range"), undefined) : dest.$array[dest.$offset + i] = 0);
i = i + (1) >> 0;
}
$copySlice($subslice(dest, numPaddingBytes), src);
};
emsaPSSEncode = function(mHash, emBits, salt, hash$1) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = hash$1.Size(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
hLen = _r;
sLen = salt.$length;
emLen = (_q = ((emBits + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
if (!((mHash.$length === hLen))) {
$s = -1; return [sliceType.nil, errors.New("crypto/rsa: input must be hashed message")];
}
if (emLen < ((hLen + sLen >> 0) + 2 >> 0)) {
$s = -1; return [sliceType.nil, errors.New("crypto/rsa: encoding error")];
}
em = $makeSlice(sliceType, emLen);
db = $subslice(em, 0, (((((emLen - sLen >> 0) - hLen >> 0) - 2 >> 0) + 1 >> 0) + sLen >> 0));
h = $subslice(em, (((((emLen - sLen >> 0) - hLen >> 0) - 2 >> 0) + 1 >> 0) + sLen >> 0), (emLen - 1 >> 0));
prefix = arrayType.zero();
_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; }
_r$1;
_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; }
_r$2;
_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; }
_r$3;
_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; }
h = _r$4;
$r = hash$1.Reset(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
(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));
$copySlice($subslice(db, (((emLen - sLen >> 0) - hLen >> 0) - 1 >> 0)), salt);
$r = mgf1XOR(db, hash$1, h); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
(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));
(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));
$s = -1; return [em, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: emsaPSSEncode }; } $f.$ptr = $ptr; $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;
};
emsaPSSVerify = function(mHash, em, emBits, sLen, hash$1) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = hash$1.Size(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
hLen = _r;
if (!((hLen === mHash.$length))) {
$s = -1; return $pkg.ErrVerification;
}
emLen = (_q = ((emBits + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
if (emLen < ((hLen + sLen >> 0) + 2 >> 0)) {
$s = -1; return $pkg.ErrVerification;
}
if (!(((x = em.$length - 1 >> 0, ((x < 0 || x >= em.$length) ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + x])) === 188))) {
$s = -1; return $pkg.ErrVerification;
}
db = $subslice(em, 0, ((emLen - hLen >> 0) - 1 >> 0));
h = $subslice(em, ((emLen - hLen >> 0) - 1 >> 0), (em.$length - 1 >> 0));
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))) {
$s = -1; return $pkg.ErrVerification;
}
$r = mgf1XOR(db, hash$1, h); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
(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));
/* */ if (sLen === 0) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (sLen === 0) { */ case 3:
sLen = emLen - ((hLen + 2 >> 0)) >> 0;
FindSaltLength:
while (true) {
if (!(sLen >= 0)) { break; }
_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]));
if (_1 === (1)) {
break FindSaltLength;
} else if (_1 === (0)) {
sLen = sLen - (1) >> 0;
continue;
} else {
$s = -1; return $pkg.ErrVerification;
}
sLen = sLen - (1) >> 0;
}
if (sLen < 0) {
$s = -1; return $pkg.ErrVerification;
}
$s = 5; continue;
/* } else { */ case 4:
_ref = $subslice(db, 0, (((emLen - hLen >> 0) - sLen >> 0) - 2 >> 0));
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
e = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (!((e === 0))) {
$s = -1; return $pkg.ErrVerification;
}
_i++;
}
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))) {
$s = -1; return $pkg.ErrVerification;
}
/* } */ case 5:
salt = $subslice(db, (db.$length - sLen >> 0));
prefix = arrayType.zero();
_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; }
_r$1;
_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; }
_r$2;
_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; }
_r$3;
_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; }
h0 = _r$4;
if (!bytes.Equal(h0, h)) {
$s = -1; return $pkg.ErrVerification;
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: emsaPSSVerify }; } $f.$ptr = $ptr; $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;
};
signPSSWithSalt = function(rand$1, priv, hash$1, hashed, salt) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
s = sliceType.nil;
err = $ifaceNil;
nBits = priv.PublicKey.N.BitLen();
_arg = hashed;
_arg$1 = nBits - 1 >> 0;
_arg$2 = salt;
_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; }
_arg$3 = _r;
_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; }
_tuple = _r$1;
em = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [s, err];
}
m = new big.Int.ptr(false, big.nat.nil).SetBytes(em);
_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; }
_tuple$1 = _r$2;
c = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [s, err];
}
s = $makeSlice(sliceType, (_q = ((nBits + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")));
copyWithLeftPad(s, c.Bytes());
$s = -1; return [s, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: signPSSWithSalt }; } $f.$ptr = $ptr; $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;
};
PSSOptions.ptr.prototype.HashFunc = function() {
var $ptr, pssOpts;
pssOpts = this;
return pssOpts.Hash;
};
PSSOptions.prototype.HashFunc = function() { return this.$val.HashFunc(); };
PSSOptions.ptr.prototype.saltLength = function() {
var $ptr, opts;
opts = this;
if (opts === ptrType.nil) {
return 0;
}
return opts.SaltLength;
};
PSSOptions.prototype.saltLength = function() { return this.$val.saltLength(); };
SignPSS = function(rand$1, priv, hash$1, hashed, opts) {
var $ptr, _1, _q, _r, _r$1, _tuple, err, hash$1, hashed, opts, priv, rand$1, salt, saltLength, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
saltLength = opts.saltLength();
_1 = saltLength;
if (_1 === (0)) {
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;
} else if (_1 === (-1)) {
saltLength = new crypto.Hash(hash$1).Size();
}
if (!(opts === ptrType.nil) && !((opts.Hash === 0))) {
hash$1 = opts.Hash;
}
salt = $makeSlice(sliceType, saltLength);
_r = io.ReadFull(rand$1, salt); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [sliceType.nil, err];
}
_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; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: SignPSS }; } $f.$ptr = $ptr; $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;
};
$pkg.SignPSS = SignPSS;
VerifyPSS = function(pub, hash$1, hashed, sig, opts) {
var $ptr, _r, hash$1, hashed, opts, pub, sig, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: VerifyPSS }; } $f.$ptr = $ptr; $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;
};
$pkg.VerifyPSS = VerifyPSS;
verifyPSS = function(pub, hash$1, hashed, sig, saltLen) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
nBits = pub.N.BitLen();
if (!((sig.$length === (_q = ((nBits + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))))) {
$s = -1; return $pkg.ErrVerification;
}
s = new big.Int.ptr(false, big.nat.nil).SetBytes(sig);
_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; }
m = _r;
emBits = nBits - 1 >> 0;
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"));
if (emLen < m.Bytes().$length) {
$s = -1; return $pkg.ErrVerification;
}
em = $makeSlice(sliceType, emLen);
copyWithLeftPad(em, m.Bytes());
if (saltLen === -1) {
saltLen = new crypto.Hash(hash$1).Size();
}
_arg = hashed;
_arg$1 = em;
_arg$2 = emBits;
_arg$3 = saltLen;
_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; }
_arg$4 = _r$1;
_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; }
$s = -1; return _r$2;
/* */ } return; } if ($f === undefined) { $f = { $blk: verifyPSS }; } $f.$ptr = $ptr; $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;
};
checkPub = function(pub) {
var $ptr, pub;
if (pub.N === ptrType$1.nil) {
return errPublicModulus;
}
if (pub.E < 2) {
return errPublicExponentSmall;
}
if (pub.E > 2147483647) {
return errPublicExponentLarge;
}
return $ifaceNil;
};
PrivateKey.ptr.prototype.Public = function() {
var $ptr, priv;
priv = this;
return priv.PublicKey;
};
PrivateKey.prototype.Public = function() { return this.$val.Public(); };
PrivateKey.ptr.prototype.Sign = function(rand$1, msg, opts) {
var $ptr, _arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$2, _tuple, msg, ok, opts, priv, pssOpts, rand$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; msg = $f.msg; 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:
priv = this;
_tuple = $assertType(opts, ptrType, true);
pssOpts = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (ok) { */ case 1:
_r = SignPSS(rand$1, priv, pssOpts.Hash, msg, pssOpts); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 2:
_arg = rand$1;
_arg$1 = priv;
_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; }
_arg$2 = _r$1;
_arg$3 = msg;
_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; }
$s = -1; return _r$2;
/* */ } return; } if ($f === undefined) { $f = { $blk: PrivateKey.ptr.prototype.Sign }; } $f.$ptr = $ptr; $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.msg = msg; $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;
};
PrivateKey.prototype.Sign = function(rand$1, msg, opts) { return this.$val.Sign(rand$1, msg, opts); };
PrivateKey.ptr.prototype.Decrypt = function(rand$1, ciphertext, opts) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
plaintext = sliceType.nil;
err = $ifaceNil;
priv = this;
/* */ if ($interfaceIsEqual(opts, $ifaceNil)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if ($interfaceIsEqual(opts, $ifaceNil)) { */ case 1:
_r = DecryptPKCS1v15(rand$1, priv, ciphertext); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
plaintext = _tuple[0];
err = _tuple[1];
$s = -1; return [plaintext, err];
/* } */ case 2:
_ref = opts;
/* */ if ($assertType(_ref, ptrType$2, true)[1]) { $s = 4; continue; }
/* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if ($assertType(_ref, ptrType$2, true)[1]) { */ case 4:
opts$1 = _ref.$val;
_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; }
_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; }
_tuple$1 = _r$2;
plaintext = _tuple$1[0];
err = _tuple$1[1];
$s = -1; return [plaintext, err];
/* } else if ($assertType(_ref, ptrType$3, true)[1]) { */ case 5:
opts$2 = _ref.$val;
l = opts$2.SessionKeyLen;
/* */ if (l > 0) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (l > 0) { */ case 10:
plaintext = $makeSlice(sliceType, l);
_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; }
_tuple$2 = _r$3;
err$1 = _tuple$2[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
_tmp = sliceType.nil;
_tmp$1 = err$1;
plaintext = _tmp;
err = _tmp$1;
$s = -1; return [plaintext, err];
}
_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; }
err$2 = _r$4;
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
_tmp$2 = sliceType.nil;
_tmp$3 = err$2;
plaintext = _tmp$2;
err = _tmp$3;
$s = -1; return [plaintext, err];
}
_tmp$4 = plaintext;
_tmp$5 = $ifaceNil;
plaintext = _tmp$4;
err = _tmp$5;
$s = -1; return [plaintext, err];
/* } else { */ case 11:
_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; }
_tuple$3 = _r$5;
plaintext = _tuple$3[0];
err = _tuple$3[1];
$s = -1; return [plaintext, err];
/* } */ case 12:
$s = 7; continue;
/* } else { */ case 6:
opts$3 = _ref;
_tmp$6 = sliceType.nil;
_tmp$7 = errors.New("crypto/rsa: invalid options for Decrypt");
plaintext = _tmp$6;
err = _tmp$7;
$s = -1; return [plaintext, err];
/* } */ case 7:
$s = -1; return [plaintext, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: PrivateKey.ptr.prototype.Decrypt }; } $f.$ptr = $ptr; $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;
};
PrivateKey.prototype.Decrypt = function(rand$1, ciphertext, opts) { return this.$val.Decrypt(rand$1, ciphertext, opts); };
PrivateKey.ptr.prototype.Validate = function() {
var $ptr, _i, _i$1, _r, _ref, _ref$1, congruence, de, err, modulus, pminus1, prime, prime$1, priv, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
priv = this;
err = checkPub(priv.PublicKey);
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
modulus = new big.Int.ptr(false, big.nat.nil).Set(bigOne);
_ref = priv.Primes;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
prime = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (prime.Cmp(bigOne) <= 0) {
$s = -1; return errors.New("crypto/rsa: invalid prime value");
}
modulus.Mul(modulus, prime);
_i++;
}
if (!((modulus.Cmp(priv.PublicKey.N) === 0))) {
$s = -1; return errors.New("crypto/rsa: invalid modulus");
}
congruence = new big.Int.ptr(false, big.nat.nil);
de = new big.Int.ptr(false, big.nat.nil).SetInt64((new $Int64(0, priv.PublicKey.E)));
de.Mul(de, priv.D);
_ref$1 = priv.Primes;
_i$1 = 0;
/* while (true) { */ case 1:
/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 2; continue; }
prime$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
pminus1 = new big.Int.ptr(false, big.nat.nil).Sub(prime$1, bigOne);
_r = congruence.Mod(de, pminus1); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
if (!((congruence.Cmp(bigOne) === 0))) {
$s = -1; return errors.New("crypto/rsa: invalid exponents");
}
_i$1++;
/* } */ $s = 1; continue; case 2:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: PrivateKey.ptr.prototype.Validate }; } $f.$ptr = $ptr; $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;
};
PrivateKey.prototype.Validate = function() { return this.$val.Validate(); };
incCounter = function(c) {
var $ptr, c;
c.nilCheck, c[3] = ((c.nilCheck, c[3]) + (1) << 24 >>> 24);
if (!(((c.nilCheck, c[3]) === 0))) {
return;
}
c.nilCheck, c[2] = ((c.nilCheck, c[2]) + (1) << 24 >>> 24);
if (!(((c.nilCheck, c[2]) === 0))) {
return;
}
c.nilCheck, c[1] = ((c.nilCheck, c[1]) + (1) << 24 >>> 24);
if (!(((c.nilCheck, c[1]) === 0))) {
return;
}
c.nilCheck, c[0] = ((c.nilCheck, c[0]) + (1) << 24 >>> 24);
};
mgf1XOR = function(out, hash$1, seed) {
var $ptr, _r, _r$1, _r$2, counter, digest, done, hash$1, i, out, seed, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
counter = [counter];
counter[0] = arrayType$1.zero();
digest = sliceType.nil;
done = 0;
/* while (true) { */ case 1:
/* if (!(done < out.$length)) { break; } */ if(!(done < out.$length)) { $s = 2; continue; }
_r = hash$1.Write(seed); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
_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; }
_r$1;
_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; }
digest = _r$2;
$r = hash$1.Reset(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
i = 0;
while (true) {
if (!(i < digest.$length && done < out.$length)) { break; }
((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));
done = done + (1) >> 0;
i = i + (1) >> 0;
}
incCounter(counter[0]);
/* } */ $s = 1; continue; case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: mgf1XOR }; } $f.$ptr = $ptr; $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;
};
encrypt = function(c, pub, m) {
var $ptr, _r, c, e, m, pub, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
e = big.NewInt((new $Int64(0, pub.E)));
_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; }
_r;
$s = -1; return c;
/* */ } return; } if ($f === undefined) { $f = { $blk: encrypt }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.e = e; $f.m = m; $f.pub = pub; $f.$s = $s; $f.$r = $r; return $f;
};
modInverse = function(a, n) {
var $ptr, _r, _tmp, _tmp$1, a, g, ia, n, ok, x, y, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
ia = ptrType$1.nil;
ok = false;
g = new big.Int.ptr(false, big.nat.nil);
x = new big.Int.ptr(false, big.nat.nil);
y = new big.Int.ptr(false, big.nat.nil);
_r = g.GCD(x, y, a, n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
if (!((g.Cmp(bigOne) === 0))) {
$s = -1; return [ia, ok];
}
if (x.Cmp(bigOne) < 0) {
x.Add(x, n);
}
_tmp = x;
_tmp$1 = true;
ia = _tmp;
ok = _tmp$1;
$s = -1; return [ia, ok];
/* */ } return; } if ($f === undefined) { $f = { $blk: modInverse }; } $f.$ptr = $ptr; $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.y = y; $f.$s = $s; $f.$r = $r; return $f;
};
PrivateKey.ptr.prototype.Precompute = function() {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
priv = this;
if (!(priv.Precomputed.Dp === ptrType$1.nil)) {
$s = -1; return;
}
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);
_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; }
_r;
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);
_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; }
_r$1;
_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; }
priv.Precomputed.Qinv = _r$2;
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])));
priv.Precomputed.CRTValues = $makeSlice(sliceType$2, (priv.Primes.$length - 2 >> 0));
i = 2;
/* while (true) { */ case 4:
/* if (!(i < priv.Primes.$length)) { break; } */ if(!(i < priv.Primes.$length)) { $s = 5; continue; }
prime = (x$6 = priv.Primes, ((i < 0 || i >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + i]));
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]));
values.Exp = new big.Int.ptr(false, big.nat.nil).Sub(prime, bigOne);
_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; }
_r$3;
values.R = new big.Int.ptr(false, big.nat.nil).Set(r);
_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; }
values.Coeff = _r$4;
r.Mul(r, prime);
i = i + (1) >> 0;
/* } */ $s = 4; continue; case 5:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: PrivateKey.ptr.prototype.Precompute }; } $f.$ptr = $ptr; $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;
};
PrivateKey.prototype.Precompute = function() { return this.$val.Precompute(); };
decrypt = function(random, priv, c) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
m = ptrType$1.nil;
err = $ifaceNil;
if (c.Cmp(priv.PublicKey.N) > 0) {
err = $pkg.ErrDecryption;
$s = -1; return [m, err];
}
if (priv.PublicKey.N.Sign() === 0) {
_tmp = ptrType$1.nil;
_tmp$1 = $pkg.ErrDecryption;
m = _tmp;
err = _tmp$1;
$s = -1; return [m, err];
}
ir = ptrType$1.nil;
/* */ if (!($interfaceIsEqual(random, $ifaceNil))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!($interfaceIsEqual(random, $ifaceNil))) { */ case 1:
r = ptrType$1.nil;
/* while (true) { */ case 3:
_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; }
_tuple = _r;
r = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [m, err];
}
if (r.Cmp(bigZero) === 0) {
r = bigOne;
}
ok = false;
_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; }
_tuple$1 = _r$1;
ir = _tuple$1[0];
ok = _tuple$1[1];
if (ok) {
/* break; */ $s = 4; continue;
}
/* } */ $s = 3; continue; case 4:
bigE = big.NewInt((new $Int64(0, priv.PublicKey.E)));
_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; }
rpowe = _r$2;
cCopy = new big.Int.ptr(false, big.nat.nil).Set(c);
cCopy.Mul(cCopy, rpowe);
_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; }
_r$3;
c = cCopy;
/* } */ case 2:
/* */ if (priv.Precomputed.Dp === ptrType$1.nil) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (priv.Precomputed.Dp === ptrType$1.nil) { */ case 9:
_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; }
m = _r$4;
$s = 11; continue;
/* } else { */ case 10:
_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; }
m = _r$5;
_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; }
m2 = _r$6;
m.Sub(m, m2);
if (m.Sign() < 0) {
m.Add(m, (x$2 = priv.Primes, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0])));
}
m.Mul(m, priv.Precomputed.Qinv);
_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; }
_r$7;
m.Mul(m, (x$4 = priv.Primes, (1 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 1])));
m.Add(m, m2);
_ref = priv.Precomputed.CRTValues;
_i = 0;
/* while (true) { */ case 16:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 17; continue; }
i = _i;
values = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), CRTValue);
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]));
_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; }
_r$8;
m2.Sub(m2, m);
m2.Mul(m2, values.Coeff);
_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; }
_r$9;
if (m2.Sign() < 0) {
m2.Add(m2, prime);
}
m2.Mul(m2, values.R);
m.Add(m, m2);
_i++;
/* } */ $s = 16; continue; case 17:
/* } */ case 11:
/* */ if (!(ir === ptrType$1.nil)) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if (!(ir === ptrType$1.nil)) { */ case 20:
m.Mul(m, ir);
_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; }
_r$10;
/* } */ case 21:
$s = -1; return [m, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: decrypt }; } $f.$ptr = $ptr; $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;
};
decryptAndCheck = function(random, priv, c) {
var $ptr, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, c, check, err, m, priv, random, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
m = ptrType$1.nil;
err = $ifaceNil;
_r = decrypt(random, priv, c); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
m = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = ptrType$1.nil;
_tmp$1 = err;
m = _tmp;
err = _tmp$1;
$s = -1; return [m, err];
}
_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; }
check = _r$1;
if (!((c.Cmp(check) === 0))) {
_tmp$2 = ptrType$1.nil;
_tmp$3 = errors.New("rsa: internal error");
m = _tmp$2;
err = _tmp$3;
$s = -1; return [m, err];
}
_tmp$4 = m;
_tmp$5 = $ifaceNil;
m = _tmp$4;
err = _tmp$5;
$s = -1; return [m, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: decryptAndCheck }; } $f.$ptr = $ptr; $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;
};
DecryptOAEP = function(hash$1, random, priv, ciphertext, label) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
err = checkPub(priv.PublicKey);
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [sliceType.nil, err];
}
k = (_q = ((priv.PublicKey.N.BitLen() + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
if (ciphertext.$length > k) { _v = true; $s = 3; continue s; }
_r = hash$1.Size(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_v = k < (($imul(_r, 2)) + 2 >> 0); case 3:
/* */ if (_v) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (_v) { */ case 1:
$s = -1; return [sliceType.nil, $pkg.ErrDecryption];
/* } */ case 2:
c = new big.Int.ptr(false, big.nat.nil).SetBytes(ciphertext);
_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; }
_tuple = _r$1;
m = _tuple[0];
err$1 = _tuple[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return [sliceType.nil, err$1];
}
_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; }
_r$2;
_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; }
lHash = _r$3;
$r = hash$1.Reset(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
em = leftPad(m.Bytes(), k);
firstByteIsZero = subtle.ConstantTimeByteEq((0 >= em.$length ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + 0]), 0);
_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; }
seed = $subslice(em, 1, (_r$4 + 1 >> 0));
_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; }
db = $subslice(em, (_r$5 + 1 >> 0));
$r = mgf1XOR(seed, hash$1, db); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = mgf1XOR(db, hash$1, seed); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_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; }
lHash2 = $subslice(db, 0, _r$6);
lHash2Good = subtle.ConstantTimeCompare(lHash, lHash2);
_tmp = 0;
_tmp$1 = 0;
_tmp$2 = 0;
lookingForIndex = _tmp;
index = _tmp$1;
invalid = _tmp$2;
lookingForIndex = 1;
_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; }
rest = $subslice(db, _r$7);
i = 0;
while (true) {
if (!(i < rest.$length)) { break; }
equals0 = subtle.ConstantTimeByteEq(((i < 0 || i >= rest.$length) ? ($throwRuntimeError("index out of range"), undefined) : rest.$array[rest.$offset + i]), 0);
equals1 = subtle.ConstantTimeByteEq(((i < 0 || i >= rest.$length) ? ($throwRuntimeError("index out of range"), undefined) : rest.$array[rest.$offset + i]), 1);
index = subtle.ConstantTimeSelect(lookingForIndex & equals1, i, index);
lookingForIndex = subtle.ConstantTimeSelect(equals1, 0, lookingForIndex);
invalid = subtle.ConstantTimeSelect((lookingForIndex & ~equals0) >> 0, 1, invalid);
i = i + (1) >> 0;
}
if (!(((((((firstByteIsZero & lHash2Good) & ~invalid) >> 0) & ~lookingForIndex) >> 0) === 1))) {
$s = -1; return [sliceType.nil, $pkg.ErrDecryption];
}
$s = -1; return [$subslice(rest, (index + 1 >> 0)), $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: DecryptOAEP }; } $f.$ptr = $ptr; $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;
};
$pkg.DecryptOAEP = DecryptOAEP;
leftPad = function(input, size) {
var $ptr, input, n, out, size;
out = sliceType.nil;
n = input.$length;
if (n > size) {
n = size;
}
out = $makeSlice(sliceType, size);
$copySlice($subslice(out, (out.$length - n >> 0)), input);
return out;
};
ptrType.methods = [{prop: "HashFunc", name: "HashFunc", pkg: "", typ: $funcType([], [crypto.Hash], false)}, {prop: "saltLength", name: "saltLength", pkg: "crypto/rsa", typ: $funcType([], [$Int], false)}];
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)}];
PKCS1v15DecryptOptions.init("", [{prop: "SessionKeyLen", name: "SessionKeyLen", exported: true, typ: $Int, tag: ""}]);
PSSOptions.init("", [{prop: "SaltLength", name: "SaltLength", exported: true, typ: $Int, tag: ""}, {prop: "Hash", name: "Hash", exported: true, typ: crypto.Hash, tag: ""}]);
PublicKey.init("", [{prop: "N", name: "N", exported: true, typ: ptrType$1, tag: ""}, {prop: "E", name: "E", exported: true, typ: $Int, tag: ""}]);
OAEPOptions.init("", [{prop: "Hash", name: "Hash", exported: true, typ: crypto.Hash, tag: ""}, {prop: "Label", name: "Label", exported: true, typ: sliceType, tag: ""}]);
PrivateKey.init("", [{prop: "PublicKey", name: "", exported: true, typ: PublicKey, tag: ""}, {prop: "D", name: "D", exported: true, typ: ptrType$1, tag: ""}, {prop: "Primes", name: "Primes", exported: true, typ: sliceType$1, tag: ""}, {prop: "Precomputed", name: "Precomputed", exported: true, typ: PrecomputedValues, tag: ""}]);
PrecomputedValues.init("", [{prop: "Dp", name: "Dp", exported: true, typ: ptrType$1, tag: ""}, {prop: "Dq", name: "Dq", exported: true, typ: ptrType$1, tag: ""}, {prop: "Qinv", name: "Qinv", exported: true, typ: ptrType$1, tag: ""}, {prop: "CRTValues", name: "CRTValues", exported: true, typ: sliceType$2, tag: ""}]);
CRTValue.init("", [{prop: "Exp", name: "Exp", exported: true, typ: ptrType$1, tag: ""}, {prop: "Coeff", name: "Coeff", exported: true, typ: ptrType$1, tag: ""}, {prop: "R", name: "R", exported: true, typ: ptrType$1, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = crypto.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = rand.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = subtle.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = errors.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = hash.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = math.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = big.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
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]) }]);
bigZero = big.NewInt(new $Int64(0, 0));
bigOne = big.NewInt(new $Int64(0, 1));
errPublicModulus = errors.New("crypto/rsa: missing public modulus");
errPublicExponentSmall = errors.New("crypto/rsa: public exponent too small");
errPublicExponentLarge = errors.New("crypto/rsa: public exponent too large");
$pkg.ErrMessageTooLong = errors.New("crypto/rsa: message too long for RSA public key size");
$pkg.ErrDecryption = errors.New("crypto/rsa: decryption error");
$pkg.ErrVerification = errors.New("crypto/rsa: verification error");
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["crypto/sha1"] = (function() {
var $pkg = {}, $init, crypto, hash, digest, arrayType, arrayType$1, sliceType, arrayType$2, arrayType$3, arrayType$4, ptrType, block, init, New, blockGeneric;
crypto = $packages["crypto"];
hash = $packages["hash"];
digest = $pkg.digest = $newType(0, $kindStruct, "sha1.digest", true, "crypto/sha1", false, function(h_, x_, nx_, len_) {
this.$val = this;
if (arguments.length === 0) {
this.h = arrayType.zero();
this.x = arrayType$1.zero();
this.nx = 0;
this.len = new $Uint64(0, 0);
return;
}
this.h = h_;
this.x = x_;
this.nx = nx_;
this.len = len_;
});
arrayType = $arrayType($Uint32, 5);
arrayType$1 = $arrayType($Uint8, 64);
sliceType = $sliceType($Uint8);
arrayType$2 = $arrayType($Uint8, 20);
arrayType$3 = $arrayType($Uint8, 8);
arrayType$4 = $arrayType($Uint32, 16);
ptrType = $ptrType(digest);
init = function() {
var $ptr;
crypto.RegisterHash(3, New);
};
digest.ptr.prototype.Reset = function() {
var $ptr, d;
d = this;
d.h[0] = 1732584193;
d.h[1] = 4023233417;
d.h[2] = 2562383102;
d.h[3] = 271733878;
d.h[4] = 3285377520;
d.nx = 0;
d.len = new $Uint64(0, 0);
};
digest.prototype.Reset = function() { return this.$val.Reset(); };
New = function() {
var $ptr, d;
d = new digest.ptr(arrayType.zero(), arrayType$1.zero(), 0, new $Uint64(0, 0));
d.Reset();
return d;
};
$pkg.New = New;
digest.ptr.prototype.Size = function() {
var $ptr, d;
d = this;
return 20;
};
digest.prototype.Size = function() { return this.$val.Size(); };
digest.ptr.prototype.BlockSize = function() {
var $ptr, d;
d = this;
return 64;
};
digest.prototype.BlockSize = function() { return this.$val.BlockSize(); };
digest.ptr.prototype.Write = function(p) {
var $ptr, d, err, n, n$1, nn, p, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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:
nn = 0;
err = $ifaceNil;
d = this;
nn = p.$length;
d.len = (x = d.len, x$1 = (new $Uint64(0, nn)), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low));
/* */ if (d.nx > 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (d.nx > 0) { */ case 1:
n = $copySlice($subslice(new sliceType(d.x), d.nx), p);
d.nx = d.nx + (n) >> 0;
/* */ if (d.nx === 64) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (d.nx === 64) { */ case 3:
$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; }
d.nx = 0;
/* } */ case 4:
p = $subslice(p, n);
/* } */ case 2:
/* */ if (p.$length >= 64) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (p.$length >= 64) { */ case 6:
n$1 = (p.$length & ~63) >> 0;
$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; }
p = $subslice(p, n$1);
/* } */ case 7:
if (p.$length > 0) {
d.nx = $copySlice(new sliceType(d.x), p);
}
$s = -1; return [nn, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.Write }; } $f.$ptr = $ptr; $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;
};
digest.prototype.Write = function(p) { return this.$val.Write(p); };
digest.ptr.prototype.Sum = function(in$1) {
var $ptr, _r, d, d0, hash$1, in$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
d0 = this;
d = $clone(d0, digest);
_r = d.checkSum(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
hash$1 = $clone(_r, arrayType$2);
$s = -1; return $appendSlice(in$1, new sliceType(hash$1));
/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.Sum }; } $f.$ptr = $ptr; $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;
};
digest.prototype.Sum = function(in$1) { return this.$val.Sum(in$1); };
digest.ptr.prototype.checkSum = function() {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
d = this;
len = d.len;
tmp = arrayType$1.zero();
tmp[0] = 128;
/* */ if ((x = $div64(len, new $Uint64(0, 64), true), (x.$high < 0 || (x.$high === 0 && x.$low < 56)))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if ((x = $div64(len, new $Uint64(0, 64), true), (x.$high < 0 || (x.$high === 0 && x.$low < 56)))) { */ case 1:
_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; }
_r;
$s = 3; continue;
/* } else { */ case 2:
_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; }
_r$1;
/* } */ case 3:
len = $shiftLeft64(len, (3));
i = 0;
while (true) {
if (!(i < 8)) { break; }
((i < 0 || i >= tmp.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp[i] = (($shiftRightUint64(len, ((56 - (8 * i >>> 0) >>> 0))).$low << 24 >>> 24)));
i = i + (1) >>> 0;
}
_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; }
_r$2;
if (!((d.nx === 0))) {
$panic(new $String("d.nx != 0"));
}
digest$1 = arrayType$2.zero();
_ref = d.h;
_i = 0;
while (true) {
if (!(_i < 5)) { break; }
i$1 = _i;
s = ((_i < 0 || _i >= _ref.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref[_i]);
(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))));
(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))));
(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))));
(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))));
_i++;
}
$s = -1; return digest$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.checkSum }; } $f.$ptr = $ptr; $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;
};
digest.prototype.checkSum = function() { return this.$val.checkSum(); };
digest.ptr.prototype.ConstantTimeSum = function(in$1) {
var $ptr, _r, d, d0, hash$1, in$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
d0 = this;
d = $clone(d0, digest);
_r = d.constSum(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
hash$1 = $clone(_r, arrayType$2);
$s = -1; return $appendSlice(in$1, new sliceType(hash$1));
/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.ConstantTimeSum }; } $f.$ptr = $ptr; $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;
};
digest.prototype.ConstantTimeSum = function(in$1) { return this.$val.ConstantTimeSum(in$1); };
digest.ptr.prototype.constSum = function() {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
d = this;
length = arrayType$3.zero();
l = $shiftLeft64(d.len, 3);
i = 0;
while (true) {
if (!(i < 8)) { break; }
((i < 0 || i >= length.length) ? ($throwRuntimeError("index out of range"), undefined) : length[i] = (($shiftRightUint64(l, ((56 - (8 * i >>> 0) >>> 0))).$low << 24 >>> 24)));
i = i + (1) >>> 0;
}
nx = ((d.nx << 24 >>> 24));
t = nx - 56 << 24 >>> 24;
mask1b = (((((t << 24 >> 24)) >> 7 << 24 >> 24) << 24 >>> 24));
separator = 128;
i$1 = 0;
while (true) {
if (!(i$1 < 64)) { break; }
mask = ((((((i$1 - nx << 24 >>> 24) << 24 >> 24)) >> 7 << 24 >> 24) << 24 >>> 24));
(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)));
separator = (separator & (mask)) >>> 0;
if (i$1 >= 56) {
(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)));
}
i$1 = i$1 + (1) << 24 >>> 24;
}
$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; }
digest$1 = arrayType$2.zero();
_ref = d.h;
_i = 0;
while (true) {
if (!(_i < 5)) { break; }
i$2 = _i;
s = ((_i < 0 || _i >= _ref.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref[_i]);
(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)));
(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)));
(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)));
(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)));
_i++;
}
i$3 = 0;
while (true) {
if (!(i$3 < 64)) { break; }
if (i$3 < 56) {
(x$9 = d.x, ((i$3 < 0 || i$3 >= x$9.length) ? ($throwRuntimeError("index out of range"), undefined) : x$9[i$3] = separator));
separator = 0;
} else {
(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]))));
}
i$3 = i$3 + (1) << 24 >>> 24;
}
$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; }
_ref$1 = d.h;
_i$1 = 0;
while (true) {
if (!(_i$1 < 5)) { break; }
i$4 = _i$1;
s$1 = ((_i$1 < 0 || _i$1 >= _ref$1.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1[_i$1]);
_index = $imul(i$4, 4);
((_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));
_index$1 = ($imul(i$4, 4)) + 1 >> 0;
((_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));
_index$2 = ($imul(i$4, 4)) + 2 >> 0;
((_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));
_index$3 = ($imul(i$4, 4)) + 3 >> 0;
((_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));
_i$1++;
}
$s = -1; return digest$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.constSum }; } $f.$ptr = $ptr; $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;
};
digest.prototype.constSum = function() { return this.$val.constSum(); };
blockGeneric = function(dig, p) {
var $ptr, _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;
w = arrayType$4.zero();
_tmp = dig.h[0];
_tmp$1 = dig.h[1];
_tmp$2 = dig.h[2];
_tmp$3 = dig.h[3];
_tmp$4 = dig.h[4];
h0 = _tmp;
h1 = _tmp$1;
h2 = _tmp$2;
h3 = _tmp$3;
h4 = _tmp$4;
while (true) {
if (!(p.$length >= 64)) { break; }
i = 0;
while (true) {
if (!(i < 16)) { break; }
j = $imul(i, 4);
((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));
i = i + (1) >> 0;
}
_tmp$5 = h0;
_tmp$6 = h1;
_tmp$7 = h2;
_tmp$8 = h3;
_tmp$9 = h4;
a = _tmp$5;
b = _tmp$6;
c = _tmp$7;
d = _tmp$8;
e = _tmp$9;
i$1 = 0;
while (true) {
if (!(i$1 < 16)) { break; }
f = (((b & c) >>> 0) | ((((~b >>> 0)) & d) >>> 0)) >>> 0;
a5 = ((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0;
b30 = ((b << 30 >>> 0) | (b >>> 2 >>> 0)) >>> 0;
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;
_tmp$10 = t;
_tmp$11 = a;
_tmp$12 = b30;
_tmp$13 = c;
_tmp$14 = d;
a = _tmp$10;
b = _tmp$11;
c = _tmp$12;
d = _tmp$13;
e = _tmp$14;
i$1 = i$1 + (1) >> 0;
}
while (true) {
if (!(i$1 < 20)) { break; }
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;
(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)));
f$1 = (((b & c) >>> 0) | ((((~b >>> 0)) & d) >>> 0)) >>> 0;
a5$1 = ((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0;
b30$1 = ((b << 30 >>> 0) | (b >>> 2 >>> 0)) >>> 0;
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;
_tmp$15 = t$1;
_tmp$16 = a;
_tmp$17 = b30$1;
_tmp$18 = c;
_tmp$19 = d;
a = _tmp$15;
b = _tmp$16;
c = _tmp$17;
d = _tmp$18;
e = _tmp$19;
i$1 = i$1 + (1) >> 0;
}
while (true) {
if (!(i$1 < 40)) { break; }
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;
(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)));
f$2 = (((b ^ c) >>> 0) ^ d) >>> 0;
a5$2 = ((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0;
b30$2 = ((b << 30 >>> 0) | (b >>> 2 >>> 0)) >>> 0;
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;
_tmp$20 = t$2;
_tmp$21 = a;
_tmp$22 = b30$2;
_tmp$23 = c;
_tmp$24 = d;
a = _tmp$20;
b = _tmp$21;
c = _tmp$22;
d = _tmp$23;
e = _tmp$24;
i$1 = i$1 + (1) >> 0;
}
while (true) {
if (!(i$1 < 60)) { break; }
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;
(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)));
f$3 = (((((((b | c) >>> 0)) & d) >>> 0)) | (((b & c) >>> 0))) >>> 0;
a5$3 = ((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0;
b30$3 = ((b << 30 >>> 0) | (b >>> 2 >>> 0)) >>> 0;
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;
_tmp$25 = t$3;
_tmp$26 = a;
_tmp$27 = b30$3;
_tmp$28 = c;
_tmp$29 = d;
a = _tmp$25;
b = _tmp$26;
c = _tmp$27;
d = _tmp$28;
e = _tmp$29;
i$1 = i$1 + (1) >> 0;
}
while (true) {
if (!(i$1 < 80)) { break; }
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;
(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)));
f$4 = (((b ^ c) >>> 0) ^ d) >>> 0;
a5$4 = ((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0;
b30$4 = ((b << 30 >>> 0) | (b >>> 2 >>> 0)) >>> 0;
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;
_tmp$30 = t$4;
_tmp$31 = a;
_tmp$32 = b30$4;
_tmp$33 = c;
_tmp$34 = d;
a = _tmp$30;
b = _tmp$31;
c = _tmp$32;
d = _tmp$33;
e = _tmp$34;
i$1 = i$1 + (1) >> 0;
}
h0 = h0 + (a) >>> 0;
h1 = h1 + (b) >>> 0;
h2 = h2 + (c) >>> 0;
h3 = h3 + (d) >>> 0;
h4 = h4 + (e) >>> 0;
p = $subslice(p, 64);
}
_tmp$35 = h0;
_tmp$36 = h1;
_tmp$37 = h2;
_tmp$38 = h3;
_tmp$39 = h4;
dig.h[0] = _tmp$35;
dig.h[1] = _tmp$36;
dig.h[2] = _tmp$37;
dig.h[3] = _tmp$38;
dig.h[4] = _tmp$39;
};
ptrType.methods = [{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$2], false)}, {prop: "ConstantTimeSum", name: "ConstantTimeSum", pkg: "", typ: $funcType([sliceType], [sliceType], false)}, {prop: "constSum", name: "constSum", pkg: "crypto/sha1", typ: $funcType([], [arrayType$2], false)}];
digest.init("crypto/sha1", [{prop: "h", name: "h", exported: false, typ: arrayType, tag: ""}, {prop: "x", name: "x", exported: false, typ: arrayType$1, tag: ""}, {prop: "nx", name: "nx", exported: false, typ: $Int, tag: ""}, {prop: "len", name: "len", exported: false, typ: $Uint64, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = crypto.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = hash.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
block = blockGeneric;
init();
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["crypto/sha256"] = (function() {
var $pkg = {}, $init, crypto, hash, digest, sliceType, arrayType, arrayType$1, sliceType$1, arrayType$2, arrayType$4, ptrType, _K, block, init, New, New224, blockGeneric;
crypto = $packages["crypto"];
hash = $packages["hash"];
digest = $pkg.digest = $newType(0, $kindStruct, "sha256.digest", true, "crypto/sha256", false, function(h_, x_, nx_, len_, is224_) {
this.$val = this;
if (arguments.length === 0) {
this.h = arrayType.zero();
this.x = arrayType$1.zero();
this.nx = 0;
this.len = new $Uint64(0, 0);
this.is224 = false;
return;
}
this.h = h_;
this.x = x_;
this.nx = nx_;
this.len = len_;
this.is224 = is224_;
});
sliceType = $sliceType($Uint32);
arrayType = $arrayType($Uint32, 8);
arrayType$1 = $arrayType($Uint8, 64);
sliceType$1 = $sliceType($Uint8);
arrayType$2 = $arrayType($Uint8, 32);
arrayType$4 = $arrayType($Uint32, 64);
ptrType = $ptrType(digest);
init = function() {
var $ptr;
crypto.RegisterHash(4, New224);
crypto.RegisterHash(5, New);
};
digest.ptr.prototype.Reset = function() {
var $ptr, d;
d = this;
if (!d.is224) {
d.h[0] = 1779033703;
d.h[1] = 3144134277;
d.h[2] = 1013904242;
d.h[3] = 2773480762;
d.h[4] = 1359893119;
d.h[5] = 2600822924;
d.h[6] = 528734635;
d.h[7] = 1541459225;
} else {
d.h[0] = 3238371032;
d.h[1] = 914150663;
d.h[2] = 812702999;
d.h[3] = 4144912697;
d.h[4] = 4290775857;
d.h[5] = 1750603025;
d.h[6] = 1694076839;
d.h[7] = 3204075428;
}
d.nx = 0;
d.len = new $Uint64(0, 0);
};
digest.prototype.Reset = function() { return this.$val.Reset(); };
New = function() {
var $ptr, d;
d = new digest.ptr(arrayType.zero(), arrayType$1.zero(), 0, new $Uint64(0, 0), false);
d.Reset();
return d;
};
$pkg.New = New;
New224 = function() {
var $ptr, d;
d = new digest.ptr(arrayType.zero(), arrayType$1.zero(), 0, new $Uint64(0, 0), false);
d.is224 = true;
d.Reset();
return d;
};
$pkg.New224 = New224;
digest.ptr.prototype.Size = function() {
var $ptr, d;
d = this;
if (!d.is224) {
return 32;
}
return 28;
};
digest.prototype.Size = function() { return this.$val.Size(); };
digest.ptr.prototype.BlockSize = function() {
var $ptr, d;
d = this;
return 64;
};
digest.prototype.BlockSize = function() { return this.$val.BlockSize(); };
digest.ptr.prototype.Write = function(p) {
var $ptr, d, err, n, n$1, nn, p, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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:
nn = 0;
err = $ifaceNil;
d = this;
nn = p.$length;
d.len = (x = d.len, x$1 = (new $Uint64(0, nn)), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low));
/* */ if (d.nx > 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (d.nx > 0) { */ case 1:
n = $copySlice($subslice(new sliceType$1(d.x), d.nx), p);
d.nx = d.nx + (n) >> 0;
/* */ if (d.nx === 64) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (d.nx === 64) { */ case 3:
$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; }
d.nx = 0;
/* } */ case 4:
p = $subslice(p, n);
/* } */ case 2:
/* */ if (p.$length >= 64) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (p.$length >= 64) { */ case 6:
n$1 = (p.$length & ~63) >> 0;
$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; }
p = $subslice(p, n$1);
/* } */ case 7:
if (p.$length > 0) {
d.nx = $copySlice(new sliceType$1(d.x), p);
}
$s = -1; return [nn, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.Write }; } $f.$ptr = $ptr; $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;
};
digest.prototype.Write = function(p) { return this.$val.Write(p); };
digest.ptr.prototype.Sum = function(in$1) {
var $ptr, _r, d, d0, hash$1, in$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
d0 = this;
d = $clone(d0, digest);
_r = d.checkSum(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
hash$1 = $clone(_r, arrayType$2);
if (d.is224) {
$s = -1; return $appendSlice(in$1, $subslice(new sliceType$1(hash$1), 0, 28));
}
$s = -1; return $appendSlice(in$1, new sliceType$1(hash$1));
/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.Sum }; } $f.$ptr = $ptr; $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;
};
digest.prototype.Sum = function(in$1) { return this.$val.Sum(in$1); };
digest.ptr.prototype.checkSum = function() {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
d = this;
len = d.len;
tmp = arrayType$1.zero();
tmp[0] = 128;
/* */ if ((x = $div64(len, new $Uint64(0, 64), true), (x.$high < 0 || (x.$high === 0 && x.$low < 56)))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if ((x = $div64(len, new $Uint64(0, 64), true), (x.$high < 0 || (x.$high === 0 && x.$low < 56)))) { */ case 1:
_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; }
_r;
$s = 3; continue;
/* } else { */ case 2:
_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; }
_r$1;
/* } */ case 3:
len = $shiftLeft64(len, (3));
i = 0;
while (true) {
if (!(i < 8)) { break; }
((i < 0 || i >= tmp.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp[i] = (($shiftRightUint64(len, ((56 - (8 * i >>> 0) >>> 0))).$low << 24 >>> 24)));
i = i + (1) >>> 0;
}
_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; }
_r$2;
if (!((d.nx === 0))) {
$panic(new $String("d.nx != 0"));
}
h = new sliceType(d.h);
if (d.is224) {
h = $subslice(new sliceType(d.h), 0, 7);
}
digest$1 = arrayType$2.zero();
_ref = h;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i$1 = _i;
s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
(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))));
(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))));
(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))));
(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))));
_i++;
}
$s = -1; return digest$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.checkSum }; } $f.$ptr = $ptr; $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;
};
digest.prototype.checkSum = function() { return this.$val.checkSum(); };
blockGeneric = function(dig, p) {
var $ptr, _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;
w = arrayType$4.zero();
_tmp = dig.h[0];
_tmp$1 = dig.h[1];
_tmp$2 = dig.h[2];
_tmp$3 = dig.h[3];
_tmp$4 = dig.h[4];
_tmp$5 = dig.h[5];
_tmp$6 = dig.h[6];
_tmp$7 = dig.h[7];
h0 = _tmp;
h1 = _tmp$1;
h2 = _tmp$2;
h3 = _tmp$3;
h4 = _tmp$4;
h5 = _tmp$5;
h6 = _tmp$6;
h7 = _tmp$7;
while (true) {
if (!(p.$length >= 64)) { break; }
i = 0;
while (true) {
if (!(i < 16)) { break; }
j = $imul(i, 4);
((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));
i = i + (1) >> 0;
}
i$1 = 16;
while (true) {
if (!(i$1 < 64)) { break; }
v1 = (x$3 = i$1 - 2 >> 0, ((x$3 < 0 || x$3 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$3]));
t1 = (((((((v1 >>> 17 >>> 0) | (v1 << 15 >>> 0)) >>> 0)) ^ ((((v1 >>> 19 >>> 0) | (v1 << 13 >>> 0)) >>> 0))) >>> 0) ^ ((v1 >>> 10 >>> 0))) >>> 0;
v2 = (x$4 = i$1 - 15 >> 0, ((x$4 < 0 || x$4 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$4]));
t2 = (((((((v2 >>> 7 >>> 0) | (v2 << 25 >>> 0)) >>> 0)) ^ ((((v2 >>> 18 >>> 0) | (v2 << 14 >>> 0)) >>> 0))) >>> 0) ^ ((v2 >>> 3 >>> 0))) >>> 0;
((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));
i$1 = i$1 + (1) >> 0;
}
_tmp$8 = h0;
_tmp$9 = h1;
_tmp$10 = h2;
_tmp$11 = h3;
_tmp$12 = h4;
_tmp$13 = h5;
_tmp$14 = h6;
_tmp$15 = h7;
a = _tmp$8;
b = _tmp$9;
c = _tmp$10;
d = _tmp$11;
e = _tmp$12;
f = _tmp$13;
g = _tmp$14;
h = _tmp$15;
i$2 = 0;
while (true) {
if (!(i$2 < 64)) { break; }
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;
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;
h = g;
g = f;
f = e;
e = d + t1$1 >>> 0;
d = c;
c = b;
b = a;
a = t1$1 + t2$1 >>> 0;
i$2 = i$2 + (1) >> 0;
}
h0 = h0 + (a) >>> 0;
h1 = h1 + (b) >>> 0;
h2 = h2 + (c) >>> 0;
h3 = h3 + (d) >>> 0;
h4 = h4 + (e) >>> 0;
h5 = h5 + (f) >>> 0;
h6 = h6 + (g) >>> 0;
h7 = h7 + (h) >>> 0;
p = $subslice(p, 64);
}
_tmp$16 = h0;
_tmp$17 = h1;
_tmp$18 = h2;
_tmp$19 = h3;
_tmp$20 = h4;
_tmp$21 = h5;
_tmp$22 = h6;
_tmp$23 = h7;
dig.h[0] = _tmp$16;
dig.h[1] = _tmp$17;
dig.h[2] = _tmp$18;
dig.h[3] = _tmp$19;
dig.h[4] = _tmp$20;
dig.h[5] = _tmp$21;
dig.h[6] = _tmp$22;
dig.h[7] = _tmp$23;
};
ptrType.methods = [{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)}];
digest.init("crypto/sha256", [{prop: "h", name: "h", exported: false, typ: arrayType, tag: ""}, {prop: "x", name: "x", exported: false, typ: arrayType$1, tag: ""}, {prop: "nx", name: "nx", exported: false, typ: $Int, tag: ""}, {prop: "len", name: "len", exported: false, typ: $Uint64, tag: ""}, {prop: "is224", name: "is224", exported: false, typ: $Bool, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = crypto.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = hash.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_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]);
block = blockGeneric;
init();
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["crypto/dsa"] = (function() {
var $pkg = {}, $init, errors, io, big, Parameters, PublicKey, ptrType, Verify;
errors = $packages["errors"];
io = $packages["io"];
big = $packages["math/big"];
Parameters = $pkg.Parameters = $newType(0, $kindStruct, "dsa.Parameters", true, "crypto/dsa", true, function(P_, Q_, G_) {
this.$val = this;
if (arguments.length === 0) {
this.P = ptrType.nil;
this.Q = ptrType.nil;
this.G = ptrType.nil;
return;
}
this.P = P_;
this.Q = Q_;
this.G = G_;
});
PublicKey = $pkg.PublicKey = $newType(0, $kindStruct, "dsa.PublicKey", true, "crypto/dsa", true, function(Parameters_, Y_) {
this.$val = this;
if (arguments.length === 0) {
this.Parameters = new Parameters.ptr(ptrType.nil, ptrType.nil, ptrType.nil);
this.Y = ptrType.nil;
return;
}
this.Parameters = Parameters_;
this.Y = Y_;
});
ptrType = $ptrType(big.Int);
Verify = function(pub, hash, r, s) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
if (pub.Parameters.P.Sign() === 0) {
$s = -1; return false;
}
if (r.Sign() < 1 || r.Cmp(pub.Parameters.Q) >= 0) {
$s = -1; return false;
}
if (s.Sign() < 1 || s.Cmp(pub.Parameters.Q) >= 0) {
$s = -1; return false;
}
_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; }
w = _r;
n = pub.Parameters.Q.BitLen();
if (!(((n & 7) === 0))) {
$s = -1; return false;
}
z = new big.Int.ptr(false, big.nat.nil).SetBytes(hash);
u1 = new big.Int.ptr(false, big.nat.nil).Mul(z, w);
_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; }
_r$1;
u2 = w.Mul(r, w);
_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; }
_r$2;
_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; }
v = _r$3;
_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; }
_r$4;
v.Mul(v, u2);
_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; }
_r$5;
_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; }
_r$6;
$s = -1; return v.Cmp(r) === 0;
/* */ } return; } if ($f === undefined) { $f = { $blk: Verify }; } $f.$ptr = $ptr; $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;
};
$pkg.Verify = Verify;
Parameters.init("", [{prop: "P", name: "P", exported: true, typ: ptrType, tag: ""}, {prop: "Q", name: "Q", exported: true, typ: ptrType, tag: ""}, {prop: "G", name: "G", exported: true, typ: ptrType, tag: ""}]);
PublicKey.init("", [{prop: "Parameters", name: "", exported: true, typ: Parameters, tag: ""}, {prop: "Y", name: "Y", exported: true, typ: ptrType, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = big.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$pkg.ErrInvalidPublicKey = errors.New("crypto/dsa: invalid public key");
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["crypto/x509/pkix"] = (function() {
var $pkg = {}, $init, asn1, big, time, AlgorithmIdentifier, RDNSequence, RelativeDistinguishedNameSET, AttributeTypeAndValue, Extension, Name, CertificateList, TBSCertificateList, RevokedCertificate, sliceType, sliceType$1, sliceType$2, sliceType$3, ptrType, ptrType$1, ptrType$2, sliceType$5, sliceType$6, ptrType$3, ptrType$4, oidCountry, oidOrganization, oidOrganizationalUnit, oidCommonName, oidSerialNumber, oidLocality, oidProvince, oidStreetAddress, oidPostalCode, oidInAttributeTypeAndValue;
asn1 = $packages["encoding/asn1"];
big = $packages["math/big"];
time = $packages["time"];
AlgorithmIdentifier = $pkg.AlgorithmIdentifier = $newType(0, $kindStruct, "pkix.AlgorithmIdentifier", true, "crypto/x509/pkix", true, function(Algorithm_, Parameters_) {
this.$val = this;
if (arguments.length === 0) {
this.Algorithm = asn1.ObjectIdentifier.nil;
this.Parameters = new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil);
return;
}
this.Algorithm = Algorithm_;
this.Parameters = Parameters_;
});
RDNSequence = $pkg.RDNSequence = $newType(12, $kindSlice, "pkix.RDNSequence", true, "crypto/x509/pkix", true, null);
RelativeDistinguishedNameSET = $pkg.RelativeDistinguishedNameSET = $newType(12, $kindSlice, "pkix.RelativeDistinguishedNameSET", true, "crypto/x509/pkix", true, null);
AttributeTypeAndValue = $pkg.AttributeTypeAndValue = $newType(0, $kindStruct, "pkix.AttributeTypeAndValue", true, "crypto/x509/pkix", true, function(Type_, Value_) {
this.$val = this;
if (arguments.length === 0) {
this.Type = asn1.ObjectIdentifier.nil;
this.Value = $ifaceNil;
return;
}
this.Type = Type_;
this.Value = Value_;
});
Extension = $pkg.Extension = $newType(0, $kindStruct, "pkix.Extension", true, "crypto/x509/pkix", true, function(Id_, Critical_, Value_) {
this.$val = this;
if (arguments.length === 0) {
this.Id = asn1.ObjectIdentifier.nil;
this.Critical = false;
this.Value = sliceType$3.nil;
return;
}
this.Id = Id_;
this.Critical = Critical_;
this.Value = Value_;
});
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_) {
this.$val = this;
if (arguments.length === 0) {
this.Country = sliceType$2.nil;
this.Organization = sliceType$2.nil;
this.OrganizationalUnit = sliceType$2.nil;
this.Locality = sliceType$2.nil;
this.Province = sliceType$2.nil;
this.StreetAddress = sliceType$2.nil;
this.PostalCode = sliceType$2.nil;
this.SerialNumber = "";
this.CommonName = "";
this.Names = sliceType$1.nil;
this.ExtraNames = sliceType$1.nil;
return;
}
this.Country = Country_;
this.Organization = Organization_;
this.OrganizationalUnit = OrganizationalUnit_;
this.Locality = Locality_;
this.Province = Province_;
this.StreetAddress = StreetAddress_;
this.PostalCode = PostalCode_;
this.SerialNumber = SerialNumber_;
this.CommonName = CommonName_;
this.Names = Names_;
this.ExtraNames = ExtraNames_;
});
CertificateList = $pkg.CertificateList = $newType(0, $kindStruct, "pkix.CertificateList", true, "crypto/x509/pkix", true, function(TBSCertList_, SignatureAlgorithm_, SignatureValue_) {
this.$val = this;
if (arguments.length === 0) {
this.TBSCertList = new TBSCertificateList.ptr(asn1.RawContent.nil, 0, new AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil)), RDNSequence.nil, new time.Time.ptr(new $Int64(0, 0), 0, ptrType$2.nil), new time.Time.ptr(new $Int64(0, 0), 0, ptrType$2.nil), sliceType$5.nil, sliceType$6.nil);
this.SignatureAlgorithm = new AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil));
this.SignatureValue = new asn1.BitString.ptr(sliceType$3.nil, 0);
return;
}
this.TBSCertList = TBSCertList_;
this.SignatureAlgorithm = SignatureAlgorithm_;
this.SignatureValue = SignatureValue_;
});
TBSCertificateList = $pkg.TBSCertificateList = $newType(0, $kindStruct, "pkix.TBSCertificateList", true, "crypto/x509/pkix", true, function(Raw_, Version_, Signature_, Issuer_, ThisUpdate_, NextUpdate_, RevokedCertificates_, Extensions_) {
this.$val = this;
if (arguments.length === 0) {
this.Raw = asn1.RawContent.nil;
this.Version = 0;
this.Signature = new AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil));
this.Issuer = RDNSequence.nil;
this.ThisUpdate = new time.Time.ptr(new $Int64(0, 0), 0, ptrType$2.nil);
this.NextUpdate = new time.Time.ptr(new $Int64(0, 0), 0, ptrType$2.nil);
this.RevokedCertificates = sliceType$5.nil;
this.Extensions = sliceType$6.nil;
return;
}
this.Raw = Raw_;
this.Version = Version_;
this.Signature = Signature_;
this.Issuer = Issuer_;
this.ThisUpdate = ThisUpdate_;
this.NextUpdate = NextUpdate_;
this.RevokedCertificates = RevokedCertificates_;
this.Extensions = Extensions_;
});
RevokedCertificate = $pkg.RevokedCertificate = $newType(0, $kindStruct, "pkix.RevokedCertificate", true, "crypto/x509/pkix", true, function(SerialNumber_, RevocationTime_, Extensions_) {
this.$val = this;
if (arguments.length === 0) {
this.SerialNumber = ptrType$4.nil;
this.RevocationTime = new time.Time.ptr(new $Int64(0, 0), 0, ptrType$2.nil);
this.Extensions = sliceType$6.nil;
return;
}
this.SerialNumber = SerialNumber_;
this.RevocationTime = RevocationTime_;
this.Extensions = Extensions_;
});
sliceType = $sliceType($Int);
sliceType$1 = $sliceType(AttributeTypeAndValue);
sliceType$2 = $sliceType($String);
sliceType$3 = $sliceType($Uint8);
ptrType = $ptrType(RDNSequence);
ptrType$1 = $ptrType(Name);
ptrType$2 = $ptrType(time.Location);
sliceType$5 = $sliceType(RevokedCertificate);
sliceType$6 = $sliceType(Extension);
ptrType$3 = $ptrType(CertificateList);
ptrType$4 = $ptrType(big.Int);
Name.ptr.prototype.FillFromRDNSequence = function(rdns) {
var $ptr, _1, _i, _i$1, _ref, _ref$1, _tuple, atv, n, ok, rdn, rdns, t, value;
n = this;
_ref = rdns.$get();
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
rdn = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (rdn.$length === 0) {
_i++;
continue;
}
_ref$1 = rdn;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
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);
n.Names = $append(n.Names, atv);
_tuple = $assertType(atv.Value, $String, true);
value = _tuple[0];
ok = _tuple[1];
if (!ok) {
_i$1++;
continue;
}
t = atv.Type;
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)) {
_1 = (3 >= t.$length ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + 3]);
if (_1 === (3)) {
n.CommonName = value;
} else if (_1 === (5)) {
n.SerialNumber = value;
} else if (_1 === (6)) {
n.Country = $append(n.Country, value);
} else if (_1 === (7)) {
n.Locality = $append(n.Locality, value);
} else if (_1 === (8)) {
n.Province = $append(n.Province, value);
} else if (_1 === (9)) {
n.StreetAddress = $append(n.StreetAddress, value);
} else if (_1 === (10)) {
n.Organization = $append(n.Organization, value);
} else if (_1 === (11)) {
n.OrganizationalUnit = $append(n.OrganizationalUnit, value);
} else if (_1 === (17)) {
n.PostalCode = $append(n.PostalCode, value);
}
}
_i$1++;
}
_i++;
}
};
Name.prototype.FillFromRDNSequence = function(rdns) { return this.$val.FillFromRDNSequence(rdns); };
Name.ptr.prototype.appendRDNs = function(in$1, values, oid) {
var $ptr, _i, _ref, i, in$1, n, oid, s, value, values;
n = this;
if ((values.$length === 0) || oidInAttributeTypeAndValue(oid, n.ExtraNames)) {
return in$1;
}
s = $makeSlice(sliceType$1, values.$length);
_ref = values;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
value = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]).Type = oid;
((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]).Value = new $String(value);
_i++;
}
return $append(in$1, $subslice(new RelativeDistinguishedNameSET(s.$array), s.$offset, s.$offset + s.$length));
};
Name.prototype.appendRDNs = function(in$1, values, oid) { return this.$val.appendRDNs(in$1, values, oid); };
Name.ptr.prototype.ToRDNSequence = function() {
var $ptr, _i, _ref, atv, n, ret, x;
ret = RDNSequence.nil;
n = this;
ret = $clone(n, Name).appendRDNs(ret, n.Country, $subslice(new asn1.ObjectIdentifier(oidCountry.$array), oidCountry.$offset, oidCountry.$offset + oidCountry.$length));
ret = $clone(n, Name).appendRDNs(ret, n.Province, $subslice(new asn1.ObjectIdentifier(oidProvince.$array), oidProvince.$offset, oidProvince.$offset + oidProvince.$length));
ret = $clone(n, Name).appendRDNs(ret, n.Locality, $subslice(new asn1.ObjectIdentifier(oidLocality.$array), oidLocality.$offset, oidLocality.$offset + oidLocality.$length));
ret = $clone(n, Name).appendRDNs(ret, n.StreetAddress, $subslice(new asn1.ObjectIdentifier(oidStreetAddress.$array), oidStreetAddress.$offset, oidStreetAddress.$offset + oidStreetAddress.$length));
ret = $clone(n, Name).appendRDNs(ret, n.PostalCode, $subslice(new asn1.ObjectIdentifier(oidPostalCode.$array), oidPostalCode.$offset, oidPostalCode.$offset + oidPostalCode.$length));
ret = $clone(n, Name).appendRDNs(ret, n.Organization, $subslice(new asn1.ObjectIdentifier(oidOrganization.$array), oidOrganization.$offset, oidOrganization.$offset + oidOrganization.$length));
ret = $clone(n, Name).appendRDNs(ret, n.OrganizationalUnit, $subslice(new asn1.ObjectIdentifier(oidOrganizationalUnit.$array), oidOrganizationalUnit.$offset, oidOrganizationalUnit.$offset + oidOrganizationalUnit.$length));
if (n.CommonName.length > 0) {
ret = $clone(n, Name).appendRDNs(ret, new sliceType$2([n.CommonName]), $subslice(new asn1.ObjectIdentifier(oidCommonName.$array), oidCommonName.$offset, oidCommonName.$offset + oidCommonName.$length));
}
if (n.SerialNumber.length > 0) {
ret = $clone(n, Name).appendRDNs(ret, new sliceType$2([n.SerialNumber]), $subslice(new asn1.ObjectIdentifier(oidSerialNumber.$array), oidSerialNumber.$offset, oidSerialNumber.$offset + oidSerialNumber.$length));
}
_ref = n.ExtraNames;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
atv = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), AttributeTypeAndValue);
ret = $append(ret, (x = new sliceType$1([$clone(atv, AttributeTypeAndValue)]), $subslice(new RelativeDistinguishedNameSET(x.$array), x.$offset, x.$offset + x.$length)));
_i++;
}
ret = ret;
return ret;
};
Name.prototype.ToRDNSequence = function() { return this.$val.ToRDNSequence(); };
oidInAttributeTypeAndValue = function(oid, atv) {
var $ptr, _i, _ref, a, atv, oid;
_ref = atv;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
a = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), AttributeTypeAndValue);
if (a.Type.Equal(oid)) {
return true;
}
_i++;
}
return false;
};
CertificateList.ptr.prototype.HasExpired = function(now) {
var $ptr, certList, now;
certList = this;
return $clone(now, time.Time).After($clone(certList.TBSCertList.NextUpdate, time.Time));
};
CertificateList.prototype.HasExpired = function(now) { return this.$val.HasExpired(now); };
Name.methods = [{prop: "appendRDNs", name: "appendRDNs", pkg: "crypto/x509/pkix", typ: $funcType([RDNSequence, sliceType$2, asn1.ObjectIdentifier], [RDNSequence], false)}, {prop: "ToRDNSequence", name: "ToRDNSequence", pkg: "", typ: $funcType([], [RDNSequence], false)}];
ptrType$1.methods = [{prop: "FillFromRDNSequence", name: "FillFromRDNSequence", pkg: "", typ: $funcType([ptrType], [], false)}];
ptrType$3.methods = [{prop: "HasExpired", name: "HasExpired", pkg: "", typ: $funcType([time.Time], [$Bool], false)}];
AlgorithmIdentifier.init("", [{prop: "Algorithm", name: "Algorithm", exported: true, typ: asn1.ObjectIdentifier, tag: ""}, {prop: "Parameters", name: "Parameters", exported: true, typ: asn1.RawValue, tag: "asn1:\"optional\""}]);
RDNSequence.init(RelativeDistinguishedNameSET);
RelativeDistinguishedNameSET.init(AttributeTypeAndValue);
AttributeTypeAndValue.init("", [{prop: "Type", name: "Type", exported: true, typ: asn1.ObjectIdentifier, tag: ""}, {prop: "Value", name: "Value", exported: true, typ: $emptyInterface, tag: ""}]);
Extension.init("", [{prop: "Id", name: "Id", exported: true, typ: asn1.ObjectIdentifier, tag: ""}, {prop: "Critical", name: "Critical", exported: true, typ: $Bool, tag: "asn1:\"optional\""}, {prop: "Value", name: "Value", exported: true, typ: sliceType$3, tag: ""}]);
Name.init("", [{prop: "Country", name: "Country", exported: true, typ: sliceType$2, tag: ""}, {prop: "Organization", name: "Organization", exported: true, typ: sliceType$2, tag: ""}, {prop: "OrganizationalUnit", name: "OrganizationalUnit", exported: true, typ: sliceType$2, tag: ""}, {prop: "Locality", name: "Locality", exported: true, typ: sliceType$2, tag: ""}, {prop: "Province", name: "Province", exported: true, typ: sliceType$2, tag: ""}, {prop: "StreetAddress", name: "StreetAddress", exported: true, typ: sliceType$2, tag: ""}, {prop: "PostalCode", name: "PostalCode", exported: true, typ: sliceType$2, tag: ""}, {prop: "SerialNumber", name: "SerialNumber", exported: true, typ: $String, tag: ""}, {prop: "CommonName", name: "CommonName", exported: true, typ: $String, tag: ""}, {prop: "Names", name: "Names", exported: true, typ: sliceType$1, tag: ""}, {prop: "ExtraNames", name: "ExtraNames", exported: true, typ: sliceType$1, tag: ""}]);
CertificateList.init("", [{prop: "TBSCertList", name: "TBSCertList", exported: true, typ: TBSCertificateList, tag: ""}, {prop: "SignatureAlgorithm", name: "SignatureAlgorithm", exported: true, typ: AlgorithmIdentifier, tag: ""}, {prop: "SignatureValue", name: "SignatureValue", exported: true, typ: asn1.BitString, tag: ""}]);
TBSCertificateList.init("", [{prop: "Raw", name: "Raw", exported: true, typ: asn1.RawContent, tag: ""}, {prop: "Version", name: "Version", exported: true, typ: $Int, tag: "asn1:\"optional,default:0\""}, {prop: "Signature", name: "Signature", exported: true, typ: AlgorithmIdentifier, tag: ""}, {prop: "Issuer", name: "Issuer", exported: true, typ: RDNSequence, tag: ""}, {prop: "ThisUpdate", name: "ThisUpdate", exported: true, typ: time.Time, tag: ""}, {prop: "NextUpdate", name: "NextUpdate", exported: true, typ: time.Time, tag: "asn1:\"optional\""}, {prop: "RevokedCertificates", name: "RevokedCertificates", exported: true, typ: sliceType$5, tag: "asn1:\"optional\""}, {prop: "Extensions", name: "Extensions", exported: true, typ: sliceType$6, tag: "asn1:\"tag:0,optional,explicit\""}]);
RevokedCertificate.init("", [{prop: "SerialNumber", name: "SerialNumber", exported: true, typ: ptrType$4, tag: ""}, {prop: "RevocationTime", name: "RevocationTime", exported: true, typ: time.Time, tag: ""}, {prop: "Extensions", name: "Extensions", exported: true, typ: sliceType$6, tag: "asn1:\"optional\""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = asn1.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = big.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = time.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
oidCountry = new sliceType([2, 5, 4, 6]);
oidOrganization = new sliceType([2, 5, 4, 10]);
oidOrganizationalUnit = new sliceType([2, 5, 4, 11]);
oidCommonName = new sliceType([2, 5, 4, 3]);
oidSerialNumber = new sliceType([2, 5, 4, 5]);
oidLocality = new sliceType([2, 5, 4, 7]);
oidProvince = new sliceType([2, 5, 4, 8]);
oidStreetAddress = new sliceType([2, 5, 4, 9]);
oidPostalCode = new sliceType([2, 5, 4, 17]);
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["encoding/hex"] = (function() {
var $pkg = {}, $init, bytes, errors, fmt, io;
bytes = $packages["bytes"];
errors = $packages["errors"];
fmt = $packages["fmt"];
io = $packages["io"];
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = fmt.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$pkg.ErrLength = errors.New("encoding/hex: odd length hex string");
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["encoding/pem"] = (function() {
var $pkg = {}, $init, bytes, base64, errors, io, sort, strings, Block, sliceType, ptrType, mapType, pemStart, pemEnd, pemEndOfLine, getLine, removeWhitespace, Decode, decodeError;
bytes = $packages["bytes"];
base64 = $packages["encoding/base64"];
errors = $packages["errors"];
io = $packages["io"];
sort = $packages["sort"];
strings = $packages["strings"];
Block = $pkg.Block = $newType(0, $kindStruct, "pem.Block", true, "encoding/pem", true, function(Type_, Headers_, Bytes_) {
this.$val = this;
if (arguments.length === 0) {
this.Type = "";
this.Headers = false;
this.Bytes = sliceType.nil;
return;
}
this.Type = Type_;
this.Headers = Headers_;
this.Bytes = Bytes_;
});
sliceType = $sliceType($Uint8);
ptrType = $ptrType(Block);
mapType = $mapType($String, $String);
getLine = function(data) {
var $ptr, _r, _tmp, _tmp$1, data, i, j, line, rest, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
line = sliceType.nil;
rest = sliceType.nil;
i = bytes.Index(data, new sliceType([10]));
j = 0;
if (i < 0) {
i = data.$length;
j = i;
} else {
j = i + 1 >> 0;
if (i > 0 && ((x = i - 1 >> 0, ((x < 0 || x >= data.$length) ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + x])) === 13)) {
i = i - (1) >> 0;
}
}
_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; }
_tmp = _r;
_tmp$1 = $subslice(data, j);
line = _tmp;
rest = _tmp$1;
$s = -1; return [line, rest];
/* */ } return; } if ($f === undefined) { $f = { $blk: getLine }; } $f.$ptr = $ptr; $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;
};
removeWhitespace = function(data) {
var $ptr, _i, _ref, b, data, n, result;
result = $makeSlice(sliceType, data.$length);
n = 0;
_ref = data;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if ((b === 32) || (b === 9) || (b === 13) || (b === 10)) {
_i++;
continue;
}
((n < 0 || n >= result.$length) ? ($throwRuntimeError("index out of range"), undefined) : result.$array[result.$offset + n] = b);
n = n + (1) >> 0;
_i++;
}
return $subslice(result, 0, n);
};
Decode = function(data) {
var $ptr, _key, _r, _r$1, _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, _tuple$5, _tuple$6, _tuple$7, _tuple$8, base64Data, data, endIndex, endTrailer, endTrailerIndex, endTrailerLen, err, i, i$1, key, line, n, next, p, rest, typeLine, val, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; 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; typeLine = $f.typeLine; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
p = ptrType.nil;
rest = sliceType.nil;
rest = data;
if (bytes.HasPrefix(data, $subslice(pemStart, 1))) {
rest = $subslice(rest, (pemStart.$length - 1 >> 0), data.$length);
} else {
i = bytes.Index(data, pemStart);
if (i >= 0) {
rest = $subslice(rest, (i + pemStart.$length >> 0), data.$length);
} else {
_tmp = ptrType.nil;
_tmp$1 = data;
p = _tmp;
rest = _tmp$1;
$s = -1; return [p, rest];
}
}
_r = getLine(rest); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
typeLine = _tuple[0];
rest = _tuple[1];
/* */ if (!bytes.HasSuffix(typeLine, pemEndOfLine)) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!bytes.HasSuffix(typeLine, pemEndOfLine)) { */ case 2:
_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; }
_tuple$1 = _r$1;
p = _tuple$1[0];
rest = _tuple$1[1];
$s = -1; return [p, rest];
/* } */ case 3:
typeLine = $subslice(typeLine, 0, (typeLine.$length - pemEndOfLine.$length >> 0));
p = new Block.ptr(($bytesToString(typeLine)), {}, sliceType.nil);
/* while (true) { */ case 5:
if (rest.$length === 0) {
_tmp$2 = ptrType.nil;
_tmp$3 = data;
p = _tmp$2;
rest = _tmp$3;
$s = -1; return [p, rest];
}
_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; }
_tuple$2 = _r$2;
line = _tuple$2[0];
next = _tuple$2[1];
i$1 = bytes.Index(line, new sliceType([58]));
if (i$1 === -1) {
/* break; */ $s = 6; continue;
}
_tmp$4 = $subslice(line, 0, i$1);
_tmp$5 = $subslice(line, (i$1 + 1 >> 0));
key = _tmp$4;
val = _tmp$5;
_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; }
key = _r$3;
_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; }
val = _r$4;
_key = ($bytesToString(key)); (p.Headers || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: ($bytesToString(val)) };
rest = next;
/* } */ $s = 5; continue; case 6:
_tmp$6 = 0;
_tmp$7 = 0;
endIndex = _tmp$6;
endTrailerIndex = _tmp$7;
if (($keys(p.Headers).length === 0) && bytes.HasPrefix(rest, $subslice(pemEnd, 1))) {
endIndex = 0;
endTrailerIndex = pemEnd.$length - 1 >> 0;
} else {
endIndex = bytes.Index(rest, pemEnd);
endTrailerIndex = endIndex + pemEnd.$length >> 0;
}
/* */ if (endIndex < 0) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (endIndex < 0) { */ case 10:
_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; }
_tuple$3 = _r$5;
p = _tuple$3[0];
rest = _tuple$3[1];
$s = -1; return [p, rest];
/* } */ case 11:
endTrailer = $subslice(rest, endTrailerIndex);
endTrailerLen = typeLine.$length + pemEndOfLine.$length >> 0;
/* */ if (endTrailer.$length < endTrailerLen) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (endTrailer.$length < endTrailerLen) { */ case 13:
_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; }
_tuple$4 = _r$6;
p = _tuple$4[0];
rest = _tuple$4[1];
$s = -1; return [p, rest];
/* } */ case 14:
endTrailer = $subslice(endTrailer, 0, endTrailerLen);
/* */ if (!bytes.HasPrefix(endTrailer, typeLine) || !bytes.HasSuffix(endTrailer, pemEndOfLine)) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (!bytes.HasPrefix(endTrailer, typeLine) || !bytes.HasSuffix(endTrailer, pemEndOfLine)) { */ case 16:
_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; }
_tuple$5 = _r$7;
p = _tuple$5[0];
rest = _tuple$5[1];
$s = -1; return [p, rest];
/* } */ case 17:
base64Data = removeWhitespace($subslice(rest, 0, endIndex));
p.Bytes = $makeSlice(sliceType, base64.StdEncoding.DecodedLen(base64Data.$length));
_tuple$6 = base64.StdEncoding.Decode(p.Bytes, base64Data);
n = _tuple$6[0];
err = _tuple$6[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 19; continue; }
/* */ $s = 20; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 19:
_r$8 = decodeError(data, rest); /* */ $s = 21; case 21: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_tuple$7 = _r$8;
p = _tuple$7[0];
rest = _tuple$7[1];
$s = -1; return [p, rest];
/* } */ case 20:
p.Bytes = $subslice(p.Bytes, 0, n);
_r$9 = getLine($subslice(rest, ((endIndex + pemEnd.$length >> 0) - 1 >> 0))); /* */ $s = 22; case 22: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
_tuple$8 = _r$9;
rest = _tuple$8[1];
$s = -1; return [p, rest];
/* */ } return; } if ($f === undefined) { $f = { $blk: Decode }; } $f.$ptr = $ptr; $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._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._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $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.typeLine = typeLine; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Decode = Decode;
decodeError = function(data, rest) {
var $ptr, _r, _tuple, data, p, rest, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = Decode(rest); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
p = _tuple[0];
rest = _tuple[1];
if (p === ptrType.nil) {
rest = data;
}
$s = -1; return [p, rest];
/* */ } return; } if ($f === undefined) { $f = { $blk: decodeError }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.data = data; $f.p = p; $f.rest = rest; $f.$s = $s; $f.$r = $r; return $f;
};
Block.init("", [{prop: "Type", name: "Type", exported: true, typ: $String, tag: ""}, {prop: "Headers", name: "Headers", exported: true, typ: mapType, tag: ""}, {prop: "Bytes", name: "Bytes", exported: true, typ: sliceType, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = base64.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = errors.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sort.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strings.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
pemStart = (new sliceType($stringToBytes("\n-----BEGIN ")));
pemEnd = (new sliceType($stringToBytes("\n-----END ")));
pemEndOfLine = (new sliceType($stringToBytes("-----")));
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["crypto/x509"] = (function() {
var $pkg = {}, $init, bytes, crypto, aes, cipher, des, dsa, ecdsa, elliptic, md5, rsa, sha1, sha256, sha512, pkix, asn1, hex, pem, errors, fmt, io, big, net, os, runtime, strconv, strings, sync, syscall, time, utf8, CertPool, pkcs1PrivateKey, pkcs1AdditionalRSAPrime, rsaPublicKey, pkcs8, ecPrivateKey, InvalidReason, CertificateInvalidError, HostnameError, UnknownAuthorityError, SystemRootsError, VerifyOptions, certificate, tbsCertificate, dsaAlgorithmParameters, dsaSignature, ecdsaSignature, validity, publicKeyInfo, authKeyId, SignatureAlgorithm, PublicKeyAlgorithm, pssParameters, KeyUsage, ExtKeyUsage, Certificate, InsecureAlgorithmError, ConstraintViolationError, UnhandledCriticalExtension, basicConstraints, policyInformation, nameConstraints, generalSubtree, authorityInfoAccess, distributionPoint, distributionPointName, ptrType, structType, sliceType$1, structType$1, sliceType$2, sliceType$3, sliceType$4, ptrType$1, sliceType$5, ptrType$2, sliceType$6, ptrType$4, sliceType$7, ptrType$5, sliceType$8, sliceType$9, ptrType$6, sliceType$10, ptrType$7, ptrType$8, ptrType$9, ptrType$10, ptrType$11, sliceType$11, ptrType$12, sliceType$12, ptrType$13, sliceType$13, ptrType$14, ptrType$15, ptrType$16, sliceType$14, ptrType$17, ptrType$18, ptrType$19, sliceType$15, ptrType$20, ptrType$21, ptrType$22, ptrType$23, sliceType$16, sliceType$17, sliceType$18, ptrType$24, sliceType$19, sliceType$20, ptrType$25, sliceType$21, sliceType$22, ptrType$26, ptrType$27, ptrType$28, sliceType$23, ptrType$29, sliceType$24, ptrType$30, sliceType$27, ptrType$32, mapType, mapType$1, once, systemRoots, systemRootsErr, errNotParsed, algoName, 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, extKeyUsageOIDs, entrustBrokenSPKI, asn1Null, oidExtensionAuthorityKeyId, oidExtensionAuthorityInfoAccess, oidAuthorityInfoAccessOcsp, oidAuthorityInfoAccessIssuers, loadSystemRoots, NewCertPool, ParsePKCS1PrivateKey, ParsePKCS8PrivateKey, systemRootsPool, initSystemRoots, createStoreContext, extractSimpleChain, checkChainTrustStatus, checkChainSSLServerPolicy, ParseECPrivateKey, parseECPrivateKey, matchNameConstraint, appendToFreshChain, matchHostnames, toLowerCaseASCII, checkChainForKeyUsage, rsaPSSParameters, getSignatureAlgorithmFromAI, getPublicKeyAlgorithmFromOID, namedCurveFromOID, extKeyUsageFromOID, checkSignature, parsePublicKey, parseSANExtension, parseCertificate, ParseCertificate, signingParamsForPublicKey;
bytes = $packages["bytes"];
crypto = $packages["crypto"];
aes = $packages["crypto/aes"];
cipher = $packages["crypto/cipher"];
des = $packages["crypto/des"];
dsa = $packages["crypto/dsa"];
ecdsa = $packages["crypto/ecdsa"];
elliptic = $packages["crypto/elliptic"];
md5 = $packages["crypto/md5"];
rsa = $packages["crypto/rsa"];
sha1 = $packages["crypto/sha1"];
sha256 = $packages["crypto/sha256"];
sha512 = $packages["crypto/sha512"];
pkix = $packages["crypto/x509/pkix"];
asn1 = $packages["encoding/asn1"];
hex = $packages["encoding/hex"];
pem = $packages["encoding/pem"];
errors = $packages["errors"];
fmt = $packages["fmt"];
io = $packages["io"];
big = $packages["math/big"];
net = $packages["net"];
os = $packages["os"];
runtime = $packages["runtime"];
strconv = $packages["strconv"];
strings = $packages["strings"];
sync = $packages["sync"];
syscall = $packages["syscall"];
time = $packages["time"];
utf8 = $packages["unicode/utf8"];
CertPool = $pkg.CertPool = $newType(0, $kindStruct, "x509.CertPool", true, "crypto/x509", true, function(bySubjectKeyId_, byName_, certs_) {
this.$val = this;
if (arguments.length === 0) {
this.bySubjectKeyId = false;
this.byName = false;
this.certs = sliceType$5.nil;
return;
}
this.bySubjectKeyId = bySubjectKeyId_;
this.byName = byName_;
this.certs = certs_;
});
pkcs1PrivateKey = $pkg.pkcs1PrivateKey = $newType(0, $kindStruct, "x509.pkcs1PrivateKey", true, "crypto/x509", false, function(Version_, N_, E_, D_, P_, Q_, Dp_, Dq_, Qinv_, AdditionalPrimes_) {
this.$val = this;
if (arguments.length === 0) {
this.Version = 0;
this.N = ptrType$4.nil;
this.E = 0;
this.D = ptrType$4.nil;
this.P = ptrType$4.nil;
this.Q = ptrType$4.nil;
this.Dp = ptrType$4.nil;
this.Dq = ptrType$4.nil;
this.Qinv = ptrType$4.nil;
this.AdditionalPrimes = sliceType$7.nil;
return;
}
this.Version = Version_;
this.N = N_;
this.E = E_;
this.D = D_;
this.P = P_;
this.Q = Q_;
this.Dp = Dp_;
this.Dq = Dq_;
this.Qinv = Qinv_;
this.AdditionalPrimes = AdditionalPrimes_;
});
pkcs1AdditionalRSAPrime = $pkg.pkcs1AdditionalRSAPrime = $newType(0, $kindStruct, "x509.pkcs1AdditionalRSAPrime", true, "crypto/x509", false, function(Prime_, Exp_, Coeff_) {
this.$val = this;
if (arguments.length === 0) {
this.Prime = ptrType$4.nil;
this.Exp = ptrType$4.nil;
this.Coeff = ptrType$4.nil;
return;
}
this.Prime = Prime_;
this.Exp = Exp_;
this.Coeff = Coeff_;
});
rsaPublicKey = $pkg.rsaPublicKey = $newType(0, $kindStruct, "x509.rsaPublicKey", true, "crypto/x509", false, function(N_, E_) {
this.$val = this;
if (arguments.length === 0) {
this.N = ptrType$4.nil;
this.E = 0;
return;
}
this.N = N_;
this.E = E_;
});
pkcs8 = $pkg.pkcs8 = $newType(0, $kindStruct, "x509.pkcs8", true, "crypto/x509", false, function(Version_, Algo_, PrivateKey_) {
this.$val = this;
if (arguments.length === 0) {
this.Version = 0;
this.Algo = new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil));
this.PrivateKey = sliceType$3.nil;
return;
}
this.Version = Version_;
this.Algo = Algo_;
this.PrivateKey = PrivateKey_;
});
ecPrivateKey = $pkg.ecPrivateKey = $newType(0, $kindStruct, "x509.ecPrivateKey", true, "crypto/x509", false, function(Version_, PrivateKey_, NamedCurveOID_, PublicKey_) {
this.$val = this;
if (arguments.length === 0) {
this.Version = 0;
this.PrivateKey = sliceType$3.nil;
this.NamedCurveOID = asn1.ObjectIdentifier.nil;
this.PublicKey = new asn1.BitString.ptr(sliceType$3.nil, 0);
return;
}
this.Version = Version_;
this.PrivateKey = PrivateKey_;
this.NamedCurveOID = NamedCurveOID_;
this.PublicKey = PublicKey_;
});
InvalidReason = $pkg.InvalidReason = $newType(4, $kindInt, "x509.InvalidReason", true, "crypto/x509", true, null);
CertificateInvalidError = $pkg.CertificateInvalidError = $newType(0, $kindStruct, "x509.CertificateInvalidError", true, "crypto/x509", true, function(Cert_, Reason_) {
this.$val = this;
if (arguments.length === 0) {
this.Cert = ptrType$1.nil;
this.Reason = 0;
return;
}
this.Cert = Cert_;
this.Reason = Reason_;
});
HostnameError = $pkg.HostnameError = $newType(0, $kindStruct, "x509.HostnameError", true, "crypto/x509", true, function(Certificate_, Host_) {
this.$val = this;
if (arguments.length === 0) {
this.Certificate = ptrType$1.nil;
this.Host = "";
return;
}
this.Certificate = Certificate_;
this.Host = Host_;
});
UnknownAuthorityError = $pkg.UnknownAuthorityError = $newType(0, $kindStruct, "x509.UnknownAuthorityError", true, "crypto/x509", true, function(Cert_, hintErr_, hintCert_) {
this.$val = this;
if (arguments.length === 0) {
this.Cert = ptrType$1.nil;
this.hintErr = $ifaceNil;
this.hintCert = ptrType$1.nil;
return;
}
this.Cert = Cert_;
this.hintErr = hintErr_;
this.hintCert = hintCert_;
});
SystemRootsError = $pkg.SystemRootsError = $newType(0, $kindStruct, "x509.SystemRootsError", true, "crypto/x509", true, function(Err_) {
this.$val = this;
if (arguments.length === 0) {
this.Err = $ifaceNil;
return;
}
this.Err = Err_;
});
VerifyOptions = $pkg.VerifyOptions = $newType(0, $kindStruct, "x509.VerifyOptions", true, "crypto/x509", true, function(DNSName_, Intermediates_, Roots_, CurrentTime_, KeyUsages_) {
this.$val = this;
if (arguments.length === 0) {
this.DNSName = "";
this.Intermediates = ptrType.nil;
this.Roots = ptrType.nil;
this.CurrentTime = new time.Time.ptr(new $Int64(0, 0), 0, ptrType$24.nil);
this.KeyUsages = sliceType$15.nil;
return;
}
this.DNSName = DNSName_;
this.Intermediates = Intermediates_;
this.Roots = Roots_;
this.CurrentTime = CurrentTime_;
this.KeyUsages = KeyUsages_;
});
certificate = $pkg.certificate = $newType(0, $kindStruct, "x509.certificate", true, "crypto/x509", false, function(Raw_, TBSCertificate_, SignatureAlgorithm_, SignatureValue_) {
this.$val = this;
if (arguments.length === 0) {
this.Raw = asn1.RawContent.nil;
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$3.nil, sliceType$3.nil)), new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil), new validity.ptr(new time.Time.ptr(new $Int64(0, 0), 0, ptrType$24.nil), new time.Time.ptr(new $Int64(0, 0), 0, ptrType$24.nil)), new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil), new publicKeyInfo.ptr(asn1.RawContent.nil, new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil)), new asn1.BitString.ptr(sliceType$3.nil, 0)), new asn1.BitString.ptr(sliceType$3.nil, 0), new asn1.BitString.ptr(sliceType$3.nil, 0), sliceType$19.nil);
this.SignatureAlgorithm = new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil));
this.SignatureValue = new asn1.BitString.ptr(sliceType$3.nil, 0);
return;
}
this.Raw = Raw_;
this.TBSCertificate = TBSCertificate_;
this.SignatureAlgorithm = SignatureAlgorithm_;
this.SignatureValue = SignatureValue_;
});
tbsCertificate = $pkg.tbsCertificate = $newType(0, $kindStruct, "x509.tbsCertificate", true, "crypto/x509", false, function(Raw_, Version_, SerialNumber_, SignatureAlgorithm_, Issuer_, Validity_, Subject_, PublicKey_, UniqueId_, SubjectUniqueId_, Extensions_) {
this.$val = this;
if (arguments.length === 0) {
this.Raw = asn1.RawContent.nil;
this.Version = 0;
this.SerialNumber = ptrType$4.nil;
this.SignatureAlgorithm = new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil));
this.Issuer = new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil);
this.Validity = new validity.ptr(new time.Time.ptr(new $Int64(0, 0), 0, ptrType$24.nil), new time.Time.ptr(new $Int64(0, 0), 0, ptrType$24.nil));
this.Subject = new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil);
this.PublicKey = new publicKeyInfo.ptr(asn1.RawContent.nil, new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil)), new asn1.BitString.ptr(sliceType$3.nil, 0));
this.UniqueId = new asn1.BitString.ptr(sliceType$3.nil, 0);
this.SubjectUniqueId = new asn1.BitString.ptr(sliceType$3.nil, 0);
this.Extensions = sliceType$19.nil;
return;
}
this.Raw = Raw_;
this.Version = Version_;
this.SerialNumber = SerialNumber_;
this.SignatureAlgorithm = SignatureAlgorithm_;
this.Issuer = Issuer_;
this.Validity = Validity_;
this.Subject = Subject_;
this.PublicKey = PublicKey_;
this.UniqueId = UniqueId_;
this.SubjectUniqueId = SubjectUniqueId_;
this.Extensions = Extensions_;
});
dsaAlgorithmParameters = $pkg.dsaAlgorithmParameters = $newType(0, $kindStruct, "x509.dsaAlgorithmParameters", true, "crypto/x509", false, function(P_, Q_, G_) {
this.$val = this;
if (arguments.length === 0) {
this.P = ptrType$4.nil;
this.Q = ptrType$4.nil;
this.G = ptrType$4.nil;
return;
}
this.P = P_;
this.Q = Q_;
this.G = G_;
});
dsaSignature = $pkg.dsaSignature = $newType(0, $kindStruct, "x509.dsaSignature", true, "crypto/x509", false, function(R_, S_) {
this.$val = this;
if (arguments.length === 0) {
this.R = ptrType$4.nil;
this.S = ptrType$4.nil;
return;
}
this.R = R_;
this.S = S_;
});
ecdsaSignature = $pkg.ecdsaSignature = $newType(0, $kindStruct, "x509.ecdsaSignature", true, "crypto/x509", false, function(R_, S_) {
this.$val = this;
if (arguments.length === 0) {
this.R = ptrType$4.nil;
this.S = ptrType$4.nil;
return;
}
this.R = R_;
this.S = S_;
});
validity = $pkg.validity = $newType(0, $kindStruct, "x509.validity", true, "crypto/x509", false, function(NotBefore_, NotAfter_) {
this.$val = this;
if (arguments.length === 0) {
this.NotBefore = new time.Time.ptr(new $Int64(0, 0), 0, ptrType$24.nil);
this.NotAfter = new time.Time.ptr(new $Int64(0, 0), 0, ptrType$24.nil);
return;
}
this.NotBefore = NotBefore_;
this.NotAfter = NotAfter_;
});
publicKeyInfo = $pkg.publicKeyInfo = $newType(0, $kindStruct, "x509.publicKeyInfo", true, "crypto/x509", false, function(Raw_, Algorithm_, PublicKey_) {
this.$val = this;
if (arguments.length === 0) {
this.Raw = asn1.RawContent.nil;
this.Algorithm = new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil));
this.PublicKey = new asn1.BitString.ptr(sliceType$3.nil, 0);
return;
}
this.Raw = Raw_;
this.Algorithm = Algorithm_;
this.PublicKey = PublicKey_;
});
authKeyId = $pkg.authKeyId = $newType(0, $kindStruct, "x509.authKeyId", true, "crypto/x509", false, function(Id_) {
this.$val = this;
if (arguments.length === 0) {
this.Id = sliceType$3.nil;
return;
}
this.Id = Id_;
});
SignatureAlgorithm = $pkg.SignatureAlgorithm = $newType(4, $kindInt, "x509.SignatureAlgorithm", true, "crypto/x509", true, null);
PublicKeyAlgorithm = $pkg.PublicKeyAlgorithm = $newType(4, $kindInt, "x509.PublicKeyAlgorithm", true, "crypto/x509", true, null);
pssParameters = $pkg.pssParameters = $newType(0, $kindStruct, "x509.pssParameters", true, "crypto/x509", false, function(Hash_, MGF_, SaltLength_, TrailerField_) {
this.$val = this;
if (arguments.length === 0) {
this.Hash = new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil));
this.MGF = new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil));
this.SaltLength = 0;
this.TrailerField = 0;
return;
}
this.Hash = Hash_;
this.MGF = MGF_;
this.SaltLength = SaltLength_;
this.TrailerField = TrailerField_;
});
KeyUsage = $pkg.KeyUsage = $newType(4, $kindInt, "x509.KeyUsage", true, "crypto/x509", true, null);
ExtKeyUsage = $pkg.ExtKeyUsage = $newType(4, $kindInt, "x509.ExtKeyUsage", true, "crypto/x509", true, null);
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_, PermittedDNSDomainsCritical_, PermittedDNSDomains_, CRLDistributionPoints_, PolicyIdentifiers_) {
this.$val = this;
if (arguments.length === 0) {
this.Raw = sliceType$3.nil;
this.RawTBSCertificate = sliceType$3.nil;
this.RawSubjectPublicKeyInfo = sliceType$3.nil;
this.RawSubject = sliceType$3.nil;
this.RawIssuer = sliceType$3.nil;
this.Signature = sliceType$3.nil;
this.SignatureAlgorithm = 0;
this.PublicKeyAlgorithm = 0;
this.PublicKey = $ifaceNil;
this.Version = 0;
this.SerialNumber = ptrType$4.nil;
this.Issuer = new pkix.Name.ptr(sliceType$16.nil, sliceType$16.nil, sliceType$16.nil, sliceType$16.nil, sliceType$16.nil, sliceType$16.nil, sliceType$16.nil, "", "", sliceType$18.nil, sliceType$18.nil);
this.Subject = new pkix.Name.ptr(sliceType$16.nil, sliceType$16.nil, sliceType$16.nil, sliceType$16.nil, sliceType$16.nil, sliceType$16.nil, sliceType$16.nil, "", "", sliceType$18.nil, sliceType$18.nil);
this.NotBefore = new time.Time.ptr(new $Int64(0, 0), 0, ptrType$24.nil);
this.NotAfter = new time.Time.ptr(new $Int64(0, 0), 0, ptrType$24.nil);
this.KeyUsage = 0;
this.Extensions = sliceType$19.nil;
this.ExtraExtensions = sliceType$19.nil;
this.UnhandledCriticalExtensions = sliceType$20.nil;
this.ExtKeyUsage = sliceType$15.nil;
this.UnknownExtKeyUsage = sliceType$20.nil;
this.BasicConstraintsValid = false;
this.IsCA = false;
this.MaxPathLen = 0;
this.MaxPathLenZero = false;
this.SubjectKeyId = sliceType$3.nil;
this.AuthorityKeyId = sliceType$3.nil;
this.OCSPServer = sliceType$16.nil;
this.IssuingCertificateURL = sliceType$16.nil;
this.DNSNames = sliceType$16.nil;
this.EmailAddresses = sliceType$16.nil;
this.IPAddresses = sliceType$17.nil;
this.PermittedDNSDomainsCritical = false;
this.PermittedDNSDomains = sliceType$16.nil;
this.CRLDistributionPoints = sliceType$16.nil;
this.PolicyIdentifiers = sliceType$20.nil;
return;
}
this.Raw = Raw_;
this.RawTBSCertificate = RawTBSCertificate_;
this.RawSubjectPublicKeyInfo = RawSubjectPublicKeyInfo_;
this.RawSubject = RawSubject_;
this.RawIssuer = RawIssuer_;
this.Signature = Signature_;
this.SignatureAlgorithm = SignatureAlgorithm_;
this.PublicKeyAlgorithm = PublicKeyAlgorithm_;
this.PublicKey = PublicKey_;
this.Version = Version_;
this.SerialNumber = SerialNumber_;
this.Issuer = Issuer_;
this.Subject = Subject_;
this.NotBefore = NotBefore_;
this.NotAfter = NotAfter_;
this.KeyUsage = KeyUsage_;
this.Extensions = Extensions_;
this.ExtraExtensions = ExtraExtensions_;
this.UnhandledCriticalExtensions = UnhandledCriticalExtensions_;
this.ExtKeyUsage = ExtKeyUsage_;
this.UnknownExtKeyUsage = UnknownExtKeyUsage_;
this.BasicConstraintsValid = BasicConstraintsValid_;
this.IsCA = IsCA_;
this.MaxPathLen = MaxPathLen_;
this.MaxPathLenZero = MaxPathLenZero_;
this.SubjectKeyId = SubjectKeyId_;
this.AuthorityKeyId = AuthorityKeyId_;
this.OCSPServer = OCSPServer_;
this.IssuingCertificateURL = IssuingCertificateURL_;
this.DNSNames = DNSNames_;
this.EmailAddresses = EmailAddresses_;
this.IPAddresses = IPAddresses_;
this.PermittedDNSDomainsCritical = PermittedDNSDomainsCritical_;
this.PermittedDNSDomains = PermittedDNSDomains_;
this.CRLDistributionPoints = CRLDistributionPoints_;
this.PolicyIdentifiers = PolicyIdentifiers_;
});
InsecureAlgorithmError = $pkg.InsecureAlgorithmError = $newType(4, $kindInt, "x509.InsecureAlgorithmError", true, "crypto/x509", true, null);
ConstraintViolationError = $pkg.ConstraintViolationError = $newType(0, $kindStruct, "x509.ConstraintViolationError", true, "crypto/x509", true, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
UnhandledCriticalExtension = $pkg.UnhandledCriticalExtension = $newType(0, $kindStruct, "x509.UnhandledCriticalExtension", true, "crypto/x509", true, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
basicConstraints = $pkg.basicConstraints = $newType(0, $kindStruct, "x509.basicConstraints", true, "crypto/x509", false, function(IsCA_, MaxPathLen_) {
this.$val = this;
if (arguments.length === 0) {
this.IsCA = false;
this.MaxPathLen = 0;
return;
}
this.IsCA = IsCA_;
this.MaxPathLen = MaxPathLen_;
});
policyInformation = $pkg.policyInformation = $newType(0, $kindStruct, "x509.policyInformation", true, "crypto/x509", false, function(Policy_) {
this.$val = this;
if (arguments.length === 0) {
this.Policy = asn1.ObjectIdentifier.nil;
return;
}
this.Policy = Policy_;
});
nameConstraints = $pkg.nameConstraints = $newType(0, $kindStruct, "x509.nameConstraints", true, "crypto/x509", false, function(Permitted_, Excluded_) {
this.$val = this;
if (arguments.length === 0) {
this.Permitted = sliceType$21.nil;
this.Excluded = sliceType$21.nil;
return;
}
this.Permitted = Permitted_;
this.Excluded = Excluded_;
});
generalSubtree = $pkg.generalSubtree = $newType(0, $kindStruct, "x509.generalSubtree", true, "crypto/x509", false, function(Name_) {
this.$val = this;
if (arguments.length === 0) {
this.Name = "";
return;
}
this.Name = Name_;
});
authorityInfoAccess = $pkg.authorityInfoAccess = $newType(0, $kindStruct, "x509.authorityInfoAccess", true, "crypto/x509", false, function(Method_, Location_) {
this.$val = this;
if (arguments.length === 0) {
this.Method = asn1.ObjectIdentifier.nil;
this.Location = new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil);
return;
}
this.Method = Method_;
this.Location = Location_;
});
distributionPoint = $pkg.distributionPoint = $newType(0, $kindStruct, "x509.distributionPoint", true, "crypto/x509", false, function(DistributionPoint_, Reason_, CRLIssuer_) {
this.$val = this;
if (arguments.length === 0) {
this.DistributionPoint = new distributionPointName.ptr(new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil), pkix.RDNSequence.nil);
this.Reason = new asn1.BitString.ptr(sliceType$3.nil, 0);
this.CRLIssuer = new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil);
return;
}
this.DistributionPoint = DistributionPoint_;
this.Reason = Reason_;
this.CRLIssuer = CRLIssuer_;
});
distributionPointName = $pkg.distributionPointName = $newType(0, $kindStruct, "x509.distributionPointName", true, "crypto/x509", false, function(FullName_, RelativeName_) {
this.$val = this;
if (arguments.length === 0) {
this.FullName = new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil);
this.RelativeName = pkix.RDNSequence.nil;
return;
}
this.FullName = FullName_;
this.RelativeName = RelativeName_;
});
ptrType = $ptrType(CertPool);
structType = $structType("crypto/x509", [{prop: "algo", name: "algo", exported: false, typ: SignatureAlgorithm, tag: ""}, {prop: "oid", name: "oid", exported: false, typ: asn1.ObjectIdentifier, tag: ""}, {prop: "pubKeyAlgo", name: "pubKeyAlgo", exported: false, typ: PublicKeyAlgorithm, tag: ""}, {prop: "hash", name: "hash", exported: false, typ: crypto.Hash, tag: ""}]);
sliceType$1 = $sliceType(structType);
structType$1 = $structType("crypto/x509", [{prop: "extKeyUsage", name: "extKeyUsage", exported: false, typ: ExtKeyUsage, tag: ""}, {prop: "oid", name: "oid", exported: false, typ: asn1.ObjectIdentifier, tag: ""}]);
sliceType$2 = $sliceType(structType$1);
sliceType$3 = $sliceType($Uint8);
sliceType$4 = $sliceType($Int);
ptrType$1 = $ptrType(Certificate);
sliceType$5 = $sliceType(ptrType$1);
ptrType$2 = $ptrType(pem.Block);
sliceType$6 = $sliceType(sliceType$3);
ptrType$4 = $ptrType(big.Int);
sliceType$7 = $sliceType(pkcs1AdditionalRSAPrime);
ptrType$5 = $ptrType(rsa.PrivateKey);
sliceType$8 = $sliceType(ptrType$4);
sliceType$9 = $sliceType(rsa.CRTValue);
ptrType$6 = $ptrType(asn1.ObjectIdentifier);
sliceType$10 = $sliceType($emptyInterface);
ptrType$7 = $ptrType(syscall.CertContext);
ptrType$8 = $ptrType($Uint8);
ptrType$9 = $ptrType(ptrType$7);
ptrType$10 = $ptrType(syscall.CertSimpleChain);
ptrType$11 = $ptrType(ptrType$10);
sliceType$11 = $sliceType(ptrType$10);
ptrType$12 = $ptrType(syscall.CertChainElement);
sliceType$12 = $sliceType(ptrType$12);
ptrType$13 = $ptrType($Uint16);
sliceType$13 = $sliceType(sliceType$5);
ptrType$14 = $ptrType(VerifyOptions);
ptrType$15 = $ptrType(ptrType$8);
ptrType$16 = $ptrType(syscall.Filetime);
sliceType$14 = $sliceType(ptrType$8);
ptrType$17 = $ptrType(syscall.CertChainContext);
ptrType$18 = $ptrType(ptrType$17);
ptrType$19 = $ptrType(ecdsa.PrivateKey);
sliceType$15 = $sliceType(ExtKeyUsage);
ptrType$20 = $ptrType(rsa.PublicKey);
ptrType$21 = $ptrType(ecdsa.PublicKey);
ptrType$22 = $ptrType(dsa.PublicKey);
ptrType$23 = $ptrType(ptrType$4);
sliceType$16 = $sliceType($String);
sliceType$17 = $sliceType(net.IP);
sliceType$18 = $sliceType(pkix.AttributeTypeAndValue);
ptrType$24 = $ptrType(time.Location);
sliceType$19 = $sliceType(pkix.Extension);
sliceType$20 = $sliceType(asn1.ObjectIdentifier);
ptrType$25 = $ptrType(pkix.RDNSequence);
sliceType$21 = $sliceType(generalSubtree);
sliceType$22 = $sliceType(distributionPoint);
ptrType$26 = $ptrType(sliceType$22);
ptrType$27 = $ptrType(sliceType$20);
ptrType$28 = $ptrType(sliceType$3);
sliceType$23 = $sliceType(policyInformation);
ptrType$29 = $ptrType(sliceType$23);
sliceType$24 = $sliceType(authorityInfoAccess);
ptrType$30 = $ptrType(sliceType$24);
sliceType$27 = $sliceType(pkix.RevokedCertificate);
ptrType$32 = $ptrType(pkix.CertificateList);
mapType = $mapType($String, sliceType$4);
mapType$1 = $mapType($Int, sliceType$13);
loadSystemRoots = function() {
var $ptr;
return [NewCertPool(), $ifaceNil];
};
NewCertPool = function() {
var $ptr;
return new CertPool.ptr({}, {}, sliceType$5.nil);
};
$pkg.NewCertPool = NewCertPool;
CertPool.ptr.prototype.findVerifiedParents = function(cert) {
var $ptr, _entry, _entry$1, _i, _r, _ref, c, candidates, cert, err, errCert, parents, s, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
parents = sliceType$4.nil;
errCert = ptrType$1.nil;
err = $ifaceNil;
s = this;
if (s === ptrType.nil) {
$s = -1; return [parents, errCert, err];
}
candidates = sliceType$4.nil;
if (cert.AuthorityKeyId.$length > 0) {
candidates = (_entry = s.bySubjectKeyId[$String.keyFor(($bytesToString(cert.AuthorityKeyId)))], _entry !== undefined ? _entry.v : sliceType$4.nil);
}
if (candidates.$length === 0) {
candidates = (_entry$1 = s.byName[$String.keyFor(($bytesToString(cert.RawIssuer)))], _entry$1 !== undefined ? _entry$1.v : sliceType$4.nil);
}
_ref = candidates;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_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; }
err = _r;
if ($interfaceIsEqual(err, $ifaceNil)) {
parents = $append(parents, c);
} else {
errCert = (x$1 = s.certs, ((c < 0 || c >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + c]));
}
_i++;
/* } */ $s = 1; continue; case 2:
$s = -1; return [parents, errCert, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: CertPool.ptr.prototype.findVerifiedParents }; } $f.$ptr = $ptr; $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;
};
CertPool.prototype.findVerifiedParents = function(cert) { return this.$val.findVerifiedParents(cert); };
CertPool.ptr.prototype.contains = function(cert) {
var $ptr, _entry, _i, _ref, c, candidates, cert, s, x;
s = this;
if (s === ptrType.nil) {
return false;
}
candidates = (_entry = s.byName[$String.keyFor(($bytesToString(cert.RawSubject)))], _entry !== undefined ? _entry.v : sliceType$4.nil);
_ref = candidates;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if ((x = s.certs, ((c < 0 || c >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + c])).Equal(cert)) {
return true;
}
_i++;
}
return false;
};
CertPool.prototype.contains = function(cert) { return this.$val.contains(cert); };
CertPool.ptr.prototype.AddCert = function(cert) {
var $ptr, _entry, _entry$1, _key, _key$1, cert, keyId, n, name, s;
s = this;
if (cert === ptrType$1.nil) {
$panic(new $String("adding nil Certificate to CertPool"));
}
if (s.contains(cert)) {
return;
}
n = s.certs.$length;
s.certs = $append(s.certs, cert);
if (cert.SubjectKeyId.$length > 0) {
keyId = ($bytesToString(cert.SubjectKeyId));
_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$4.nil), n) };
}
name = ($bytesToString(cert.RawSubject));
_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$4.nil), n) };
};
CertPool.prototype.AddCert = function(cert) { return this.$val.AddCert(cert); };
CertPool.ptr.prototype.AppendCertsFromPEM = function(pemCerts) {
var $ptr, _r, _r$1, _tuple, _tuple$1, block, cert, err, ok, pemCerts, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
ok = false;
s = this;
/* while (true) { */ case 1:
/* if (!(pemCerts.$length > 0)) { break; } */ if(!(pemCerts.$length > 0)) { $s = 2; continue; }
block = ptrType$2.nil;
_r = pem.Decode(pemCerts); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
block = _tuple[0];
pemCerts = _tuple[1];
if (block === ptrType$2.nil) {
/* break; */ $s = 2; continue;
}
/* */ if (!(block.Type === "CERTIFICATE") || !(($keys(block.Headers).length === 0))) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!(block.Type === "CERTIFICATE") || !(($keys(block.Headers).length === 0))) { */ case 4:
/* continue; */ $s = 1; continue;
/* } */ case 5:
_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; }
_tuple$1 = _r$1;
cert = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
/* continue; */ $s = 1; continue;
}
s.AddCert(cert);
ok = true;
/* } */ $s = 1; continue; case 2:
$s = -1; return ok;
/* */ } return; } if ($f === undefined) { $f = { $blk: CertPool.ptr.prototype.AppendCertsFromPEM }; } $f.$ptr = $ptr; $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;
};
CertPool.prototype.AppendCertsFromPEM = function(pemCerts) { return this.$val.AppendCertsFromPEM(pemCerts); };
CertPool.ptr.prototype.Subjects = function() {
var $ptr, _i, _ref, c, i, res, s;
s = this;
res = $makeSlice(sliceType$6, s.certs.$length);
_ref = s.certs;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
((i < 0 || i >= res.$length) ? ($throwRuntimeError("index out of range"), undefined) : res.$array[res.$offset + i] = c.RawSubject);
_i++;
}
return res;
};
CertPool.prototype.Subjects = function() { return this.$val.Subjects(); };
ParsePKCS1PrivateKey = function(der) {
var $ptr, _i, _r, _r$1, _ref, _tuple, a, der, err, i, key, priv, rest, x, x$1, x$2, x$3, x$4, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
priv = [priv];
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$7.nil);
_r = asn1.Unmarshal(der, priv[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
rest = _tuple[0];
err = _tuple[1];
if (rest.$length > 0) {
$s = -1; return [ptrType$5.nil, (x = new asn1.SyntaxError.ptr("trailing data"), new x.constructor.elem(x))];
}
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$5.nil, err];
}
if (priv[0].Version > 1) {
$s = -1; return [ptrType$5.nil, errors.New("x509: unsupported private key version")];
}
if (priv[0].N.Sign() <= 0 || priv[0].D.Sign() <= 0 || priv[0].P.Sign() <= 0 || priv[0].Q.Sign() <= 0) {
$s = -1; return [ptrType$5.nil, errors.New("x509: private key contains zero or negative value")];
}
key = new rsa.PrivateKey.ptr(new rsa.PublicKey.ptr(ptrType$4.nil, 0), ptrType$4.nil, sliceType$8.nil, new rsa.PrecomputedValues.ptr(ptrType$4.nil, ptrType$4.nil, ptrType$4.nil, sliceType$9.nil));
rsa.PublicKey.copy(key.PublicKey, new rsa.PublicKey.ptr(priv[0].N, priv[0].E));
key.D = priv[0].D;
key.Primes = $makeSlice(sliceType$8, (2 + priv[0].AdditionalPrimes.$length >> 0));
(x$1 = key.Primes, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0] = priv[0].P));
(x$2 = key.Primes, (1 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 1] = priv[0].Q));
_ref = priv[0].AdditionalPrimes;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
a = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), pkcs1AdditionalRSAPrime);
if (a.Prime.Sign() <= 0) {
$s = -1; return [ptrType$5.nil, errors.New("x509: private key contains zero or negative prime")];
}
(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));
_i++;
}
_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; }
err = _r$1;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$5.nil, err];
}
$r = key.Precompute(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return [key, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: ParsePKCS1PrivateKey }; } $f.$ptr = $ptr; $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;
};
$pkg.ParsePKCS1PrivateKey = ParsePKCS1PrivateKey;
ParsePKCS8PrivateKey = function(der) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
privKey = [privKey];
key = $ifaceNil;
err = $ifaceNil;
privKey[0] = new pkcs8.ptr(0, new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil)), sliceType$3.nil);
_r = asn1.Unmarshal(der, privKey[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
err$1 = _tuple[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
_tmp = $ifaceNil;
_tmp$1 = err$1;
key = _tmp;
err = _tmp$1;
$s = -1; return [key, err];
}
/* */ if (privKey[0].Algo.Algorithm.Equal(oidPublicKeyRSA)) { $s = 3; continue; }
/* */ if (privKey[0].Algo.Algorithm.Equal(oidPublicKeyECDSA)) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (privKey[0].Algo.Algorithm.Equal(oidPublicKeyRSA)) { */ case 3:
_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; }
_tuple$1 = _r$1;
key = _tuple$1[0];
err = _tuple$1[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 8:
_tmp$2 = $ifaceNil;
_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; }
_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; }
_tmp$3 = _r$3;
key = _tmp$2;
err = _tmp$3;
$s = -1; return [key, err];
/* } */ case 9:
_tmp$4 = key;
_tmp$5 = $ifaceNil;
key = _tmp$4;
err = _tmp$5;
$s = -1; return [key, err];
/* } else if (privKey[0].Algo.Algorithm.Equal(oidPublicKeyECDSA)) { */ case 4:
bytes$1 = privKey[0].Algo.Parameters.FullBytes;
namedCurveOID = $newDataPointer(asn1.ObjectIdentifier.nil, ptrType$6);
_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; }
_tuple$2 = _r$4;
err$2 = _tuple$2[1];
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
namedCurveOID = ptrType$6.nil;
}
_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; }
_tuple$3 = _r$5;
key = _tuple$3[0];
err = _tuple$3[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 14:
_tmp$6 = $ifaceNil;
_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; }
_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; }
_tmp$7 = _r$7;
key = _tmp$6;
err = _tmp$7;
$s = -1; return [key, err];
/* } */ case 15:
_tmp$8 = key;
_tmp$9 = $ifaceNil;
key = _tmp$8;
err = _tmp$9;
$s = -1; return [key, err];
/* } else { */ case 5:
_tmp$10 = $ifaceNil;
_r$8 = fmt.Errorf("x509: PKCS#8 wrapping contained private key with unknown algorithm: %v", new sliceType$10([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; }
_tmp$11 = _r$8;
key = _tmp$10;
err = _tmp$11;
$s = -1; return [key, err];
/* } */ case 6:
case 2:
$s = -1; return [key, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: ParsePKCS8PrivateKey }; } $f.$ptr = $ptr; $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;
};
$pkg.ParsePKCS8PrivateKey = ParsePKCS8PrivateKey;
systemRootsPool = function() {
var $ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = once.Do(initSystemRoots); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return systemRoots;
/* */ } return; } if ($f === undefined) { $f = { $blk: systemRootsPool }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
};
initSystemRoots = function() {
var $ptr, _tuple;
_tuple = loadSystemRoots();
systemRoots = _tuple[0];
systemRootsErr = _tuple[1];
};
createStoreContext = function(leaf, opts) {
var $ptr, _i, _ref, _tuple, _tuple$1, _tuple$2, ctx, err, err$1, handle, intermediate, leaf, leafCtx, opts, storeCtx, storeCtx$24ptr, x, x$1, $deferred;
/* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
storeCtx = ptrType$7.nil;
_tuple = syscall.CertCreateCertificateContext(65537, (x = leaf.Raw, $indexPtr(x.$array, x.$offset + 0, ptrType$8)), ((leaf.Raw.$length >>> 0)));
leafCtx = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [ptrType$7.nil, err];
}
$deferred.push([syscall.CertFreeCertificateContext, [leafCtx]]);
_tuple$1 = syscall.CertOpenStore(2, 0, 0, 4, 0);
handle = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [ptrType$7.nil, err];
}
$deferred.push([syscall.CertCloseStore, [handle, 0]]);
err = syscall.CertAddCertificateContextToStore(handle, leafCtx, 4, (storeCtx$24ptr || (storeCtx$24ptr = new ptrType$9(function() { return storeCtx; }, function($v) { storeCtx = $v; }))));
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [ptrType$7.nil, err];
}
if (!(opts.Intermediates === ptrType.nil)) {
_ref = opts.Intermediates.certs;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
intermediate = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_tuple$2 = syscall.CertCreateCertificateContext(65537, (x$1 = intermediate.Raw, $indexPtr(x$1.$array, x$1.$offset + 0, ptrType$8)), ((intermediate.Raw.$length >>> 0)));
ctx = _tuple$2[0];
err$1 = _tuple$2[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
return [ptrType$7.nil, err$1];
}
err$1 = syscall.CertAddCertificateContextToStore(handle, ctx, 4, ptrType$9.nil);
syscall.CertFreeCertificateContext(ctx);
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
return [ptrType$7.nil, err$1];
}
_i++;
}
}
return [storeCtx, $ifaceNil];
/* */ } catch(err) { $err = err; return [ptrType$7.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); }
};
extractSimpleChain = function(simpleChain, count) {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, buf, cert, chain, count, elements, encodedCert, err, err$1, i, lastChain, parsedCert, simpleChain, simpleChains, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; buf = $f.buf; cert = $f.cert; chain = $f.chain; count = $f.count; elements = $f.elements; encodedCert = $f.encodedCert; err = $f.err; err$1 = $f.err$1; i = $f.i; lastChain = $f.lastChain; parsedCert = $f.parsedCert; simpleChain = $f.simpleChain; simpleChains = $f.simpleChains; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
chain = sliceType$5.nil;
err = $ifaceNil;
if (simpleChain === ptrType$11.nil || (count === 0)) {
_tmp = sliceType$5.nil;
_tmp$1 = errors.New("x509: invalid simple chain");
chain = _tmp;
err = _tmp$1;
$s = -1; return [chain, err];
}
simpleChains = new sliceType$11(((simpleChain)));
lastChain = (x = count - 1 >> 0, ((x < 0 || x >= simpleChains.$length) ? ($throwRuntimeError("index out of range"), undefined) : simpleChains.$array[simpleChains.$offset + x]));
elements = new sliceType$12(((lastChain.Elements)));
i = 0;
/* while (true) { */ case 1:
/* if (!(i < ((lastChain.NumElements >> 0)))) { break; } */ if(!(i < ((lastChain.NumElements >> 0)))) { $s = 2; continue; }
cert = ((i < 0 || i >= elements.$length) ? ($throwRuntimeError("index out of range"), undefined) : elements.$array[elements.$offset + i]).CertContext;
encodedCert = new sliceType$3(((cert.EncodedCert)));
buf = $makeSlice(sliceType$3, cert.Length);
$copySlice(buf, encodedCert);
_r = ParseCertificate(buf); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
parsedCert = _tuple[0];
err$1 = _tuple[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
_tmp$2 = sliceType$5.nil;
_tmp$3 = err$1;
chain = _tmp$2;
err = _tmp$3;
$s = -1; return [chain, err];
}
chain = $append(chain, parsedCert);
i = i + (1) >> 0;
/* } */ $s = 1; continue; case 2:
_tmp$4 = chain;
_tmp$5 = $ifaceNil;
chain = _tmp$4;
err = _tmp$5;
$s = -1; return [chain, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: extractSimpleChain }; } $f.$ptr = $ptr; $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.buf = buf; $f.cert = cert; $f.chain = chain; $f.count = count; $f.elements = elements; $f.encodedCert = encodedCert; $f.err = err; $f.err$1 = err$1; $f.i = i; $f.lastChain = lastChain; $f.parsedCert = parsedCert; $f.simpleChain = simpleChain; $f.simpleChains = simpleChains; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
checkChainTrustStatus = function(c, chainCtx) {
var $ptr, _1, c, chainCtx, status, x, x$1;
if (!((chainCtx.TrustStatus.ErrorStatus === 0))) {
status = chainCtx.TrustStatus.ErrorStatus;
_1 = status;
if (_1 === (1)) {
return (x = new CertificateInvalidError.ptr(c, 1), new x.constructor.elem(x));
} else {
return (x$1 = new UnknownAuthorityError.ptr(c, $ifaceNil, ptrType$1.nil), new x$1.constructor.elem(x$1));
}
}
return $ifaceNil;
};
checkChainSSLServerPolicy = function(c, chainCtx, opts) {
var $ptr, _1, _tuple, c, chainCtx, err, opts, para, servernamep, sslPara, status, x, x$1, x$2, x$3;
_tuple = syscall.UTF16PtrFromString(opts.DNSName);
servernamep = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return err;
}
sslPara = new syscall.SSLExtraCertChainPolicyPara.ptr(0, 2, 0, servernamep);
sslPara.Size = 16;
para = new syscall.CertChainPolicyPara.ptr(0, 0, ((sslPara)));
para.Size = 12;
status = new syscall.CertChainPolicyStatus.ptr(0, 0, 0, 0, 0);
err = syscall.CertVerifyCertificateChainPolicy(4, chainCtx, para, status);
if (!($interfaceIsEqual(err, $ifaceNil))) {
return err;
}
if (!((status.Error === 0))) {
_1 = status.Error;
if (_1 === (2148204801)) {
return (x = new CertificateInvalidError.ptr(c, 1), new x.constructor.elem(x));
} else if (_1 === (2148204815)) {
return (x$1 = new HostnameError.ptr(c, opts.DNSName), new x$1.constructor.elem(x$1));
} else if (_1 === (2148204809)) {
return (x$2 = new UnknownAuthorityError.ptr(c, $ifaceNil, ptrType$1.nil), new x$2.constructor.elem(x$2));
} else {
return (x$3 = new UnknownAuthorityError.ptr(c, $ifaceNil, ptrType$1.nil), new x$3.constructor.elem(x$3));
}
}
return $ifaceNil;
};
Certificate.ptr.prototype.systemVerify = function(opts) {
var $ptr, _r, _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, c, chain, chainCtx, chains, err, ft, hasDNSName, oids, opts, para, storeCtx, verifyTime, x, x$1, x$2, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; chain = $f.chain; chainCtx = $f.chainCtx; chains = $f.chains; err = $f.err; ft = $f.ft; hasDNSName = $f.hasDNSName; oids = $f.oids; opts = $f.opts; para = $f.para; storeCtx = $f.storeCtx; verifyTime = $f.verifyTime; 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);
chainCtx = [chainCtx];
ft = [ft];
chains = sliceType$13.nil;
err = $ifaceNil;
c = this;
hasDNSName = !(opts === ptrType$14.nil) && opts.DNSName.length > 0;
_tuple = createStoreContext(c, opts);
storeCtx = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = sliceType$13.nil;
_tmp$1 = err;
chains = _tmp;
err = _tmp$1;
$s = -1; return [chains, err];
}
$deferred.push([syscall.CertFreeCertificateContext, [storeCtx]]);
para = new syscall.CertChainPara.ptr(0, new syscall.CertUsageMatch.ptr(0, new syscall.CertEnhKeyUsage.ptr(0, ptrType$15.nil)), new syscall.CertUsageMatch.ptr(0, new syscall.CertEnhKeyUsage.ptr(0, ptrType$15.nil)), 0, 0, 0, ptrType$16.nil);
para.Size = 44;
if (hasDNSName) {
oids = new sliceType$14([(x = syscall.OID_PKIX_KP_SERVER_AUTH, $indexPtr(x.$array, x.$offset + 0, ptrType$8)), (x$1 = syscall.OID_SERVER_GATED_CRYPTO, $indexPtr(x$1.$array, x$1.$offset + 0, ptrType$8)), (x$2 = syscall.OID_SGC_NETSCAPE, $indexPtr(x$2.$array, x$2.$offset + 0, ptrType$8))]);
para.RequestedUsage.Type = 1;
para.RequestedUsage.Usage.Length = ((oids.$length >>> 0));
para.RequestedUsage.Usage.UsageIdentifiers = $indexPtr(oids.$array, oids.$offset + 0, ptrType$15);
} else {
para.RequestedUsage.Type = 0;
para.RequestedUsage.Usage.Length = 0;
para.RequestedUsage.Usage.UsageIdentifiers = ptrType$15.nil;
}
verifyTime = ptrType$16.nil;
if (!(opts === ptrType$14.nil) && !$clone(opts.CurrentTime, time.Time).IsZero()) {
ft[0] = $clone(syscall.NsecToFiletime($clone(opts.CurrentTime, time.Time).UnixNano()), syscall.Filetime);
verifyTime = ft[0];
}
chainCtx[0] = ptrType$17.nil;
err = syscall.CertGetCertificateChain(0, storeCtx, verifyTime, storeCtx.Store, para, 0, 0, (chainCtx.$ptr || (chainCtx.$ptr = new ptrType$18(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, chainCtx))));
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$2 = sliceType$13.nil;
_tmp$3 = err;
chains = _tmp$2;
err = _tmp$3;
$s = -1; return [chains, err];
}
$deferred.push([syscall.CertFreeCertificateChain, [chainCtx[0]]]);
err = checkChainTrustStatus(c, chainCtx[0]);
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$4 = sliceType$13.nil;
_tmp$5 = err;
chains = _tmp$4;
err = _tmp$5;
$s = -1; return [chains, err];
}
if (hasDNSName) {
err = checkChainSSLServerPolicy(c, chainCtx[0], opts);
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$6 = sliceType$13.nil;
_tmp$7 = err;
chains = _tmp$6;
err = _tmp$7;
$s = -1; return [chains, err];
}
}
_r = extractSimpleChain(chainCtx[0].Chains, ((chainCtx[0].ChainCount >> 0))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
chain = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$8 = sliceType$13.nil;
_tmp$9 = err;
chains = _tmp$8;
err = _tmp$9;
$s = -1; return [chains, err];
}
chains = $append(chains, chain);
_tmp$10 = chains;
_tmp$11 = $ifaceNil;
chains = _tmp$10;
err = _tmp$11;
$s = -1; return [chains, err];
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [chains, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.systemVerify }; } $f.$ptr = $ptr; $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._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.chain = chain; $f.chainCtx = chainCtx; $f.chains = chains; $f.err = err; $f.ft = ft; $f.hasDNSName = hasDNSName; $f.oids = oids; $f.opts = opts; $f.para = para; $f.storeCtx = storeCtx; $f.verifyTime = verifyTime; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Certificate.prototype.systemVerify = function(opts) { return this.$val.systemVerify(opts); };
ParseECPrivateKey = function(der) {
var $ptr, _r, der, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; der = $f.der; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = parseECPrivateKey(ptrType$6.nil, der); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: ParseECPrivateKey }; } $f.$ptr = $ptr; $f._r = _r; $f.der = der; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.ParseECPrivateKey = ParseECPrivateKey;
parseECPrivateKey = function(namedCurveOID, der) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
privKey = [privKey];
key = ptrType$19.nil;
err = $ifaceNil;
privKey[0] = new ecPrivateKey.ptr(0, sliceType$3.nil, asn1.ObjectIdentifier.nil, new asn1.BitString.ptr(sliceType$3.nil, 0));
_r = asn1.Unmarshal(der, privKey[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
err$1 = _tuple[1];
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 2:
_tmp = ptrType$19.nil;
_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; }
_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; }
_tmp$1 = _r$2;
key = _tmp;
err = _tmp$1;
$s = -1; return [key, err];
/* } */ case 3:
/* */ if (!((privKey[0].Version === 1))) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!((privKey[0].Version === 1))) { */ case 6:
_tmp$2 = ptrType$19.nil;
_r$3 = fmt.Errorf("x509: unknown EC private key version %d", new sliceType$10([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; }
_tmp$3 = _r$3;
key = _tmp$2;
err = _tmp$3;
$s = -1; return [key, err];
/* } */ case 7:
curve = $ifaceNil;
/* */ if (!(namedCurveOID === ptrType$6.nil)) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (!(namedCurveOID === ptrType$6.nil)) { */ case 9:
_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; }
curve = _r$4;
$s = 11; continue;
/* } else { */ case 10:
_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; }
curve = _r$5;
/* } */ case 11:
if ($interfaceIsEqual(curve, $ifaceNil)) {
_tmp$4 = ptrType$19.nil;
_tmp$5 = errors.New("x509: unknown elliptic curve");
key = _tmp$4;
err = _tmp$5;
$s = -1; return [key, err];
}
k = new big.Int.ptr(false, big.nat.nil).SetBytes(privKey[0].PrivateKey);
_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; }
curveOrder = _r$6.N;
if (k.Cmp(curveOrder) >= 0) {
_tmp$6 = ptrType$19.nil;
_tmp$7 = errors.New("x509: invalid elliptic curve private key value");
key = _tmp$6;
err = _tmp$7;
$s = -1; return [key, err];
}
priv = new ecdsa.PrivateKey.ptr(new ecdsa.PublicKey.ptr($ifaceNil, ptrType$4.nil, ptrType$4.nil), ptrType$4.nil);
priv.PublicKey.Curve = curve;
priv.D = k;
privateKey = $makeSlice(sliceType$3, (_q = ((curveOrder.BitLen() + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")));
while (true) {
if (!(privKey[0].PrivateKey.$length > privateKey.$length)) { break; }
if (!(((x = privKey[0].PrivateKey, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) === 0))) {
_tmp$8 = ptrType$19.nil;
_tmp$9 = errors.New("x509: invalid private key length");
key = _tmp$8;
err = _tmp$9;
$s = -1; return [key, err];
}
privKey[0].PrivateKey = $subslice(privKey[0].PrivateKey, 1);
}
$copySlice($subslice(privateKey, (privateKey.$length - privKey[0].PrivateKey.$length >> 0)), privKey[0].PrivateKey);
_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; }
_tuple$1 = _r$7;
priv.PublicKey.X = _tuple$1[0];
priv.PublicKey.Y = _tuple$1[1];
_tmp$10 = priv;
_tmp$11 = $ifaceNil;
key = _tmp$10;
err = _tmp$11;
$s = -1; return [key, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: parseECPrivateKey }; } $f.$ptr = $ptr; $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;
};
CertificateInvalidError.ptr.prototype.Error = function() {
var $ptr, _1, e;
e = this;
_1 = e.Reason;
if (_1 === (0)) {
return "x509: certificate is not authorized to sign other certificates";
} else if (_1 === (1)) {
return "x509: certificate has expired or is not yet valid";
} else if (_1 === (2)) {
return "x509: a root or intermediate certificate is not authorized to sign in this domain";
} else if (_1 === (3)) {
return "x509: too many intermediates for path length constraint";
} else if (_1 === (4)) {
return "x509: certificate specifies an incompatible key usage";
} else if (_1 === (5)) {
return "x509: issuer name does not match subject from issuing certificate";
}
return "x509: unknown error";
};
CertificateInvalidError.prototype.Error = function() { return this.$val.Error(); };
HostnameError.ptr.prototype.Error = function() {
var $ptr, _i, _ref, c, h, ip, san, valid;
h = this;
c = h.Certificate;
valid = "";
ip = net.ParseIP(h.Host);
if (!(ip === net.IP.nil)) {
if (c.IPAddresses.$length === 0) {
return "x509: cannot validate certificate for " + h.Host + " because it doesn't contain any IP SANs";
}
_ref = c.IPAddresses;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
san = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (valid.length > 0) {
valid = valid + (", ");
}
valid = valid + (san.String());
_i++;
}
} else {
if (c.DNSNames.$length > 0) {
valid = strings.Join(c.DNSNames, ", ");
} else {
valid = c.Subject.CommonName;
}
}
if (valid.length === 0) {
return "x509: certificate is not valid for any names, but wanted to match " + h.Host;
}
return "x509: certificate is valid for " + valid + ", not " + h.Host;
};
HostnameError.prototype.Error = function() { return this.$val.Error(); };
UnknownAuthorityError.ptr.prototype.Error = function() {
var $ptr, _r, _r$1, certName, e, s, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
e = this;
s = "x509: certificate signed by unknown authority";
/* */ if (!($interfaceIsEqual(e.hintErr, $ifaceNil))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!($interfaceIsEqual(e.hintErr, $ifaceNil))) { */ case 1:
certName = e.hintCert.Subject.CommonName;
/* */ if (certName.length === 0) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (certName.length === 0) { */ case 3:
/* */ if (e.hintCert.Subject.Organization.$length > 0) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (e.hintCert.Subject.Organization.$length > 0) { */ case 5:
certName = (x = e.hintCert.Subject.Organization, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]));
$s = 7; continue;
/* } else { */ case 6:
_r = e.hintCert.SerialNumber.String(); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
certName = "serial:" + _r;
/* } */ case 7:
/* } */ case 4:
_r$1 = fmt.Sprintf(" (possibly because of %q while trying to verify candidate authority certificate %q)", new sliceType$10([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; }
s = s + (_r$1);
/* } */ case 2:
$s = -1; return s;
/* */ } return; } if ($f === undefined) { $f = { $blk: UnknownAuthorityError.ptr.prototype.Error }; } $f.$ptr = $ptr; $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;
};
UnknownAuthorityError.prototype.Error = function() { return this.$val.Error(); };
SystemRootsError.ptr.prototype.Error = function() {
var $ptr, _r, msg, se, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; msg = $f.msg; se = $f.se; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
se = this;
msg = "x509: failed to load system roots and no roots provided";
/* */ if (!($interfaceIsEqual(se.Err, $ifaceNil))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!($interfaceIsEqual(se.Err, $ifaceNil))) { */ case 1:
_r = se.Err.Error(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return msg + "; " + _r;
/* } */ case 2:
$s = -1; return msg;
/* */ } return; } if ($f === undefined) { $f = { $blk: SystemRootsError.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.msg = msg; $f.se = se; $f.$s = $s; $f.$r = $r; return $f;
};
SystemRootsError.prototype.Error = function() { return this.$val.Error(); };
matchNameConstraint = function(domain, constraint) {
var $ptr, constraint, constraintHasLeadingDot, domain, isSubdomain, prefixLen;
if (constraint.length === 0) {
return true;
}
if (domain.length < constraint.length) {
return false;
}
prefixLen = domain.length - constraint.length >> 0;
if (!strings.EqualFold($substring(domain, prefixLen), constraint)) {
return false;
}
if (prefixLen === 0) {
return true;
}
isSubdomain = domain.charCodeAt((prefixLen - 1 >> 0)) === 46;
constraintHasLeadingDot = constraint.charCodeAt(0) === 46;
return !(isSubdomain === constraintHasLeadingDot);
};
Certificate.ptr.prototype.isValid = function(certType, currentChain, opts) {
var $ptr, _i, _ref, c, certType, child, constraint, currentChain, now, numIntermediates, ok, opts, x, x$1, x$2, x$3, x$4, x$5;
c = this;
if (currentChain.$length > 0) {
child = (x = currentChain.$length - 1 >> 0, ((x < 0 || x >= currentChain.$length) ? ($throwRuntimeError("index out of range"), undefined) : currentChain.$array[currentChain.$offset + x]));
if (!bytes.Equal(child.RawIssuer, c.RawSubject)) {
return (x$1 = new CertificateInvalidError.ptr(c, 5), new x$1.constructor.elem(x$1));
}
}
now = $clone(opts.CurrentTime, time.Time);
if ($clone(now, time.Time).IsZero()) {
time.Time.copy(now, time.Now());
}
if ($clone(now, time.Time).Before($clone(c.NotBefore, time.Time)) || $clone(now, time.Time).After($clone(c.NotAfter, time.Time))) {
return (x$2 = new CertificateInvalidError.ptr(c, 1), new x$2.constructor.elem(x$2));
}
if (c.PermittedDNSDomains.$length > 0) {
ok = false;
_ref = c.PermittedDNSDomains;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
constraint = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
ok = matchNameConstraint(opts.DNSName, constraint);
if (ok) {
break;
}
_i++;
}
if (!ok) {
return (x$3 = new CertificateInvalidError.ptr(c, 2), new x$3.constructor.elem(x$3));
}
}
if ((certType === 1) && (!c.BasicConstraintsValid || !c.IsCA)) {
return (x$4 = new CertificateInvalidError.ptr(c, 0), new x$4.constructor.elem(x$4));
}
if (c.BasicConstraintsValid && c.MaxPathLen >= 0) {
numIntermediates = currentChain.$length - 1 >> 0;
if (numIntermediates > c.MaxPathLen) {
return (x$5 = new CertificateInvalidError.ptr(c, 3), new x$5.constructor.elem(x$5));
}
}
return $ifaceNil;
};
Certificate.prototype.isValid = function(certType, currentChain, opts) { return this.$val.isValid(certType, currentChain, opts); };
Certificate.ptr.prototype.Verify = function(opts) {
var $ptr, _i, _i$1, _i$2, _r, _r$1, _r$2, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, c, candidate, candidateChains, chains, err, intermediate, keyUsages, opts, usage, x, x$1, x$2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$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; _tuple$1 = $f._tuple$1; c = $f.c; candidate = $f.candidate; candidateChains = $f.candidateChains; chains = $f.chains; err = $f.err; intermediate = $f.intermediate; keyUsages = $f.keyUsages; opts = $f.opts; usage = $f.usage; 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:
opts = [opts];
chains = sliceType$13.nil;
err = $ifaceNil;
c = this;
if (c.Raw.$length === 0) {
_tmp = sliceType$13.nil;
_tmp$1 = errNotParsed;
chains = _tmp;
err = _tmp$1;
$s = -1; return [chains, err];
}
if (!(opts[0].Intermediates === ptrType.nil)) {
_ref = opts[0].Intermediates.certs;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
intermediate = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (intermediate.Raw.$length === 0) {
_tmp$2 = sliceType$13.nil;
_tmp$3 = errNotParsed;
chains = _tmp$2;
err = _tmp$3;
$s = -1; return [chains, err];
}
_i++;
}
}
/* */ if (opts[0].Roots === ptrType.nil && true) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (opts[0].Roots === ptrType.nil && true) { */ case 1:
_r = c.systemVerify(opts[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
chains = _tuple[0];
err = _tuple[1];
$s = -1; return [chains, err];
/* } */ case 2:
if (c.UnhandledCriticalExtensions.$length > 0) {
_tmp$4 = sliceType$13.nil;
_tmp$5 = (x = new UnhandledCriticalExtension.ptr(), new x.constructor.elem(x));
chains = _tmp$4;
err = _tmp$5;
$s = -1; return [chains, err];
}
/* */ if (opts[0].Roots === ptrType.nil) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (opts[0].Roots === ptrType.nil) { */ case 4:
_r$1 = systemRootsPool(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
opts[0].Roots = _r$1;
if (opts[0].Roots === ptrType.nil) {
_tmp$6 = sliceType$13.nil;
_tmp$7 = (x$1 = new SystemRootsError.ptr(systemRootsErr), new x$1.constructor.elem(x$1));
chains = _tmp$6;
err = _tmp$7;
$s = -1; return [chains, err];
}
/* } */ case 5:
err = c.isValid(0, sliceType$5.nil, opts[0]);
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [chains, err];
}
if (opts[0].DNSName.length > 0) {
err = c.VerifyHostname(opts[0].DNSName);
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [chains, err];
}
}
candidateChains = sliceType$13.nil;
/* */ if (opts[0].Roots.contains(c)) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (opts[0].Roots.contains(c)) { */ case 7:
candidateChains = $append(candidateChains, new sliceType$5([c]));
$s = 9; continue;
/* } else { */ case 8:
_r$2 = c.buildChains({}, new sliceType$5([c]), opts[0]); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$1 = _r$2;
candidateChains = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$8 = sliceType$13.nil;
_tmp$9 = err;
chains = _tmp$8;
err = _tmp$9;
$s = -1; return [chains, err];
}
/* } */ case 9:
keyUsages = opts[0].KeyUsages;
if (keyUsages.$length === 0) {
keyUsages = new sliceType$15([1]);
}
_ref$1 = keyUsages;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
usage = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
if (usage === 0) {
chains = candidateChains;
$s = -1; return [chains, err];
}
_i$1++;
}
_ref$2 = candidateChains;
_i$2 = 0;
while (true) {
if (!(_i$2 < _ref$2.$length)) { break; }
candidate = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]);
if (checkChainForKeyUsage(candidate, keyUsages)) {
chains = $append(chains, candidate);
}
_i$2++;
}
if (chains.$length === 0) {
err = (x$2 = new CertificateInvalidError.ptr(c, 4), new x$2.constructor.elem(x$2));
}
$s = -1; return [chains, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.Verify }; } $f.$ptr = $ptr; $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._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$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._tuple$1 = _tuple$1; $f.c = c; $f.candidate = candidate; $f.candidateChains = candidateChains; $f.chains = chains; $f.err = err; $f.intermediate = intermediate; $f.keyUsages = keyUsages; $f.opts = opts; $f.usage = usage; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
};
Certificate.prototype.Verify = function(opts) { return this.$val.Verify(opts); };
appendToFreshChain = function(chain, cert) {
var $ptr, cert, chain, n, x;
n = $makeSlice(sliceType$5, (chain.$length + 1 >> 0));
$copySlice(n, chain);
(x = chain.$length, ((x < 0 || x >= n.$length) ? ($throwRuntimeError("index out of range"), undefined) : n.$array[n.$offset + x] = cert));
return n;
};
Certificate.ptr.prototype.buildChains = function(cache, currentChain, opts) {
var $ptr, _entry, _i, _i$1, _i$2, _i$3, _key, _r, _r$1, _r$2, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
chains = sliceType$13.nil;
err = $ifaceNil;
c = this;
_r = opts.Roots.findVerifiedParents(c); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
possibleRoots = _tuple[0];
failedRoot = _tuple[1];
rootErr = _tuple[2];
_ref = possibleRoots;
_i = 0;
/* while (true) { */ case 2:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
rootNum = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
root = (x = opts.Roots.certs, ((rootNum < 0 || rootNum >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + rootNum]));
_ref$1 = currentChain;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
cert = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
if (cert.Equal(root)) {
_i++;
/* continue nextRoot; */ $s = 2; continue s;
}
_i$1++;
}
err = root.isValid(2, currentChain, opts);
if (!($interfaceIsEqual(err, $ifaceNil))) {
_i++;
/* continue; */ $s = 2; continue;
}
chains = $append(chains, appendToFreshChain(currentChain, root));
_i++;
/* } */ $s = 2; continue; case 3:
_r$1 = opts.Intermediates.findVerifiedParents(c); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple$1 = _r$1;
possibleIntermediates = _tuple$1[0];
failedIntermediate = _tuple$1[1];
intermediateErr = _tuple$1[2];
_ref$2 = possibleIntermediates;
_i$2 = 0;
/* while (true) { */ case 5:
/* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 6; continue; }
intermediateNum = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]);
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]));
_ref$3 = currentChain;
_i$3 = 0;
/* while (true) { */ case 7:
/* if (!(_i$3 < _ref$3.$length)) { break; } */ if(!(_i$3 < _ref$3.$length)) { $s = 8; continue; }
cert$1 = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]);
if (cert$1.Equal(intermediate)) {
_i$2++;
/* continue nextIntermediate; */ $s = 5; continue s;
}
_i$3++;
/* } */ $s = 7; continue; case 8:
err = intermediate.isValid(1, currentChain, opts);
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 9:
_i$2++;
/* continue; */ $s = 5; continue;
/* } */ case 10:
childChains = sliceType$13.nil;
_tuple$2 = (_entry = cache[$Int.keyFor(intermediateNum)], _entry !== undefined ? [_entry.v, true] : [sliceType$13.nil, false]);
childChains = _tuple$2[0];
ok = _tuple$2[1];
/* */ if (!ok) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if (!ok) { */ case 11:
_r$2 = intermediate.buildChains(cache, appendToFreshChain(currentChain, intermediate), opts); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$3 = _r$2;
childChains = _tuple$3[0];
err = _tuple$3[1];
_key = intermediateNum; (cache || $throwRuntimeError("assignment to entry in nil map"))[$Int.keyFor(_key)] = { k: _key, v: childChains };
/* } */ case 12:
chains = $appendSlice(chains, childChains);
_i$2++;
/* } */ $s = 5; continue; case 6:
if (chains.$length > 0) {
err = $ifaceNil;
}
if ((chains.$length === 0) && $interfaceIsEqual(err, $ifaceNil)) {
hintErr = rootErr;
hintCert = failedRoot;
if ($interfaceIsEqual(hintErr, $ifaceNil)) {
hintErr = intermediateErr;
hintCert = failedIntermediate;
}
err = (x$2 = new UnknownAuthorityError.ptr(c, hintErr, hintCert), new x$2.constructor.elem(x$2));
}
$s = -1; return [chains, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.buildChains }; } $f.$ptr = $ptr; $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._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;
};
Certificate.prototype.buildChains = function(cache, currentChain, opts) { return this.$val.buildChains(cache, currentChain, opts); };
matchHostnames = function(pattern, host) {
var $ptr, _i, _ref, host, hostParts, i, pattern, patternPart, patternParts;
host = strings.TrimSuffix(host, ".");
pattern = strings.TrimSuffix(pattern, ".");
if ((pattern.length === 0) || (host.length === 0)) {
return false;
}
patternParts = strings.Split(pattern, ".");
hostParts = strings.Split(host, ".");
if (!((patternParts.$length === hostParts.$length))) {
return false;
}
_ref = patternParts;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
patternPart = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if ((i === 0) && patternPart === "*") {
_i++;
continue;
}
if (!(patternPart === ((i < 0 || i >= hostParts.$length) ? ($throwRuntimeError("index out of range"), undefined) : hostParts.$array[hostParts.$offset + i]))) {
return false;
}
_i++;
}
return true;
};
toLowerCaseASCII = function(in$1) {
var $ptr, _i, _i$1, _ref, _ref$1, _rune, c, c$1, i, in$1, isAlreadyLowerCase, out;
isAlreadyLowerCase = true;
_ref = in$1;
_i = 0;
while (true) {
if (!(_i < _ref.length)) { break; }
_rune = $decodeRune(_ref, _i);
c = _rune[0];
if (c === 65533) {
isAlreadyLowerCase = false;
break;
}
if (65 <= c && c <= 90) {
isAlreadyLowerCase = false;
break;
}
_i += _rune[1];
}
if (isAlreadyLowerCase) {
return in$1;
}
out = (new sliceType$3($stringToBytes(in$1)));
_ref$1 = out;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
i = _i$1;
c$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
if (65 <= c$1 && c$1 <= 90) {
((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));
}
_i$1++;
}
return ($bytesToString(out));
};
Certificate.ptr.prototype.VerifyHostname = function(h) {
var $ptr, _i, _i$1, _ref, _ref$1, c, candidate, candidateIP, h, ip, lowered, match, x, x$1;
c = this;
candidateIP = h;
if (h.length >= 3 && (h.charCodeAt(0) === 91) && (h.charCodeAt((h.length - 1 >> 0)) === 93)) {
candidateIP = $substring(h, 1, (h.length - 1 >> 0));
}
ip = net.ParseIP(candidateIP);
if (!(ip === net.IP.nil)) {
_ref = c.IPAddresses;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
candidate = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (ip.Equal(candidate)) {
return $ifaceNil;
}
_i++;
}
return (x = new HostnameError.ptr(c, candidateIP), new x.constructor.elem(x));
}
lowered = toLowerCaseASCII(h);
if (c.DNSNames.$length > 0) {
_ref$1 = c.DNSNames;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
match = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
if (matchHostnames(toLowerCaseASCII(match), lowered)) {
return $ifaceNil;
}
_i$1++;
}
} else if (matchHostnames(toLowerCaseASCII(c.Subject.CommonName), lowered)) {
return $ifaceNil;
}
return (x$1 = new HostnameError.ptr(c, h), new x$1.constructor.elem(x$1));
};
Certificate.prototype.VerifyHostname = function(h) { return this.$val.VerifyHostname(h); };
checkChainForKeyUsage = function(chain, keyUsages) {
var $ptr, _i, _i$1, _i$2, _ref, _ref$1, _ref$2, cert, chain, i, i$1, keyUsages, requestedUsage, usage, usage$1, usages, usagesRemaining;
usages = $makeSlice(sliceType$15, keyUsages.$length);
$copySlice(usages, keyUsages);
if (chain.$length === 0) {
return false;
}
usagesRemaining = usages.$length;
i = chain.$length - 1 >> 0;
NextCert:
while (true) {
if (!(i >= 0)) { break; }
cert = ((i < 0 || i >= chain.$length) ? ($throwRuntimeError("index out of range"), undefined) : chain.$array[chain.$offset + i]);
if ((cert.ExtKeyUsage.$length === 0) && (cert.UnknownExtKeyUsage.$length === 0)) {
i = i - (1) >> 0;
continue;
}
_ref = cert.ExtKeyUsage;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
usage = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (usage === 0) {
i = i - (1) >> 0;
continue NextCert;
}
_i++;
}
_ref$1 = usages;
_i$1 = 0;
NextRequestedUsage:
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
i$1 = _i$1;
requestedUsage = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
if (requestedUsage === -1) {
_i$1++;
continue;
}
_ref$2 = cert.ExtKeyUsage;
_i$2 = 0;
while (true) {
if (!(_i$2 < _ref$2.$length)) { break; }
usage$1 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]);
if (requestedUsage === usage$1) {
_i$1++;
continue NextRequestedUsage;
} else if ((requestedUsage === 1) && ((usage$1 === 11) || (usage$1 === 10))) {
_i$1++;
continue NextRequestedUsage;
}
_i$2++;
}
((i$1 < 0 || i$1 >= usages.$length) ? ($throwRuntimeError("index out of range"), undefined) : usages.$array[usages.$offset + i$1] = -1);
usagesRemaining = usagesRemaining - (1) >> 0;
if (usagesRemaining === 0) {
return false;
}
_i$1++;
}
i = i - (1) >> 0;
}
return true;
};
SignatureAlgorithm.prototype.isRSAPSS = function() {
var $ptr, _1, algo;
algo = this.$val;
_1 = algo;
if ((_1 === (13)) || (_1 === (14)) || (_1 === (15))) {
return true;
} else {
return false;
}
};
$ptrType(SignatureAlgorithm).prototype.isRSAPSS = function() { return new SignatureAlgorithm(this.$get()).isRSAPSS(); };
SignatureAlgorithm.prototype.String = function() {
var $ptr, algo;
algo = this.$val;
if (0 < algo && ((algo >> 0)) < 16) {
return ((algo < 0 || algo >= algoName.length) ? ($throwRuntimeError("index out of range"), undefined) : algoName[algo]);
}
return strconv.Itoa(((algo >> 0)));
};
$ptrType(SignatureAlgorithm).prototype.String = function() { return new SignatureAlgorithm(this.$get()).String(); };
rsaPSSParameters = function(hashFunc) {
var $ptr, _1, _r, _r$1, _tuple, _tuple$1, err, hashFunc, hashOID, mgf1Params, params, serialized, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
hashOID = asn1.ObjectIdentifier.nil;
_1 = hashFunc;
if (_1 === (5)) {
hashOID = oidSHA256;
} else if (_1 === (6)) {
hashOID = oidSHA384;
} else if (_1 === (7)) {
hashOID = oidSHA512;
}
params = new pssParameters.ptr(new pkix.AlgorithmIdentifier.ptr(hashOID, new asn1.RawValue.ptr(0, 5, false, sliceType$3.nil, sliceType$3.nil)), new pkix.AlgorithmIdentifier.ptr(oidMGF1, new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil)), new crypto.Hash(hashFunc).Size(), 1);
mgf1Params = new pkix.AlgorithmIdentifier.ptr(hashOID, new asn1.RawValue.ptr(0, 5, false, sliceType$3.nil, sliceType$3.nil));
err = $ifaceNil;
_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; }
_tuple = _r;
params.MGF.Parameters.FullBytes = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$panic(err);
}
_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; }
_tuple$1 = _r$1;
serialized = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$panic(err);
}
$s = -1; return new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, serialized);
/* */ } return; } if ($f === undefined) { $f = { $blk: rsaPSSParameters }; } $f.$ptr = $ptr; $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;
};
getSignatureAlgorithmFromAI = function(ai) {
var $ptr, _i, _r, _r$1, _ref, _tuple, _tuple$1, ai, asn1NULL, details, err, err$1, mgf1HashFunc, params, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; asn1NULL = $f.asn1NULL; 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:
mgf1HashFunc = [mgf1HashFunc];
params = [params];
if (!ai.Algorithm.Equal(oidSignatureRSAPSS)) {
_ref = signatureAlgorithmDetails;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
details = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), structType);
if (ai.Algorithm.Equal(details.oid)) {
$s = -1; return details.algo;
}
_i++;
}
$s = -1; return 0;
}
params[0] = new pssParameters.ptr(new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil)), new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil)), 0, 0);
_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; }
_tuple = _r;
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return 0;
}
mgf1HashFunc[0] = new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil));
_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; }
_tuple$1 = _r$1;
err$1 = _tuple$1[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return 0;
}
asn1NULL = new sliceType$3([5, 0]);
if (!bytes.Equal(params[0].Hash.Parameters.FullBytes, asn1NULL) || !params[0].MGF.Algorithm.Equal(oidMGF1) || !mgf1HashFunc[0].Algorithm.Equal(params[0].Hash.Algorithm) || !bytes.Equal(mgf1HashFunc[0].Parameters.FullBytes, asn1NULL) || !((params[0].TrailerField === 1))) {
$s = -1; return 0;
}
if (params[0].Hash.Algorithm.Equal(oidSHA256) && (params[0].SaltLength === 32)) {
$s = -1; return 13;
} else if (params[0].Hash.Algorithm.Equal(oidSHA384) && (params[0].SaltLength === 48)) {
$s = -1; return 14;
} else if (params[0].Hash.Algorithm.Equal(oidSHA512) && (params[0].SaltLength === 64)) {
$s = -1; return 15;
}
$s = -1; return 0;
/* */ } return; } if ($f === undefined) { $f = { $blk: getSignatureAlgorithmFromAI }; } $f.$ptr = $ptr; $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.asn1NULL = asn1NULL; $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;
};
getPublicKeyAlgorithmFromOID = function(oid) {
var $ptr, oid;
if (oid.Equal(oidPublicKeyRSA)) {
return 1;
} else if (oid.Equal(oidPublicKeyDSA)) {
return 2;
} else if (oid.Equal(oidPublicKeyECDSA)) {
return 3;
}
return 0;
};
namedCurveFromOID = function(oid) {
var $ptr, _r, _r$1, _r$2, _r$3, oid, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
/* */ if (oid.Equal(oidNamedCurveP224)) { $s = 2; continue; }
/* */ if (oid.Equal(oidNamedCurveP256)) { $s = 3; continue; }
/* */ if (oid.Equal(oidNamedCurveP384)) { $s = 4; continue; }
/* */ if (oid.Equal(oidNamedCurveP521)) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (oid.Equal(oidNamedCurveP224)) { */ case 2:
_r = elliptic.P224(); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } else if (oid.Equal(oidNamedCurveP256)) { */ case 3:
_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; }
$s = -1; return _r$1;
/* } else if (oid.Equal(oidNamedCurveP384)) { */ case 4:
_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; }
$s = -1; return _r$2;
/* } else if (oid.Equal(oidNamedCurveP521)) { */ case 5:
_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; }
$s = -1; return _r$3;
/* } */ case 6:
case 1:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: namedCurveFromOID }; } $f.$ptr = $ptr; $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;
};
extKeyUsageFromOID = function(oid) {
var $ptr, _i, _ref, _tmp, _tmp$1, eku, oid, ok, pair;
eku = 0;
ok = false;
_ref = extKeyUsageOIDs;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
pair = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), structType$1);
if (oid.Equal(pair.oid)) {
_tmp = pair.extKeyUsage;
_tmp$1 = true;
eku = _tmp;
ok = _tmp$1;
return [eku, ok];
}
_i++;
}
return [eku, ok];
};
InsecureAlgorithmError.prototype.Error = function() {
var $ptr, _r, e, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
e = this.$val;
_r = fmt.Sprintf("x509: cannot verify signature: insecure algorithm %v", new sliceType$10([new SignatureAlgorithm(((e >> 0)))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: InsecureAlgorithmError.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(InsecureAlgorithmError).prototype.Error = function() { return new InsecureAlgorithmError(this.$get()).Error(); };
ConstraintViolationError.ptr.prototype.Error = function() {
var $ptr;
return "x509: invalid signature: parent certificate cannot sign this kind of certificate";
};
ConstraintViolationError.prototype.Error = function() { return this.$val.Error(); };
Certificate.ptr.prototype.Equal = function(other) {
var $ptr, c, other;
c = this;
return bytes.Equal(c.Raw, other.Raw);
};
Certificate.prototype.Equal = function(other) { return this.$val.Equal(other); };
Certificate.ptr.prototype.CheckSignatureFrom = function(parent) {
var $ptr, _r, c, parent, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
c = this;
if (((parent.Version === 3) && !parent.BasicConstraintsValid || parent.BasicConstraintsValid && !parent.IsCA) && !bytes.Equal(c.RawSubjectPublicKeyInfo, entrustBrokenSPKI)) {
$s = -1; return (x = new ConstraintViolationError.ptr(), new x.constructor.elem(x));
}
if (!((parent.KeyUsage === 0)) && ((parent.KeyUsage & 32) === 0)) {
$s = -1; return (x$1 = new ConstraintViolationError.ptr(), new x$1.constructor.elem(x$1));
}
if (parent.PublicKeyAlgorithm === 0) {
$s = -1; return $pkg.ErrUnsupportedAlgorithm;
}
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.CheckSignatureFrom }; } $f.$ptr = $ptr; $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;
};
Certificate.prototype.CheckSignatureFrom = function(parent) { return this.$val.CheckSignatureFrom(parent); };
Certificate.ptr.prototype.CheckSignature = function(algo, signed, signature) {
var $ptr, _r, algo, c, signature, signed, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
c = this;
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.CheckSignature }; } $f.$ptr = $ptr; $f._r = _r; $f.algo = algo; $f.c = c; $f.signature = signature; $f.signed = signed; $f.$s = $s; $f.$r = $r; return $f;
};
Certificate.prototype.CheckSignature = function(algo, signed, signature) { return this.$val.CheckSignature(algo, signed, signature); };
checkSignature = function(algo, signed, signature, publicKey) {
var $ptr, _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, _tuple, _tuple$1, algo, digest, dsaSig, ecdsaSig, err, err$1, err$2, h, hashType, pub, pub$1, pub$2, publicKey, rest, rest$1, signature, signed, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; algo = $f.algo; 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; 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:
err = $ifaceNil;
hashType = 0;
_1 = algo;
if ((_1 === (3)) || (_1 === (7)) || (_1 === (9))) {
hashType = 3;
} else if ((_1 === (4)) || (_1 === (13)) || (_1 === (8)) || (_1 === (10))) {
hashType = 5;
} else if ((_1 === (5)) || (_1 === (14)) || (_1 === (11))) {
hashType = 6;
} else if ((_1 === (6)) || (_1 === (15)) || (_1 === (12))) {
hashType = 7;
} else if ((_1 === (1)) || (_1 === (2))) {
err = new InsecureAlgorithmError(((algo >> 0)));
$s = -1; return err;
} else {
err = $pkg.ErrUnsupportedAlgorithm;
$s = -1; return err;
}
if (!new crypto.Hash(hashType).Available()) {
err = $pkg.ErrUnsupportedAlgorithm;
$s = -1; return err;
}
_r = new crypto.Hash(hashType).New(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
h = _r;
_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; }
_r$1;
_r$2 = h.Sum(sliceType$3.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
digest = _r$2;
_ref = publicKey;
/* */ if ($assertType(_ref, ptrType$20, true)[1]) { $s = 4; continue; }
/* */ if ($assertType(_ref, ptrType$22, true)[1]) { $s = 5; continue; }
/* */ if ($assertType(_ref, ptrType$21, true)[1]) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if ($assertType(_ref, ptrType$20, true)[1]) { */ case 4:
pub = _ref.$val;
/* */ if (new SignatureAlgorithm(algo).isRSAPSS()) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (new SignatureAlgorithm(algo).isRSAPSS()) { */ case 8:
_r$3 = rsa.VerifyPSS(pub, hashType, digest, signature, new rsa.PSSOptions.ptr(-1, 0)); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
err = _r$3;
$s = -1; return err;
/* } else { */ case 9:
_r$4 = rsa.VerifyPKCS1v15(pub, hashType, digest, signature); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
err = _r$4;
$s = -1; return err;
/* } */ case 10:
$s = 7; continue;
/* } else if ($assertType(_ref, ptrType$22, true)[1]) { */ case 5:
pub$1 = _ref.$val;
dsaSig = new dsaSignature.ptr(ptrType$4.nil, ptrType$4.nil);
_r$5 = asn1.Unmarshal(signature, dsaSig); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_tuple = _r$5;
rest = _tuple[0];
err$1 = _tuple[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
err = err$1;
$s = -1; return err;
} else if (!((rest.$length === 0))) {
err = errors.New("x509: trailing data after DSA signature");
$s = -1; return err;
}
if (dsaSig.R.Sign() <= 0 || dsaSig.S.Sign() <= 0) {
err = errors.New("x509: DSA signature contained zero or negative values");
$s = -1; return err;
}
_r$6 = dsa.Verify(pub$1, digest, dsaSig.R, dsaSig.S); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
/* */ if (!_r$6) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if (!_r$6) { */ case 14:
err = errors.New("x509: DSA verification failure");
$s = -1; return err;
/* } */ case 15:
$s = -1; return err;
/* } else if ($assertType(_ref, ptrType$21, true)[1]) { */ case 6:
pub$2 = _ref.$val;
ecdsaSig = new ecdsaSignature.ptr(ptrType$4.nil, ptrType$4.nil);
_r$7 = asn1.Unmarshal(signature, ecdsaSig); /* */ $s = 17; case 17: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_tuple$1 = _r$7;
rest$1 = _tuple$1[0];
err$2 = _tuple$1[1];
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
err = err$2;
$s = -1; return err;
} else if (!((rest$1.$length === 0))) {
err = errors.New("x509: trailing data after ECDSA signature");
$s = -1; return err;
}
if (ecdsaSig.R.Sign() <= 0 || ecdsaSig.S.Sign() <= 0) {
err = errors.New("x509: ECDSA signature contained zero or negative values");
$s = -1; return err;
}
_r$8 = ecdsa.Verify(pub$2, digest, ecdsaSig.R, ecdsaSig.S); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
/* */ if (!_r$8) { $s = 18; continue; }
/* */ $s = 19; continue;
/* if (!_r$8) { */ case 18:
err = errors.New("x509: ECDSA verification failure");
$s = -1; return err;
/* } */ case 19:
$s = -1; return err;
/* } */ case 7:
err = $pkg.ErrUnsupportedAlgorithm;
$s = -1; return err;
/* */ } return; } if ($f === undefined) { $f = { $blk: checkSignature }; } $f.$ptr = $ptr; $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._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.algo = algo; $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.publicKey = publicKey; $f.rest = rest; $f.rest$1 = rest$1; $f.signature = signature; $f.signed = signed; $f.$s = $s; $f.$r = $r; return $f;
};
Certificate.ptr.prototype.CheckCRLSignature = function(crl) {
var $ptr, _r, _r$1, algo, c, crl, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
c = this;
_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; }
algo = _r;
_r$1 = c.CheckSignature(algo, (x = crl.TBSCertList.Raw, $subslice(new sliceType$3(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; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.CheckCRLSignature }; } $f.$ptr = $ptr; $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;
};
Certificate.prototype.CheckCRLSignature = function(crl) { return this.$val.CheckCRLSignature(crl); };
UnhandledCriticalExtension.ptr.prototype.Error = function() {
var $ptr, h;
h = this;
return "x509: unhandled critical extension";
};
UnhandledCriticalExtension.prototype.Error = function() { return this.$val.Error(); };
parsePublicKey = function(algo, keyData) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
p = [p];
asn1Data = $clone(keyData.PublicKey, asn1.BitString).RightAlign();
_1 = algo;
/* */ if (_1 === (1)) { $s = 2; continue; }
/* */ if (_1 === (2)) { $s = 3; continue; }
/* */ if (_1 === (3)) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (_1 === (1)) { */ case 2:
if (!bytes.Equal(keyData.Algorithm.Parameters.FullBytes, asn1Null)) {
$s = -1; return [$ifaceNil, errors.New("x509: RSA key missing NULL parameters")];
}
p$1 = new rsaPublicKey.ptr(ptrType$4.nil, 0);
_r = asn1.Unmarshal(asn1Data, p$1); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
rest = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [$ifaceNil, err];
}
if (!((rest.$length === 0))) {
$s = -1; return [$ifaceNil, errors.New("x509: trailing data after RSA public key")];
}
if (p$1.N.Sign() <= 0) {
$s = -1; return [$ifaceNil, errors.New("x509: RSA modulus is not a positive number")];
}
if (p$1.E <= 0) {
$s = -1; return [$ifaceNil, errors.New("x509: RSA public exponent is not a positive number")];
}
pub = new rsa.PublicKey.ptr(p$1.N, p$1.E);
$s = -1; return [pub, $ifaceNil];
/* } else if (_1 === (2)) { */ case 3:
p[0] = ptrType$4.nil;
_r$1 = asn1.Unmarshal(asn1Data, (p.$ptr || (p.$ptr = new ptrType$23(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; }
_tuple$1 = _r$1;
rest$1 = _tuple$1[0];
err$1 = _tuple$1[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return [$ifaceNil, err$1];
}
if (!((rest$1.$length === 0))) {
$s = -1; return [$ifaceNil, errors.New("x509: trailing data after DSA public key")];
}
paramsData = keyData.Algorithm.Parameters.FullBytes;
params = new dsaAlgorithmParameters.ptr(ptrType$4.nil, ptrType$4.nil, ptrType$4.nil);
_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; }
_tuple$2 = _r$2;
rest$1 = _tuple$2[0];
err$1 = _tuple$2[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return [$ifaceNil, err$1];
}
if (!((rest$1.$length === 0))) {
$s = -1; return [$ifaceNil, errors.New("x509: trailing data after DSA parameters")];
}
if (p[0].Sign() <= 0 || params.P.Sign() <= 0 || params.Q.Sign() <= 0 || params.G.Sign() <= 0) {
$s = -1; return [$ifaceNil, errors.New("x509: zero or negative DSA parameter")];
}
pub$1 = new dsa.PublicKey.ptr(new dsa.Parameters.ptr(params.P, params.Q, params.G), p[0]);
$s = -1; return [pub$1, $ifaceNil];
/* } else if (_1 === (3)) { */ case 4:
paramsData$1 = keyData.Algorithm.Parameters.FullBytes;
namedCurveOID = $newDataPointer(asn1.ObjectIdentifier.nil, ptrType$6);
_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; }
_tuple$3 = _r$3;
rest$2 = _tuple$3[0];
err$2 = _tuple$3[1];
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return [$ifaceNil, err$2];
}
if (!((rest$2.$length === 0))) {
$s = -1; return [$ifaceNil, errors.New("x509: trailing data after ECDSA parameters")];
}
_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; }
namedCurve = _r$4;
if ($interfaceIsEqual(namedCurve, $ifaceNil)) {
$s = -1; return [$ifaceNil, errors.New("x509: unsupported elliptic curve")];
}
_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; }
_tuple$4 = _r$5;
x = _tuple$4[0];
y = _tuple$4[1];
if (x === ptrType$4.nil) {
$s = -1; return [$ifaceNil, errors.New("x509: failed to unmarshal elliptic curve point")];
}
pub$2 = new ecdsa.PublicKey.ptr(namedCurve, x, y);
$s = -1; return [pub$2, $ifaceNil];
/* } else { */ case 5:
$s = -1; return [$ifaceNil, $ifaceNil];
/* } */ case 6:
case 1:
$s = -1; return [$ifaceNil, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: parsePublicKey }; } $f.$ptr = $ptr; $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;
};
parseSANExtension = function(value) {
var $ptr, _1, _2, _r, _r$1, _tuple, _tuple$1, dnsNames, emailAddresses, err, ipAddresses, rest, seq, v, value, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _2 = $f._2; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; dnsNames = $f.dnsNames; emailAddresses = $f.emailAddresses; err = $f.err; ipAddresses = $f.ipAddresses; rest = $f.rest; seq = $f.seq; v = $f.v; value = $f.value; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
seq = [seq];
dnsNames = sliceType$16.nil;
emailAddresses = sliceType$16.nil;
ipAddresses = sliceType$17.nil;
err = $ifaceNil;
seq[0] = new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil);
rest = sliceType$3.nil;
_r = asn1.Unmarshal(value, seq[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
rest = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [dnsNames, emailAddresses, ipAddresses, err];
} else if (!((rest.$length === 0))) {
err = errors.New("x509: trailing data after X.509 extension");
$s = -1; return [dnsNames, emailAddresses, ipAddresses, err];
}
if (!seq[0].IsCompound || !((seq[0].Tag === 16)) || !((seq[0].Class === 0))) {
err = (x = new asn1.StructuralError.ptr("bad SAN sequence"), new x.constructor.elem(x));
$s = -1; return [dnsNames, emailAddresses, ipAddresses, err];
}
rest = seq[0].Bytes;
/* while (true) { */ case 2:
/* if (!(rest.$length > 0)) { break; } */ if(!(rest.$length > 0)) { $s = 3; continue; }
v = [v];
v[0] = new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil);
_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; }
_tuple$1 = _r$1;
rest = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [dnsNames, emailAddresses, ipAddresses, err];
}
_1 = v[0].Tag;
if (_1 === (1)) {
emailAddresses = $append(emailAddresses, ($bytesToString(v[0].Bytes)));
} else if (_1 === (2)) {
dnsNames = $append(dnsNames, ($bytesToString(v[0].Bytes)));
} else if (_1 === (7)) {
_2 = v[0].Bytes.$length;
if ((_2 === (4)) || (_2 === (16))) {
ipAddresses = $append(ipAddresses, (x$1 = v[0].Bytes, $subslice(new net.IP(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)));
} else {
err = errors.New("x509: certificate contained IP address of length " + strconv.Itoa(v[0].Bytes.$length));
$s = -1; return [dnsNames, emailAddresses, ipAddresses, err];
}
}
/* } */ $s = 2; continue; case 3:
$s = -1; return [dnsNames, emailAddresses, ipAddresses, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: parseSANExtension }; } $f.$ptr = $ptr; $f._1 = _1; $f._2 = _2; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.dnsNames = dnsNames; $f.emailAddresses = emailAddresses; $f.err = err; $f.ipAddresses = ipAddresses; $f.rest = rest; $f.seq = seq; $f.v = v; $f.value = value; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
};
parseCertificate = function(in$1) {
var $ptr, _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$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$14, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, a, aia, cdp, constraints, constraints$1, dp, e, 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, extKeyUsage, i, i$1, in$1, issuer, keyUsage, keyid, n, ok, out, policies, policy, rest, rest$1, rest$10, rest$2, rest$3, rest$4, rest$5, rest$6, rest$7, rest$8, rest$9, subject, subtree, u, unhandled, usage, usageBits, v, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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$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; _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$14 = $f._tuple$14; _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; constraints$1 = $f.constraints$1; dp = $f.dp; e = $f.e; 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; extKeyUsage = $f.extKeyUsage; i = $f.i; i$1 = $f.i$1; in$1 = $f.in$1; issuer = $f.issuer; keyUsage = $f.keyUsage; keyid = $f.keyid; n = $f.n; ok = $f.ok; out = $f.out; policies = $f.policies; policy = $f.policy; rest = $f.rest; rest$1 = $f.rest$1; rest$10 = $f.rest$10; 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; subtree = $f.subtree; 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; x$8 = $f.x$8; x$9 = $f.x$9; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
issuer = [issuer];
subject = [subject];
out = new Certificate.ptr(sliceType$3.nil, sliceType$3.nil, sliceType$3.nil, sliceType$3.nil, sliceType$3.nil, sliceType$3.nil, 0, 0, $ifaceNil, 0, ptrType$4.nil, new pkix.Name.ptr(sliceType$16.nil, sliceType$16.nil, sliceType$16.nil, sliceType$16.nil, sliceType$16.nil, sliceType$16.nil, sliceType$16.nil, "", "", sliceType$18.nil, sliceType$18.nil), new pkix.Name.ptr(sliceType$16.nil, sliceType$16.nil, sliceType$16.nil, sliceType$16.nil, sliceType$16.nil, sliceType$16.nil, sliceType$16.nil, "", "", sliceType$18.nil, sliceType$18.nil), new time.Time.ptr(new $Int64(0, 0), 0, ptrType$24.nil), new time.Time.ptr(new $Int64(0, 0), 0, ptrType$24.nil), 0, sliceType$19.nil, sliceType$19.nil, sliceType$20.nil, sliceType$15.nil, sliceType$20.nil, false, false, 0, false, sliceType$3.nil, sliceType$3.nil, sliceType$16.nil, sliceType$16.nil, sliceType$16.nil, sliceType$16.nil, sliceType$17.nil, false, sliceType$16.nil, sliceType$16.nil, sliceType$20.nil);
out.Raw = (x = in$1.Raw, $subslice(new sliceType$3(x.$array), x.$offset, x.$offset + x.$length));
out.RawTBSCertificate = (x$1 = in$1.TBSCertificate.Raw, $subslice(new sliceType$3(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length));
out.RawSubjectPublicKeyInfo = (x$2 = in$1.TBSCertificate.PublicKey.Raw, $subslice(new sliceType$3(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length));
out.RawSubject = in$1.TBSCertificate.Subject.FullBytes;
out.RawIssuer = in$1.TBSCertificate.Issuer.FullBytes;
out.Signature = $clone(in$1.SignatureValue, asn1.BitString).RightAlign();
_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; }
out.SignatureAlgorithm = _r;
out.PublicKeyAlgorithm = getPublicKeyAlgorithmFromOID(in$1.TBSCertificate.PublicKey.Algorithm.Algorithm);
err = $ifaceNil;
_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; }
_tuple = _r$1;
out.PublicKey = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$1.nil, err];
}
out.Version = in$1.TBSCertificate.Version + 1 >> 0;
out.SerialNumber = in$1.TBSCertificate.SerialNumber;
_tmp = pkix.RDNSequence.nil;
_tmp$1 = pkix.RDNSequence.nil;
issuer[0] = _tmp;
subject[0] = _tmp$1;
_r$2 = asn1.Unmarshal(in$1.TBSCertificate.Subject.FullBytes, (subject.$ptr || (subject.$ptr = new ptrType$25(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; }
_tuple$1 = _r$2;
rest = _tuple$1[0];
err$1 = _tuple$1[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return [ptrType$1.nil, err$1];
} else if (!((rest.$length === 0))) {
$s = -1; return [ptrType$1.nil, errors.New("x509: trailing data after X.509 subject")];
}
_r$3 = asn1.Unmarshal(in$1.TBSCertificate.Issuer.FullBytes, (issuer.$ptr || (issuer.$ptr = new ptrType$25(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; }
_tuple$2 = _r$3;
rest$1 = _tuple$2[0];
err$2 = _tuple$2[1];
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return [ptrType$1.nil, err$2];
} else if (!((rest$1.$length === 0))) {
$s = -1; return [ptrType$1.nil, errors.New("x509: trailing data after X.509 subject")];
}
out.Issuer.FillFromRDNSequence((issuer.$ptr || (issuer.$ptr = new ptrType$25(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, issuer))));
out.Subject.FillFromRDNSequence((subject.$ptr || (subject.$ptr = new ptrType$25(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, subject))));
time.Time.copy(out.NotBefore, in$1.TBSCertificate.Validity.NotBefore);
time.Time.copy(out.NotAfter, in$1.TBSCertificate.Validity.NotAfter);
_ref = in$1.TBSCertificate.Extensions;
_i = 0;
/* while (true) { */ case 5:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 6; continue; }
a = [a];
aia = [aia];
cdp = [cdp];
constraints = [constraints];
constraints$1 = [constraints$1];
keyUsage = [keyUsage];
keyid = [keyid];
policies = [policies];
usageBits = [usageBits];
e = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), pkix.Extension);
out.Extensions = $append(out.Extensions, e);
unhandled = false;
/* */ 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; }
/* */ if (e.Id.Equal($subslice(new asn1.ObjectIdentifier(oidExtensionAuthorityInfoAccess.$array), oidExtensionAuthorityInfoAccess.$offset, oidExtensionAuthorityInfoAccess.$offset + oidExtensionAuthorityInfoAccess.$length))) { $s = 8; continue; }
/* */ $s = 9; continue;
/* 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:
_1 = (x$6 = e.Id, (3 >= x$6.$length ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + 3]));
/* */ if (_1 === (15)) { $s = 12; continue; }
/* */ if (_1 === (19)) { $s = 13; continue; }
/* */ if (_1 === (17)) { $s = 14; continue; }
/* */ if (_1 === (30)) { $s = 15; continue; }
/* */ if (_1 === (31)) { $s = 16; continue; }
/* */ if (_1 === (35)) { $s = 17; continue; }
/* */ if (_1 === (37)) { $s = 18; continue; }
/* */ if (_1 === (14)) { $s = 19; continue; }
/* */ if (_1 === (32)) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if (_1 === (15)) { */ case 12:
usageBits[0] = new asn1.BitString.ptr(sliceType$3.nil, 0);
_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; }
_tuple$3 = _r$4;
rest$2 = _tuple$3[0];
err$3 = _tuple$3[1];
if (!($interfaceIsEqual(err$3, $ifaceNil))) {
$s = -1; return [ptrType$1.nil, err$3];
} else if (!((rest$2.$length === 0))) {
$s = -1; return [ptrType$1.nil, errors.New("x509: trailing data after X.509 KeyUsage")];
}
usage = 0;
i = 0;
while (true) {
if (!(i < 9)) { break; }
if (!(($clone(usageBits[0], asn1.BitString).At(i) === 0))) {
usage = usage | (((y = ((i >>> 0)), y < 32 ? (1 << y) : 0) >> 0));
}
i = i + (1) >> 0;
}
out.KeyUsage = ((usage >> 0));
$s = 22; continue;
/* } else if (_1 === (19)) { */ case 13:
constraints$1[0] = new basicConstraints.ptr(false, 0);
_r$5 = asn1.Unmarshal(e.Value, constraints$1[0]); /* */ $s = 24; case 24: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_tuple$4 = _r$5;
rest$3 = _tuple$4[0];
err$4 = _tuple$4[1];
if (!($interfaceIsEqual(err$4, $ifaceNil))) {
$s = -1; return [ptrType$1.nil, err$4];
} else if (!((rest$3.$length === 0))) {
$s = -1; return [ptrType$1.nil, errors.New("x509: trailing data after X.509 BasicConstraints")];
}
out.BasicConstraintsValid = true;
out.IsCA = constraints$1[0].IsCA;
out.MaxPathLen = constraints$1[0].MaxPathLen;
out.MaxPathLenZero = out.MaxPathLen === 0;
$s = 22; continue;
/* } else if (_1 === (17)) { */ case 14:
_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; }
_tuple$5 = _r$6;
out.DNSNames = _tuple$5[0];
out.EmailAddresses = _tuple$5[1];
out.IPAddresses = _tuple$5[2];
err = _tuple$5[3];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$1.nil, err];
}
if ((out.DNSNames.$length === 0) && (out.EmailAddresses.$length === 0) && (out.IPAddresses.$length === 0)) {
unhandled = true;
}
$s = 22; continue;
/* } else if (_1 === (30)) { */ case 15:
constraints[0] = new nameConstraints.ptr(sliceType$21.nil, sliceType$21.nil);
_r$7 = asn1.Unmarshal(e.Value, constraints[0]); /* */ $s = 26; case 26: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_tuple$6 = _r$7;
rest$4 = _tuple$6[0];
err$5 = _tuple$6[1];
if (!($interfaceIsEqual(err$5, $ifaceNil))) {
$s = -1; return [ptrType$1.nil, err$5];
} else if (!((rest$4.$length === 0))) {
$s = -1; return [ptrType$1.nil, errors.New("x509: trailing data after X.509 NameConstraints")];
}
if (constraints[0].Excluded.$length > 0 && e.Critical) {
$s = -1; return [out, (x$7 = new UnhandledCriticalExtension.ptr(), new x$7.constructor.elem(x$7))];
}
_ref$1 = constraints[0].Permitted;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
subtree = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), generalSubtree);
if (subtree.Name.length === 0) {
if (e.Critical) {
$s = -1; return [out, (x$8 = new UnhandledCriticalExtension.ptr(), new x$8.constructor.elem(x$8))];
}
_i$1++;
continue;
}
out.PermittedDNSDomains = $append(out.PermittedDNSDomains, subtree.Name);
_i$1++;
}
$s = 22; continue;
/* } else if (_1 === (31)) { */ case 16:
cdp[0] = sliceType$22.nil;
_r$8 = asn1.Unmarshal(e.Value, (cdp.$ptr || (cdp.$ptr = new ptrType$26(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; }
_tuple$7 = _r$8;
rest$5 = _tuple$7[0];
err$6 = _tuple$7[1];
if (!($interfaceIsEqual(err$6, $ifaceNil))) {
$s = -1; return [ptrType$1.nil, err$6];
} else if (!((rest$5.$length === 0))) {
$s = -1; return [ptrType$1.nil, errors.New("x509: trailing data after X.509 CRL distribution point")];
}
_ref$2 = cdp[0];
_i$2 = 0;
/* while (true) { */ case 28:
/* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 29; continue; }
n = [n];
dp = $clone(((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]), distributionPoint);
/* */ if (dp.DistributionPoint.FullName.Bytes.$length === 0) { $s = 30; continue; }
/* */ $s = 31; continue;
/* if (dp.DistributionPoint.FullName.Bytes.$length === 0) { */ case 30:
_i$2++;
/* continue; */ $s = 28; continue;
/* } */ case 31:
n[0] = new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil);
_r$9 = asn1.Unmarshal(dp.DistributionPoint.FullName.Bytes, n[0]); /* */ $s = 32; case 32: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
_tuple$8 = _r$9;
err$7 = _tuple$8[1];
if (!($interfaceIsEqual(err$7, $ifaceNil))) {
$s = -1; return [ptrType$1.nil, err$7];
}
if (n[0].Tag === 6) {
out.CRLDistributionPoints = $append(out.CRLDistributionPoints, ($bytesToString(n[0].Bytes)));
}
_i$2++;
/* } */ $s = 28; continue; case 29:
$s = 22; continue;
/* } else if (_1 === (35)) { */ case 17:
a[0] = new authKeyId.ptr(sliceType$3.nil);
_r$10 = asn1.Unmarshal(e.Value, a[0]); /* */ $s = 33; case 33: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
_tuple$9 = _r$10;
rest$6 = _tuple$9[0];
err$8 = _tuple$9[1];
if (!($interfaceIsEqual(err$8, $ifaceNil))) {
$s = -1; return [ptrType$1.nil, err$8];
} else if (!((rest$6.$length === 0))) {
$s = -1; return [ptrType$1.nil, errors.New("x509: trailing data after X.509 authority key-id")];
}
out.AuthorityKeyId = a[0].Id;
$s = 22; continue;
/* } else if (_1 === (37)) { */ case 18:
keyUsage[0] = sliceType$20.nil;
_r$11 = asn1.Unmarshal(e.Value, (keyUsage.$ptr || (keyUsage.$ptr = new ptrType$27(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, keyUsage)))); /* */ $s = 34; case 34: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
_tuple$10 = _r$11;
rest$7 = _tuple$10[0];
err$9 = _tuple$10[1];
if (!($interfaceIsEqual(err$9, $ifaceNil))) {
$s = -1; return [ptrType$1.nil, err$9];
} else if (!((rest$7.$length === 0))) {
$s = -1; return [ptrType$1.nil, errors.New("x509: trailing data after X.509 ExtendedKeyUsage")];
}
_ref$3 = keyUsage[0];
_i$3 = 0;
while (true) {
if (!(_i$3 < _ref$3.$length)) { break; }
u = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]);
_tuple$11 = extKeyUsageFromOID(u);
extKeyUsage = _tuple$11[0];
ok = _tuple$11[1];
if (ok) {
out.ExtKeyUsage = $append(out.ExtKeyUsage, extKeyUsage);
} else {
out.UnknownExtKeyUsage = $append(out.UnknownExtKeyUsage, u);
}
_i$3++;
}
$s = 22; continue;
/* } else if (_1 === (14)) { */ case 19:
keyid[0] = sliceType$3.nil;
_r$12 = asn1.Unmarshal(e.Value, (keyid.$ptr || (keyid.$ptr = new ptrType$28(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, keyid)))); /* */ $s = 35; case 35: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
_tuple$12 = _r$12;
rest$8 = _tuple$12[0];
err$10 = _tuple$12[1];
if (!($interfaceIsEqual(err$10, $ifaceNil))) {
$s = -1; return [ptrType$1.nil, err$10];
} else if (!((rest$8.$length === 0))) {
$s = -1; return [ptrType$1.nil, errors.New("x509: trailing data after X.509 key-id")];
}
out.SubjectKeyId = keyid[0];
$s = 22; continue;
/* } else if (_1 === (32)) { */ case 20:
policies[0] = sliceType$23.nil;
_r$13 = asn1.Unmarshal(e.Value, (policies.$ptr || (policies.$ptr = new ptrType$29(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, policies)))); /* */ $s = 36; case 36: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
_tuple$13 = _r$13;
rest$9 = _tuple$13[0];
err$11 = _tuple$13[1];
if (!($interfaceIsEqual(err$11, $ifaceNil))) {
$s = -1; return [ptrType$1.nil, err$11];
} else if (!((rest$9.$length === 0))) {
$s = -1; return [ptrType$1.nil, errors.New("x509: trailing data after X.509 certificate policies")];
}
out.PolicyIdentifiers = $makeSlice(sliceType$20, policies[0].$length);
_ref$4 = policies[0];
_i$4 = 0;
while (true) {
if (!(_i$4 < _ref$4.$length)) { break; }
i$1 = _i$4;
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);
(x$9 = out.PolicyIdentifiers, ((i$1 < 0 || i$1 >= x$9.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$9.$array[x$9.$offset + i$1] = policy.Policy));
_i$4++;
}
$s = 22; continue;
/* } else { */ case 21:
unhandled = true;
/* } */ case 22:
case 11:
$s = 10; continue;
/* } else if (e.Id.Equal($subslice(new asn1.ObjectIdentifier(oidExtensionAuthorityInfoAccess.$array), oidExtensionAuthorityInfoAccess.$offset, oidExtensionAuthorityInfoAccess.$offset + oidExtensionAuthorityInfoAccess.$length))) { */ case 8:
aia[0] = sliceType$24.nil;
_r$14 = asn1.Unmarshal(e.Value, (aia.$ptr || (aia.$ptr = new ptrType$30(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, aia)))); /* */ $s = 37; case 37: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
_tuple$14 = _r$14;
rest$10 = _tuple$14[0];
err$12 = _tuple$14[1];
if (!($interfaceIsEqual(err$12, $ifaceNil))) {
$s = -1; return [ptrType$1.nil, err$12];
} else if (!((rest$10.$length === 0))) {
$s = -1; return [ptrType$1.nil, errors.New("x509: trailing data after X.509 authority information")];
}
_ref$5 = aia[0];
_i$5 = 0;
while (true) {
if (!(_i$5 < _ref$5.$length)) { break; }
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);
if (!((v.Location.Tag === 6))) {
_i$5++;
continue;
}
if (v.Method.Equal(oidAuthorityInfoAccessOcsp)) {
out.OCSPServer = $append(out.OCSPServer, ($bytesToString(v.Location.Bytes)));
} else if (v.Method.Equal(oidAuthorityInfoAccessIssuers)) {
out.IssuingCertificateURL = $append(out.IssuingCertificateURL, ($bytesToString(v.Location.Bytes)));
}
_i$5++;
}
$s = 10; continue;
/* } else { */ case 9:
unhandled = true;
/* } */ case 10:
if (e.Critical && unhandled) {
out.UnhandledCriticalExtensions = $append(out.UnhandledCriticalExtensions, e.Id);
}
_i++;
/* } */ $s = 5; continue; case 6:
$s = -1; return [out, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: parseCertificate }; } $f.$ptr = $ptr; $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$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._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$14 = _tuple$14; $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.constraints$1 = constraints$1; $f.dp = dp; $f.e = e; $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.extKeyUsage = extKeyUsage; $f.i = i; $f.i$1 = i$1; $f.in$1 = in$1; $f.issuer = issuer; $f.keyUsage = keyUsage; $f.keyid = keyid; $f.n = n; $f.ok = ok; $f.out = out; $f.policies = policies; $f.policy = policy; $f.rest = rest; $f.rest$1 = rest$1; $f.rest$10 = rest$10; $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.subtree = subtree; $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.x$8 = x$8; $f.x$9 = x$9; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
};
ParseCertificate = function(asn1Data) {
var $ptr, _r, _r$1, _tuple, asn1Data, cert, err, rest, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
cert = [cert];
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$3.nil, sliceType$3.nil)), new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil), new validity.ptr(new time.Time.ptr(new $Int64(0, 0), 0, ptrType$24.nil), new time.Time.ptr(new $Int64(0, 0), 0, ptrType$24.nil)), new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil), new publicKeyInfo.ptr(asn1.RawContent.nil, new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil)), new asn1.BitString.ptr(sliceType$3.nil, 0)), new asn1.BitString.ptr(sliceType$3.nil, 0), new asn1.BitString.ptr(sliceType$3.nil, 0), sliceType$19.nil), new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil)), new asn1.BitString.ptr(sliceType$3.nil, 0));
_r = asn1.Unmarshal(asn1Data, cert[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
rest = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$1.nil, err];
}
if (rest.$length > 0) {
$s = -1; return [ptrType$1.nil, (x = new asn1.SyntaxError.ptr("trailing data"), new x.constructor.elem(x))];
}
_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; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: ParseCertificate }; } $f.$ptr = $ptr; $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;
};
$pkg.ParseCertificate = ParseCertificate;
signingParamsForPublicKey = function(pub, requestedSigAlgo) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
hashFunc = 0;
sigAlgo = new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$3.nil, sliceType$3.nil));
err = $ifaceNil;
pubType = 0;
_ref = pub;
/* */ if ($assertType(_ref, ptrType$20, true)[1]) { $s = 1; continue; }
/* */ if ($assertType(_ref, ptrType$21, true)[1]) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if ($assertType(_ref, ptrType$20, true)[1]) { */ case 1:
pub$1 = _ref.$val;
pubType = 1;
hashFunc = 5;
sigAlgo.Algorithm = oidSignatureSHA256WithRSA;
asn1.RawValue.copy(sigAlgo.Parameters, new asn1.RawValue.ptr(0, 5, false, sliceType$3.nil, sliceType$3.nil));
$s = 4; continue;
/* } else if ($assertType(_ref, ptrType$21, true)[1]) { */ case 2:
pub$2 = _ref.$val;
pubType = 3;
_1 = pub$2.Curve;
_r = elliptic.P224(); /* */ $s = 12; case 12: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
if ($interfaceIsEqual(_1, (_r))) { _v = true; $s = 11; continue s; }
_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; }
_v = $interfaceIsEqual(_1, (_r$1)); case 11:
/* */ if (_v) { $s = 6; continue; }
_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; }
/* */ if ($interfaceIsEqual(_1, (_r$2))) { $s = 7; continue; }
_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; }
/* */ if ($interfaceIsEqual(_1, (_r$3))) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (_v) { */ case 6:
hashFunc = 5;
sigAlgo.Algorithm = oidSignatureECDSAWithSHA256;
$s = 10; continue;
/* } else if ($interfaceIsEqual(_1, (_r$2))) { */ case 7:
hashFunc = 6;
sigAlgo.Algorithm = oidSignatureECDSAWithSHA384;
$s = 10; continue;
/* } else if ($interfaceIsEqual(_1, (_r$3))) { */ case 8:
hashFunc = 7;
sigAlgo.Algorithm = oidSignatureECDSAWithSHA512;
$s = 10; continue;
/* } else { */ case 9:
err = errors.New("x509: unknown elliptic curve");
/* } */ case 10:
case 5:
$s = 4; continue;
/* } else { */ case 3:
pub$3 = _ref;
err = errors.New("x509: only RSA and ECDSA keys supported");
/* } */ case 4:
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [hashFunc, sigAlgo, err];
}
if (requestedSigAlgo === 0) {
$s = -1; return [hashFunc, sigAlgo, err];
}
found = false;
_ref$1 = signatureAlgorithmDetails;
_i = 0;
/* while (true) { */ case 16:
/* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 17; continue; }
details = $clone(((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]), structType);
/* */ if (details.algo === requestedSigAlgo) { $s = 18; continue; }
/* */ $s = 19; continue;
/* if (details.algo === requestedSigAlgo) { */ case 18:
if (!((details.pubKeyAlgo === pubType))) {
err = errors.New("x509: requested SignatureAlgorithm does not match private key type");
$s = -1; return [hashFunc, sigAlgo, err];
}
_tmp = details.oid;
_tmp$1 = details.hash;
sigAlgo.Algorithm = _tmp;
hashFunc = _tmp$1;
if (hashFunc === 0) {
err = errors.New("x509: cannot sign with hash function requested");
$s = -1; return [hashFunc, sigAlgo, err];
}
/* */ if (new SignatureAlgorithm(requestedSigAlgo).isRSAPSS()) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if (new SignatureAlgorithm(requestedSigAlgo).isRSAPSS()) { */ case 20:
_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; }
asn1.RawValue.copy(sigAlgo.Parameters, _r$4);
/* } */ case 21:
found = true;
/* break; */ $s = 17; continue;
/* } */ case 19:
_i++;
/* } */ $s = 16; continue; case 17:
if (!found) {
err = errors.New("x509: unknown SignatureAlgorithm");
}
$s = -1; return [hashFunc, sigAlgo, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: signingParamsForPublicKey }; } $f.$ptr = $ptr; $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;
};
Certificate.ptr.prototype.CreateCRL = function(rand, priv, revokedCerts, now, expiry) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
crlBytes = sliceType$3.nil;
err = $ifaceNil;
c = this;
_tuple = $assertType(priv, crypto.Signer, true);
key = _tuple[0];
ok = _tuple[1];
if (!ok) {
_tmp = sliceType$3.nil;
_tmp$1 = errors.New("x509: certificate private key does not implement crypto.Signer");
crlBytes = _tmp;
err = _tmp$1;
$s = -1; return [crlBytes, err];
}
_r = key.Public(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_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; }
_tuple$1 = _r$1;
hashFunc = _tuple$1[0];
signatureAlgorithm = $clone(_tuple$1[1], pkix.AlgorithmIdentifier);
err = _tuple$1[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$2 = sliceType$3.nil;
_tmp$3 = err;
crlBytes = _tmp$2;
err = _tmp$3;
$s = -1; return [crlBytes, err];
}
revokedCertsUTC = $makeSlice(sliceType$27, revokedCerts.$length);
_ref = revokedCerts;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
rc = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), pkix.RevokedCertificate);
time.Time.copy(rc.RevocationTime, $clone(rc.RevocationTime, time.Time).UTC());
pkix.RevokedCertificate.copy(((i < 0 || i >= revokedCertsUTC.$length) ? ($throwRuntimeError("index out of range"), undefined) : revokedCertsUTC.$array[revokedCertsUTC.$offset + i]), rc);
_i++;
}
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$19.nil);
/* */ if (c.SubjectKeyId.$length > 0) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (c.SubjectKeyId.$length > 0) { */ case 3:
aki = new pkix.Extension.ptr(asn1.ObjectIdentifier.nil, false, sliceType$3.nil);
aki.Id = $subslice(new asn1.ObjectIdentifier(oidExtensionAuthorityKeyId.$array), oidExtensionAuthorityKeyId.$offset, oidExtensionAuthorityKeyId.$offset + oidExtensionAuthorityKeyId.$length);
_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; }
_tuple$2 = _r$2;
aki.Value = _tuple$2[0];
err = _tuple$2[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [crlBytes, err];
}
tbsCertList.Extensions = $append(tbsCertList.Extensions, aki);
/* } */ case 4:
_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; }
_tuple$3 = _r$3;
tbsCertListContents = _tuple$3[0];
err = _tuple$3[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [crlBytes, err];
}
_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; }
h = _r$4;
_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; }
_r$5;
_r$6 = h.Sum(sliceType$3.nil); /* */ $s = 9; case 9: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
digest = _r$6;
signature = sliceType$3.nil;
_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; }
_tuple$4 = _r$7;
signature = _tuple$4[0];
err = _tuple$4[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [crlBytes, err];
}
_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; }
_tuple$5 = _r$8;
crlBytes = _tuple$5[0];
err = _tuple$5[1];
$s = -1; return [crlBytes, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.CreateCRL }; } $f.$ptr = $ptr; $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;
};
Certificate.prototype.CreateCRL = function(rand, priv, revokedCerts, now, expiry) { return this.$val.CreateCRL(rand, priv, revokedCerts, now, expiry); };
ptrType.methods = [{prop: "findVerifiedParents", name: "findVerifiedParents", pkg: "crypto/x509", typ: $funcType([ptrType$1], [sliceType$4, 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$3], [$Bool], false)}, {prop: "Subjects", name: "Subjects", pkg: "", typ: $funcType([], [sliceType$6], false)}];
CertificateInvalidError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
HostnameError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
UnknownAuthorityError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
SystemRootsError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
SignatureAlgorithm.methods = [{prop: "isRSAPSS", name: "isRSAPSS", pkg: "crypto/x509", typ: $funcType([], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
ptrType$1.methods = [{prop: "systemVerify", name: "systemVerify", pkg: "crypto/x509", typ: $funcType([ptrType$14], [sliceType$13, $error], false)}, {prop: "isValid", name: "isValid", pkg: "crypto/x509", typ: $funcType([$Int, sliceType$5, ptrType$14], [$error], false)}, {prop: "Verify", name: "Verify", pkg: "", typ: $funcType([VerifyOptions], [sliceType$13, $error], false)}, {prop: "buildChains", name: "buildChains", pkg: "crypto/x509", typ: $funcType([mapType$1, sliceType$5, ptrType$14], [sliceType$13, $error], false)}, {prop: "VerifyHostname", name: "VerifyHostname", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "Equal", name: "Equal", pkg: "", typ: $funcType([ptrType$1], [$Bool], false)}, {prop: "CheckSignatureFrom", name: "CheckSignatureFrom", pkg: "", typ: $funcType([ptrType$1], [$error], false)}, {prop: "CheckSignature", name: "CheckSignature", pkg: "", typ: $funcType([SignatureAlgorithm, sliceType$3, sliceType$3], [$error], false)}, {prop: "CheckCRLSignature", name: "CheckCRLSignature", pkg: "", typ: $funcType([ptrType$32], [$error], false)}, {prop: "CreateCRL", name: "CreateCRL", pkg: "", typ: $funcType([io.Reader, $emptyInterface, sliceType$27, time.Time, time.Time], [sliceType$3, $error], false)}];
InsecureAlgorithmError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
ConstraintViolationError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
UnhandledCriticalExtension.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
CertPool.init("crypto/x509", [{prop: "bySubjectKeyId", name: "bySubjectKeyId", exported: false, typ: mapType, tag: ""}, {prop: "byName", name: "byName", exported: false, typ: mapType, tag: ""}, {prop: "certs", name: "certs", exported: false, typ: sliceType$5, tag: ""}]);
pkcs1PrivateKey.init("", [{prop: "Version", name: "Version", exported: true, typ: $Int, tag: ""}, {prop: "N", name: "N", exported: true, typ: ptrType$4, tag: ""}, {prop: "E", name: "E", exported: true, typ: $Int, tag: ""}, {prop: "D", name: "D", exported: true, typ: ptrType$4, tag: ""}, {prop: "P", name: "P", exported: true, typ: ptrType$4, tag: ""}, {prop: "Q", name: "Q", exported: true, typ: ptrType$4, tag: ""}, {prop: "Dp", name: "Dp", exported: true, typ: ptrType$4, tag: "asn1:\"optional\""}, {prop: "Dq", name: "Dq", exported: true, typ: ptrType$4, tag: "asn1:\"optional\""}, {prop: "Qinv", name: "Qinv", exported: true, typ: ptrType$4, tag: "asn1:\"optional\""}, {prop: "AdditionalPrimes", name: "AdditionalPrimes", exported: true, typ: sliceType$7, tag: "asn1:\"optional,omitempty\""}]);
pkcs1AdditionalRSAPrime.init("", [{prop: "Prime", name: "Prime", exported: true, typ: ptrType$4, tag: ""}, {prop: "Exp", name: "Exp", exported: true, typ: ptrType$4, tag: ""}, {prop: "Coeff", name: "Coeff", exported: true, typ: ptrType$4, tag: ""}]);
rsaPublicKey.init("", [{prop: "N", name: "N", exported: true, typ: ptrType$4, tag: ""}, {prop: "E", name: "E", exported: true, typ: $Int, tag: ""}]);
pkcs8.init("", [{prop: "Version", name: "Version", exported: true, typ: $Int, tag: ""}, {prop: "Algo", name: "Algo", exported: true, typ: pkix.AlgorithmIdentifier, tag: ""}, {prop: "PrivateKey", name: "PrivateKey", exported: true, typ: sliceType$3, tag: ""}]);
ecPrivateKey.init("", [{prop: "Version", name: "Version", exported: true, typ: $Int, tag: ""}, {prop: "PrivateKey", name: "PrivateKey", exported: true, typ: sliceType$3, tag: ""}, {prop: "NamedCurveOID", name: "NamedCurveOID", exported: true, typ: asn1.ObjectIdentifier, tag: "asn1:\"optional,explicit,tag:0\""}, {prop: "PublicKey", name: "PublicKey", exported: true, typ: asn1.BitString, tag: "asn1:\"optional,explicit,tag:1\""}]);
CertificateInvalidError.init("", [{prop: "Cert", name: "Cert", exported: true, typ: ptrType$1, tag: ""}, {prop: "Reason", name: "Reason", exported: true, typ: InvalidReason, tag: ""}]);
HostnameError.init("", [{prop: "Certificate", name: "Certificate", exported: true, typ: ptrType$1, tag: ""}, {prop: "Host", name: "Host", exported: true, typ: $String, tag: ""}]);
UnknownAuthorityError.init("crypto/x509", [{prop: "Cert", name: "Cert", exported: true, typ: ptrType$1, tag: ""}, {prop: "hintErr", name: "hintErr", exported: false, typ: $error, tag: ""}, {prop: "hintCert", name: "hintCert", exported: false, typ: ptrType$1, tag: ""}]);
SystemRootsError.init("", [{prop: "Err", name: "Err", exported: true, typ: $error, tag: ""}]);
VerifyOptions.init("", [{prop: "DNSName", name: "DNSName", exported: true, typ: $String, tag: ""}, {prop: "Intermediates", name: "Intermediates", exported: true, typ: ptrType, tag: ""}, {prop: "Roots", name: "Roots", exported: true, typ: ptrType, tag: ""}, {prop: "CurrentTime", name: "CurrentTime", exported: true, typ: time.Time, tag: ""}, {prop: "KeyUsages", name: "KeyUsages", exported: true, typ: sliceType$15, tag: ""}]);
certificate.init("", [{prop: "Raw", name: "Raw", exported: true, typ: asn1.RawContent, tag: ""}, {prop: "TBSCertificate", name: "TBSCertificate", exported: true, typ: tbsCertificate, tag: ""}, {prop: "SignatureAlgorithm", name: "SignatureAlgorithm", exported: true, typ: pkix.AlgorithmIdentifier, tag: ""}, {prop: "SignatureValue", name: "SignatureValue", exported: true, typ: asn1.BitString, tag: ""}]);
tbsCertificate.init("", [{prop: "Raw", name: "Raw", exported: true, typ: asn1.RawContent, tag: ""}, {prop: "Version", name: "Version", exported: true, typ: $Int, tag: "asn1:\"optional,explicit,default:0,tag:0\""}, {prop: "SerialNumber", name: "SerialNumber", exported: true, typ: ptrType$4, tag: ""}, {prop: "SignatureAlgorithm", name: "SignatureAlgorithm", exported: true, typ: pkix.AlgorithmIdentifier, tag: ""}, {prop: "Issuer", name: "Issuer", exported: true, typ: asn1.RawValue, tag: ""}, {prop: "Validity", name: "Validity", exported: true, typ: validity, tag: ""}, {prop: "Subject", name: "Subject", exported: true, typ: asn1.RawValue, tag: ""}, {prop: "PublicKey", name: "PublicKey", exported: true, typ: publicKeyInfo, tag: ""}, {prop: "UniqueId", name: "UniqueId", exported: true, typ: asn1.BitString, tag: "asn1:\"optional,tag:1\""}, {prop: "SubjectUniqueId", name: "SubjectUniqueId", exported: true, typ: asn1.BitString, tag: "asn1:\"optional,tag:2\""}, {prop: "Extensions", name: "Extensions", exported: true, typ: sliceType$19, tag: "asn1:\"optional,explicit,tag:3\""}]);
dsaAlgorithmParameters.init("", [{prop: "P", name: "P", exported: true, typ: ptrType$4, tag: ""}, {prop: "Q", name: "Q", exported: true, typ: ptrType$4, tag: ""}, {prop: "G", name: "G", exported: true, typ: ptrType$4, tag: ""}]);
dsaSignature.init("", [{prop: "R", name: "R", exported: true, typ: ptrType$4, tag: ""}, {prop: "S", name: "S", exported: true, typ: ptrType$4, tag: ""}]);
ecdsaSignature.init("", [{prop: "R", name: "R", exported: true, typ: ptrType$4, tag: ""}, {prop: "S", name: "S", exported: true, typ: ptrType$4, tag: ""}]);
validity.init("", [{prop: "NotBefore", name: "NotBefore", exported: true, typ: time.Time, tag: ""}, {prop: "NotAfter", name: "NotAfter", exported: true, typ: time.Time, tag: ""}]);
publicKeyInfo.init("", [{prop: "Raw", name: "Raw", exported: true, typ: asn1.RawContent, tag: ""}, {prop: "Algorithm", name: "Algorithm", exported: true, typ: pkix.AlgorithmIdentifier, tag: ""}, {prop: "PublicKey", name: "PublicKey", exported: true, typ: asn1.BitString, tag: ""}]);
authKeyId.init("", [{prop: "Id", name: "Id", exported: true, typ: sliceType$3, tag: "asn1:\"optional,tag:0\""}]);
pssParameters.init("", [{prop: "Hash", name: "Hash", exported: true, typ: pkix.AlgorithmIdentifier, tag: "asn1:\"explicit,tag:0\""}, {prop: "MGF", name: "MGF", exported: true, typ: pkix.AlgorithmIdentifier, tag: "asn1:\"explicit,tag:1\""}, {prop: "SaltLength", name: "SaltLength", exported: true, typ: $Int, tag: "asn1:\"explicit,tag:2\""}, {prop: "TrailerField", name: "TrailerField", exported: true, typ: $Int, tag: "asn1:\"optional,explicit,tag:3,default:1\""}]);
Certificate.init("", [{prop: "Raw", name: "Raw", exported: true, typ: sliceType$3, tag: ""}, {prop: "RawTBSCertificate", name: "RawTBSCertificate", exported: true, typ: sliceType$3, tag: ""}, {prop: "RawSubjectPublicKeyInfo", name: "RawSubjectPublicKeyInfo", exported: true, typ: sliceType$3, tag: ""}, {prop: "RawSubject", name: "RawSubject", exported: true, typ: sliceType$3, tag: ""}, {prop: "RawIssuer", name: "RawIssuer", exported: true, typ: sliceType$3, tag: ""}, {prop: "Signature", name: "Signature", exported: true, typ: sliceType$3, tag: ""}, {prop: "SignatureAlgorithm", name: "SignatureAlgorithm", exported: true, typ: SignatureAlgorithm, tag: ""}, {prop: "PublicKeyAlgorithm", name: "PublicKeyAlgorithm", exported: true, typ: PublicKeyAlgorithm, tag: ""}, {prop: "PublicKey", name: "PublicKey", exported: true, typ: $emptyInterface, tag: ""}, {prop: "Version", name: "Version", exported: true, typ: $Int, tag: ""}, {prop: "SerialNumber", name: "SerialNumber", exported: true, typ: ptrType$4, tag: ""}, {prop: "Issuer", name: "Issuer", exported: true, typ: pkix.Name, tag: ""}, {prop: "Subject", name: "Subject", exported: true, typ: pkix.Name, tag: ""}, {prop: "NotBefore", name: "NotBefore", exported: true, typ: time.Time, tag: ""}, {prop: "NotAfter", name: "NotAfter", exported: true, typ: time.Time, tag: ""}, {prop: "KeyUsage", name: "KeyUsage", exported: true, typ: KeyUsage, tag: ""}, {prop: "Extensions", name: "Extensions", exported: true, typ: sliceType$19, tag: ""}, {prop: "ExtraExtensions", name: "ExtraExtensions", exported: true, typ: sliceType$19, tag: ""}, {prop: "UnhandledCriticalExtensions", name: "UnhandledCriticalExtensions", exported: true, typ: sliceType$20, tag: ""}, {prop: "ExtKeyUsage", name: "ExtKeyUsage", exported: true, typ: sliceType$15, tag: ""}, {prop: "UnknownExtKeyUsage", name: "UnknownExtKeyUsage", exported: true, typ: sliceType$20, tag: ""}, {prop: "BasicConstraintsValid", name: "BasicConstraintsValid", exported: true, typ: $Bool, tag: ""}, {prop: "IsCA", name: "IsCA", exported: true, typ: $Bool, tag: ""}, {prop: "MaxPathLen", name: "MaxPathLen", exported: true, typ: $Int, tag: ""}, {prop: "MaxPathLenZero", name: "MaxPathLenZero", exported: true, typ: $Bool, tag: ""}, {prop: "SubjectKeyId", name: "SubjectKeyId", exported: true, typ: sliceType$3, tag: ""}, {prop: "AuthorityKeyId", name: "AuthorityKeyId", exported: true, typ: sliceType$3, tag: ""}, {prop: "OCSPServer", name: "OCSPServer", exported: true, typ: sliceType$16, tag: ""}, {prop: "IssuingCertificateURL", name: "IssuingCertificateURL", exported: true, typ: sliceType$16, tag: ""}, {prop: "DNSNames", name: "DNSNames", exported: true, typ: sliceType$16, tag: ""}, {prop: "EmailAddresses", name: "EmailAddresses", exported: true, typ: sliceType$16, tag: ""}, {prop: "IPAddresses", name: "IPAddresses", exported: true, typ: sliceType$17, tag: ""}, {prop: "PermittedDNSDomainsCritical", name: "PermittedDNSDomainsCritical", exported: true, typ: $Bool, tag: ""}, {prop: "PermittedDNSDomains", name: "PermittedDNSDomains", exported: true, typ: sliceType$16, tag: ""}, {prop: "CRLDistributionPoints", name: "CRLDistributionPoints", exported: true, typ: sliceType$16, tag: ""}, {prop: "PolicyIdentifiers", name: "PolicyIdentifiers", exported: true, typ: sliceType$20, tag: ""}]);
ConstraintViolationError.init("", []);
UnhandledCriticalExtension.init("", []);
basicConstraints.init("", [{prop: "IsCA", name: "IsCA", exported: true, typ: $Bool, tag: "asn1:\"optional\""}, {prop: "MaxPathLen", name: "MaxPathLen", exported: true, typ: $Int, tag: "asn1:\"optional,default:-1\""}]);
policyInformation.init("", [{prop: "Policy", name: "Policy", exported: true, typ: asn1.ObjectIdentifier, tag: ""}]);
nameConstraints.init("", [{prop: "Permitted", name: "Permitted", exported: true, typ: sliceType$21, tag: "asn1:\"optional,tag:0\""}, {prop: "Excluded", name: "Excluded", exported: true, typ: sliceType$21, tag: "asn1:\"optional,tag:1\""}]);
generalSubtree.init("", [{prop: "Name", name: "Name", exported: true, typ: $String, tag: "asn1:\"tag:2,optional,ia5\""}]);
authorityInfoAccess.init("", [{prop: "Method", name: "Method", exported: true, typ: asn1.ObjectIdentifier, tag: ""}, {prop: "Location", name: "Location", exported: true, typ: asn1.RawValue, tag: ""}]);
distributionPoint.init("", [{prop: "DistributionPoint", name: "DistributionPoint", exported: true, typ: distributionPointName, tag: "asn1:\"optional,tag:0\""}, {prop: "Reason", name: "Reason", exported: true, typ: asn1.BitString, tag: "asn1:\"optional,tag:1\""}, {prop: "CRLIssuer", name: "CRLIssuer", exported: true, typ: asn1.RawValue, tag: "asn1:\"optional,tag:2\""}]);
distributionPointName.init("", [{prop: "FullName", name: "FullName", exported: true, typ: asn1.RawValue, tag: "asn1:\"optional,tag:0\""}, {prop: "RelativeName", name: "RelativeName", exported: true, typ: pkix.RDNSequence, tag: "asn1:\"optional,tag:1\""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = crypto.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = aes.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = cipher.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = des.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = dsa.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = ecdsa.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = elliptic.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = md5.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = rsa.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sha1.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sha256.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sha512.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = pkix.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = asn1.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = hex.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = pem.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = errors.$init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = fmt.$init(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = big.$init(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = net.$init(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = os.$init(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = runtime.$init(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strconv.$init(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strings.$init(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sync.$init(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = syscall.$init(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = time.$init(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = utf8.$init(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
once = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
systemRoots = ptrType.nil;
systemRootsErr = $ifaceNil;
$pkg.IncorrectPasswordError = errors.New("x509: decryption password incorrect");
errNotParsed = errors.New("x509: missing ASN.1 contents; use ParseCertificate");
algoName = $toNativeArray($kindString, ["", "MD2-RSA", "MD5-RSA", "SHA1-RSA", "SHA256-RSA", "SHA384-RSA", "SHA512-RSA", "DSA-SHA1", "DSA-SHA256", "ECDSA-SHA1", "ECDSA-SHA256", "ECDSA-SHA384", "ECDSA-SHA512", "SHA256-RSAPSS", "SHA384-RSAPSS", "SHA512-RSAPSS"]);
oidSignatureMD2WithRSA = new asn1.ObjectIdentifier([1, 2, 840, 113549, 1, 1, 2]);
oidSignatureMD5WithRSA = new asn1.ObjectIdentifier([1, 2, 840, 113549, 1, 1, 4]);
oidSignatureSHA1WithRSA = new asn1.ObjectIdentifier([1, 2, 840, 113549, 1, 1, 5]);
oidSignatureSHA256WithRSA = new asn1.ObjectIdentifier([1, 2, 840, 113549, 1, 1, 11]);
oidSignatureSHA384WithRSA = new asn1.ObjectIdentifier([1, 2, 840, 113549, 1, 1, 12]);
oidSignatureSHA512WithRSA = new asn1.ObjectIdentifier([1, 2, 840, 113549, 1, 1, 13]);
oidSignatureRSAPSS = new asn1.ObjectIdentifier([1, 2, 840, 113549, 1, 1, 10]);
oidSignatureDSAWithSHA1 = new asn1.ObjectIdentifier([1, 2, 840, 10040, 4, 3]);
oidSignatureDSAWithSHA256 = new asn1.ObjectIdentifier([2, 16, 840, 1, 101, 3, 4, 3, 2]);
oidSignatureECDSAWithSHA1 = new asn1.ObjectIdentifier([1, 2, 840, 10045, 4, 1]);
oidSignatureECDSAWithSHA256 = new asn1.ObjectIdentifier([1, 2, 840, 10045, 4, 3, 2]);
oidSignatureECDSAWithSHA384 = new asn1.ObjectIdentifier([1, 2, 840, 10045, 4, 3, 3]);
oidSignatureECDSAWithSHA512 = new asn1.ObjectIdentifier([1, 2, 840, 10045, 4, 3, 4]);
oidSHA256 = new asn1.ObjectIdentifier([2, 16, 840, 1, 101, 3, 4, 2, 1]);
oidSHA384 = new asn1.ObjectIdentifier([2, 16, 840, 1, 101, 3, 4, 2, 2]);
oidSHA512 = new asn1.ObjectIdentifier([2, 16, 840, 1, 101, 3, 4, 2, 3]);
oidMGF1 = new asn1.ObjectIdentifier([1, 2, 840, 113549, 1, 1, 8]);
oidISOSignatureSHA1WithRSA = new asn1.ObjectIdentifier([1, 3, 14, 3, 2, 29]);
signatureAlgorithmDetails = new sliceType$1([new structType.ptr(1, oidSignatureMD2WithRSA, 1, 0), new structType.ptr(2, oidSignatureMD5WithRSA, 1, 2), new structType.ptr(3, oidSignatureSHA1WithRSA, 1, 3), new structType.ptr(3, oidISOSignatureSHA1WithRSA, 1, 3), new structType.ptr(4, oidSignatureSHA256WithRSA, 1, 5), new structType.ptr(5, oidSignatureSHA384WithRSA, 1, 6), new structType.ptr(6, oidSignatureSHA512WithRSA, 1, 7), new structType.ptr(13, oidSignatureRSAPSS, 1, 5), new structType.ptr(14, oidSignatureRSAPSS, 1, 6), new structType.ptr(15, oidSignatureRSAPSS, 1, 7), new structType.ptr(7, oidSignatureDSAWithSHA1, 2, 3), new structType.ptr(8, oidSignatureDSAWithSHA256, 2, 5), new structType.ptr(9, oidSignatureECDSAWithSHA1, 3, 3), new structType.ptr(10, oidSignatureECDSAWithSHA256, 3, 5), new structType.ptr(11, oidSignatureECDSAWithSHA384, 3, 6), new structType.ptr(12, oidSignatureECDSAWithSHA512, 3, 7)]);
oidPublicKeyRSA = new asn1.ObjectIdentifier([1, 2, 840, 113549, 1, 1, 1]);
oidPublicKeyDSA = new asn1.ObjectIdentifier([1, 2, 840, 10040, 4, 1]);
oidPublicKeyECDSA = new asn1.ObjectIdentifier([1, 2, 840, 10045, 2, 1]);
oidNamedCurveP224 = new asn1.ObjectIdentifier([1, 3, 132, 0, 33]);
oidNamedCurveP256 = new asn1.ObjectIdentifier([1, 2, 840, 10045, 3, 1, 7]);
oidNamedCurveP384 = new asn1.ObjectIdentifier([1, 3, 132, 0, 34]);
oidNamedCurveP521 = new asn1.ObjectIdentifier([1, 3, 132, 0, 35]);
oidExtKeyUsageAny = new asn1.ObjectIdentifier([2, 5, 29, 37, 0]);
oidExtKeyUsageServerAuth = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 1]);
oidExtKeyUsageClientAuth = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 2]);
oidExtKeyUsageCodeSigning = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 3]);
oidExtKeyUsageEmailProtection = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 4]);
oidExtKeyUsageIPSECEndSystem = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 5]);
oidExtKeyUsageIPSECTunnel = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 6]);
oidExtKeyUsageIPSECUser = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 7]);
oidExtKeyUsageTimeStamping = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 8]);
oidExtKeyUsageOCSPSigning = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 9]);
oidExtKeyUsageMicrosoftServerGatedCrypto = new asn1.ObjectIdentifier([1, 3, 6, 1, 4, 1, 311, 10, 3, 3]);
oidExtKeyUsageNetscapeServerGatedCrypto = new asn1.ObjectIdentifier([2, 16, 840, 1, 113730, 4, 1]);
extKeyUsageOIDs = new sliceType$2([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)]);
$pkg.ErrUnsupportedAlgorithm = errors.New("x509: cannot verify signature: algorithm unimplemented");
entrustBrokenSPKI = new sliceType$3([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]);
asn1Null = new sliceType$3([5, 0]);
oidExtensionAuthorityKeyId = new sliceType$4([2, 5, 29, 35]);
oidExtensionAuthorityInfoAccess = new sliceType$4([1, 3, 6, 1, 5, 5, 7, 1, 1]);
oidAuthorityInfoAccessOcsp = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 48, 1]);
oidAuthorityInfoAccessIssuers = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 48, 2]);
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["vendor/golang_org/x/crypto/chacha20poly1305/internal/chacha20"] = (function() {
var $pkg = {}, $init, binary, sliceType, arrayType, arrayType$1, core, XORKeyStream;
binary = $packages["encoding/binary"];
sliceType = $sliceType($Uint8);
arrayType = $arrayType($Uint8, 64);
arrayType$1 = $arrayType($Uint8, 16);
core = function(out, in$1, k) {
var $ptr, _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;
j0 = 1634760805;
j1 = 857760878;
j2 = 2036477234;
j3 = 1797285236;
j4 = $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(k), 0, 4));
j5 = $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(k), 4, 8));
j6 = $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(k), 8, 12));
j7 = $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(k), 12, 16));
j8 = $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(k), 16, 20));
j9 = $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(k), 20, 24));
j10 = $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(k), 24, 28));
j11 = $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(k), 28, 32));
j12 = $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(in$1), 0, 4));
j13 = $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(in$1), 4, 8));
j14 = $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(in$1), 8, 12));
j15 = $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(in$1), 12, 16));
_tmp = j0;
_tmp$1 = j1;
_tmp$2 = j2;
_tmp$3 = j3;
_tmp$4 = j4;
_tmp$5 = j5;
_tmp$6 = j6;
_tmp$7 = j7;
x0 = _tmp;
x1 = _tmp$1;
x2 = _tmp$2;
x3 = _tmp$3;
x4 = _tmp$4;
x5 = _tmp$5;
x6 = _tmp$6;
x7 = _tmp$7;
_tmp$8 = j8;
_tmp$9 = j9;
_tmp$10 = j10;
_tmp$11 = j11;
_tmp$12 = j12;
_tmp$13 = j13;
_tmp$14 = j14;
_tmp$15 = j15;
x8 = _tmp$8;
x9 = _tmp$9;
x10 = _tmp$10;
x11 = _tmp$11;
x12 = _tmp$12;
x13 = _tmp$13;
x14 = _tmp$14;
x15 = _tmp$15;
i = 0;
while (true) {
if (!(i < 20)) { break; }
x0 = x0 + (x4) >>> 0;
x12 = (x12 ^ (x0)) >>> 0;
x12 = (((x12 << 16 >>> 0)) | ((x12 >>> 16 >>> 0))) >>> 0;
x8 = x8 + (x12) >>> 0;
x4 = (x4 ^ (x8)) >>> 0;
x4 = (((x4 << 12 >>> 0)) | ((x4 >>> 20 >>> 0))) >>> 0;
x0 = x0 + (x4) >>> 0;
x12 = (x12 ^ (x0)) >>> 0;
x12 = (((x12 << 8 >>> 0)) | ((x12 >>> 24 >>> 0))) >>> 0;
x8 = x8 + (x12) >>> 0;
x4 = (x4 ^ (x8)) >>> 0;
x4 = (((x4 << 7 >>> 0)) | ((x4 >>> 25 >>> 0))) >>> 0;
x1 = x1 + (x5) >>> 0;
x13 = (x13 ^ (x1)) >>> 0;
x13 = (((x13 << 16 >>> 0)) | ((x13 >>> 16 >>> 0))) >>> 0;
x9 = x9 + (x13) >>> 0;
x5 = (x5 ^ (x9)) >>> 0;
x5 = (((x5 << 12 >>> 0)) | ((x5 >>> 20 >>> 0))) >>> 0;
x1 = x1 + (x5) >>> 0;
x13 = (x13 ^ (x1)) >>> 0;
x13 = (((x13 << 8 >>> 0)) | ((x13 >>> 24 >>> 0))) >>> 0;
x9 = x9 + (x13) >>> 0;
x5 = (x5 ^ (x9)) >>> 0;
x5 = (((x5 << 7 >>> 0)) | ((x5 >>> 25 >>> 0))) >>> 0;
x2 = x2 + (x6) >>> 0;
x14 = (x14 ^ (x2)) >>> 0;
x14 = (((x14 << 16 >>> 0)) | ((x14 >>> 16 >>> 0))) >>> 0;
x10 = x10 + (x14) >>> 0;
x6 = (x6 ^ (x10)) >>> 0;
x6 = (((x6 << 12 >>> 0)) | ((x6 >>> 20 >>> 0))) >>> 0;
x2 = x2 + (x6) >>> 0;
x14 = (x14 ^ (x2)) >>> 0;
x14 = (((x14 << 8 >>> 0)) | ((x14 >>> 24 >>> 0))) >>> 0;
x10 = x10 + (x14) >>> 0;
x6 = (x6 ^ (x10)) >>> 0;
x6 = (((x6 << 7 >>> 0)) | ((x6 >>> 25 >>> 0))) >>> 0;
x3 = x3 + (x7) >>> 0;
x15 = (x15 ^ (x3)) >>> 0;
x15 = (((x15 << 16 >>> 0)) | ((x15 >>> 16 >>> 0))) >>> 0;
x11 = x11 + (x15) >>> 0;
x7 = (x7 ^ (x11)) >>> 0;
x7 = (((x7 << 12 >>> 0)) | ((x7 >>> 20 >>> 0))) >>> 0;
x3 = x3 + (x7) >>> 0;
x15 = (x15 ^ (x3)) >>> 0;
x15 = (((x15 << 8 >>> 0)) | ((x15 >>> 24 >>> 0))) >>> 0;
x11 = x11 + (x15) >>> 0;
x7 = (x7 ^ (x11)) >>> 0;
x7 = (((x7 << 7 >>> 0)) | ((x7 >>> 25 >>> 0))) >>> 0;
x0 = x0 + (x5) >>> 0;
x15 = (x15 ^ (x0)) >>> 0;
x15 = (((x15 << 16 >>> 0)) | ((x15 >>> 16 >>> 0))) >>> 0;
x10 = x10 + (x15) >>> 0;
x5 = (x5 ^ (x10)) >>> 0;
x5 = (((x5 << 12 >>> 0)) | ((x5 >>> 20 >>> 0))) >>> 0;
x0 = x0 + (x5) >>> 0;
x15 = (x15 ^ (x0)) >>> 0;
x15 = (((x15 << 8 >>> 0)) | ((x15 >>> 24 >>> 0))) >>> 0;
x10 = x10 + (x15) >>> 0;
x5 = (x5 ^ (x10)) >>> 0;
x5 = (((x5 << 7 >>> 0)) | ((x5 >>> 25 >>> 0))) >>> 0;
x1 = x1 + (x6) >>> 0;
x12 = (x12 ^ (x1)) >>> 0;
x12 = (((x12 << 16 >>> 0)) | ((x12 >>> 16 >>> 0))) >>> 0;
x11 = x11 + (x12) >>> 0;
x6 = (x6 ^ (x11)) >>> 0;
x6 = (((x6 << 12 >>> 0)) | ((x6 >>> 20 >>> 0))) >>> 0;
x1 = x1 + (x6) >>> 0;
x12 = (x12 ^ (x1)) >>> 0;
x12 = (((x12 << 8 >>> 0)) | ((x12 >>> 24 >>> 0))) >>> 0;
x11 = x11 + (x12) >>> 0;
x6 = (x6 ^ (x11)) >>> 0;
x6 = (((x6 << 7 >>> 0)) | ((x6 >>> 25 >>> 0))) >>> 0;
x2 = x2 + (x7) >>> 0;
x13 = (x13 ^ (x2)) >>> 0;
x13 = (((x13 << 16 >>> 0)) | ((x13 >>> 16 >>> 0))) >>> 0;
x8 = x8 + (x13) >>> 0;
x7 = (x7 ^ (x8)) >>> 0;
x7 = (((x7 << 12 >>> 0)) | ((x7 >>> 20 >>> 0))) >>> 0;
x2 = x2 + (x7) >>> 0;
x13 = (x13 ^ (x2)) >>> 0;
x13 = (((x13 << 8 >>> 0)) | ((x13 >>> 24 >>> 0))) >>> 0;
x8 = x8 + (x13) >>> 0;
x7 = (x7 ^ (x8)) >>> 0;
x7 = (((x7 << 7 >>> 0)) | ((x7 >>> 25 >>> 0))) >>> 0;
x3 = x3 + (x4) >>> 0;
x14 = (x14 ^ (x3)) >>> 0;
x14 = (((x14 << 16 >>> 0)) | ((x14 >>> 16 >>> 0))) >>> 0;
x9 = x9 + (x14) >>> 0;
x4 = (x4 ^ (x9)) >>> 0;
x4 = (((x4 << 12 >>> 0)) | ((x4 >>> 20 >>> 0))) >>> 0;
x3 = x3 + (x4) >>> 0;
x14 = (x14 ^ (x3)) >>> 0;
x14 = (((x14 << 8 >>> 0)) | ((x14 >>> 24 >>> 0))) >>> 0;
x9 = x9 + (x14) >>> 0;
x4 = (x4 ^ (x9)) >>> 0;
x4 = (((x4 << 7 >>> 0)) | ((x4 >>> 25 >>> 0))) >>> 0;
i = i + (2) >> 0;
}
x0 = x0 + (j0) >>> 0;
x1 = x1 + (j1) >>> 0;
x2 = x2 + (j2) >>> 0;
x3 = x3 + (j3) >>> 0;
x4 = x4 + (j4) >>> 0;
x5 = x5 + (j5) >>> 0;
x6 = x6 + (j6) >>> 0;
x7 = x7 + (j7) >>> 0;
x8 = x8 + (j8) >>> 0;
x9 = x9 + (j9) >>> 0;
x10 = x10 + (j10) >>> 0;
x11 = x11 + (j11) >>> 0;
x12 = x12 + (j12) >>> 0;
x13 = x13 + (j13) >>> 0;
x14 = x14 + (j14) >>> 0;
x15 = x15 + (j15) >>> 0;
$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 0, 4), x0);
$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 4, 8), x1);
$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 8, 12), x2);
$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 12, 16), x3);
$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 16, 20), x4);
$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 20, 24), x5);
$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 24, 28), x6);
$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 28, 32), x7);
$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 32, 36), x8);
$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 36, 40), x9);
$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 40, 44), x10);
$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 44, 48), x11);
$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 48, 52), x12);
$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 52, 56), x13);
$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 56, 60), x14);
$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 60, 64), x15);
};
XORKeyStream = function(out, in$1, counter, key) {
var $ptr, _i, _i$1, _ref, _ref$1, block, counter, counterCopy, i, i$1, i$2, in$1, key, out, u, v, x, y;
block = arrayType.zero();
counterCopy = arrayType$1.zero();
$copySlice(new sliceType(counterCopy), new sliceType(counter));
while (true) {
if (!(in$1.$length >= 64)) { break; }
core(block, counterCopy, key);
_ref = block;
_i = 0;
while (true) {
if (!(_i < 64)) { break; }
i = _i;
x = ((_i < 0 || _i >= _ref.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref[_i]);
((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));
_i++;
}
u = 1;
i$1 = 0;
while (true) {
if (!(i$1 < 4)) { break; }
u = u + (((((i$1 < 0 || i$1 >= counterCopy.length) ? ($throwRuntimeError("index out of range"), undefined) : counterCopy[i$1]) >>> 0))) >>> 0;
((i$1 < 0 || i$1 >= counterCopy.length) ? ($throwRuntimeError("index out of range"), undefined) : counterCopy[i$1] = ((u << 24 >>> 24)));
u = (y = (8), y < 32 ? (u >>> y) : 0) >>> 0;
i$1 = i$1 + (1) >> 0;
}
in$1 = $subslice(in$1, 64);
out = $subslice(out, 64);
}
if (in$1.$length > 0) {
core(block, counterCopy, key);
_ref$1 = in$1;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
i$2 = _i$1;
v = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
((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));
_i$1++;
}
}
};
$pkg.XORKeyStream = XORKeyStream;
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = binary.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["vendor/golang_org/x/crypto/poly1305"] = (function() {
var $pkg = {}, $init, subtle, math, arrayType, sliceType, Verify, Sum;
subtle = $packages["crypto/subtle"];
math = $packages["math"];
arrayType = $arrayType($Uint8, 16);
sliceType = $sliceType($Uint8);
Verify = function(mac, m, key) {
var $ptr, key, m, mac, tmp;
tmp = arrayType.zero();
Sum(tmp, m, key);
return subtle.ConstantTimeCompare(new sliceType(tmp), new sliceType(mac)) === 1;
};
$pkg.Verify = Verify;
Sum = function(out, m, key) {
var $ptr, bits32, d0, d1, d2, d3, f, f0, f1, f2, f3, f4, g, g0, g1, g2, g3, g4, h0, h1, h2, h3, h4, h5, h6, h7, key, l, lbelow10, lbelow11, lbelow12, lbelow13, lbelow14, lbelow15, lbelow2, lbelow3, lbelow4, lbelow5, lbelow6, lbelow7, lbelow8, lbelow9, m, m0, m00, m01, m02, m03, m1, m10, m11, m12, m13, m2, m20, m21, m22, m23, m3, m30, m31, m32, m33, out, p, r, r0, r00, r01, r02, r03, r0high, r0high_stack, r0highx0, r0highx2, r0highx4, r0highx6, r0low, r0low_stack, r0lowx0, r0lowx2, r0lowx4, r0lowx6, r1, r10, r11, r12, r13, r1high, r1high_stack, r1highx0, r1highx2, r1highx4, r1low, r1low_stack, r1lowx0, r1lowx2, r1lowx4, r2, r20, r21, r22, r23, r2high, r2high_stack, r2highx0, r2highx2, r2low, r2low_stack, r2lowx0, r2lowx2, r3, r30, r31, r32, r33, r3high, r3high_stack, r3highx0, r3low, r3low_stack, r3lowx0, s, s00, s01, s02, s03, s10, s11, s12, s13, s20, s21, s22, s23, s30, s31, s32, s33, sr1high, sr1high_stack, sr1highx6, sr1low, sr1low_stack, sr1lowx6, sr2high, sr2high_stack, sr2highx4, sr2highx6, sr2low, sr2low_stack, sr2lowx4, sr2lowx6, sr3high, sr3high_stack, sr3highx2, sr3highx4, sr3highx6, sr3low, sr3low_stack, sr3lowx2, sr3lowx4, sr3lowx6, 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$128, x$129, x$13, x$130, x$131, x$132, x$133, x$134, x$135, x$136, x$137, x$138, x$139, x$14, x$140, x$141, x$142, x$143, x$144, x$145, x$146, x$147, x$148, x$149, x$15, x$150, x$151, x$152, x$153, x$154, x$155, x$156, x$157, x$158, x$159, x$16, x$160, x$161, x$162, x$163, 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, x0, x1, x2, x3, x4, x5, x6, x7, y, y$1, y$10, y$11, y$12, y$13, y$14, y$15, y$16, y$17, y$18, y$19, y$2, y$20, y$21, y$22, y$23, y$24, y$25, y$26, y$27, y$28, y$29, y$3, y$30, y$31, y$32, y$33, y$34, y$35, y$36, y$37, y$38, y$39, y$4, y$40, y$41, y$42, y$43, y$44, y$45, y$46, y$47, y$48, y$49, y$5, y$50, y$51, y$52, y$53, y$54, y$55, y$56, y$6, y$7, y$8, y$9, y0, y1, y2, y3, y4, y5, y6, y7, z0, z1, z2, z3, $s;
/* */ $s = 0; s: while (true) { switch ($s) { case 0:
r = key;
s = $subslice(new sliceType(key), 16);
y7 = 0;
y6 = 0;
y1 = 0;
y0 = 0;
y5 = 0;
y4 = 0;
x7 = 0;
x6 = 0;
x1 = 0;
x0 = 0;
y3 = 0;
y2 = 0;
x5 = 0;
r3lowx0 = 0;
x4 = 0;
r0lowx6 = 0;
x3 = 0;
r3highx0 = 0;
x2 = 0;
r0highx6 = 0;
r0lowx0 = 0;
sr1lowx6 = 0;
r0highx0 = 0;
sr1highx6 = 0;
sr3low = 0;
r1lowx0 = 0;
sr2lowx6 = 0;
r1highx0 = 0;
sr2highx6 = 0;
r2lowx0 = 0;
sr3lowx6 = 0;
r2highx0 = 0;
sr3highx6 = 0;
r1highx4 = 0;
r1lowx4 = 0;
r0highx4 = 0;
r0lowx4 = 0;
sr3highx4 = 0;
sr3lowx4 = 0;
sr2highx4 = 0;
sr2lowx4 = 0;
r0lowx2 = 0;
r0highx2 = 0;
r1lowx2 = 0;
r1highx2 = 0;
r2lowx2 = 0;
r2highx2 = 0;
sr3lowx2 = 0;
sr3highx2 = 0;
z0 = 0;
z1 = 0;
z2 = 0;
z3 = 0;
m0 = new $Int64(0, 0);
m1 = new $Int64(0, 0);
m2 = new $Int64(0, 0);
m3 = new $Int64(0, 0);
m00 = 0;
m01 = 0;
m02 = 0;
m03 = 0;
m10 = 0;
m11 = 0;
m12 = 0;
m13 = 0;
m20 = 0;
m21 = 0;
m22 = 0;
m23 = 0;
m30 = 0;
m31 = 0;
m32 = 0;
m33 = new $Uint64(0, 0);
lbelow2 = 0;
lbelow3 = 0;
lbelow4 = 0;
lbelow5 = 0;
lbelow6 = 0;
lbelow7 = 0;
lbelow8 = 0;
lbelow9 = 0;
lbelow10 = 0;
lbelow11 = 0;
lbelow12 = 0;
lbelow13 = 0;
lbelow14 = 0;
lbelow15 = 0;
s00 = 0;
s01 = 0;
s02 = 0;
s03 = 0;
s10 = 0;
s11 = 0;
s12 = 0;
s13 = 0;
s20 = 0;
s21 = 0;
s22 = 0;
s23 = 0;
s30 = 0;
s31 = 0;
s32 = 0;
s33 = 0;
bits32 = new $Uint64(0, 0);
f = new $Uint64(0, 0);
f0 = new $Uint64(0, 0);
f1 = new $Uint64(0, 0);
f2 = new $Uint64(0, 0);
f3 = new $Uint64(0, 0);
f4 = new $Uint64(0, 0);
g = new $Uint64(0, 0);
g0 = new $Uint64(0, 0);
g1 = new $Uint64(0, 0);
g2 = new $Uint64(0, 0);
g3 = new $Uint64(0, 0);
g4 = new $Uint64(0, 0);
p = 0;
l = ((m.$length >> 0));
r00 = (((r.nilCheck, r[0]) >>> 0));
r01 = (((r.nilCheck, r[1]) >>> 0));
r02 = (((r.nilCheck, r[2]) >>> 0));
r0 = new $Int64(0, 2151);
r03 = (((r.nilCheck, r[3]) >>> 0));
r03 = (r03 & (15)) >>> 0;
r0 = $shiftLeft64(r0, (51));
r10 = (((r.nilCheck, r[4]) >>> 0));
r10 = (r10 & (252)) >>> 0;
r01 = (y = (8), y < 32 ? (r01 << y) : 0) >>> 0;
r0 = (x = (new $Int64(0, r00)), new $Int64(r0.$high + x.$high, r0.$low + x.$low));
r11 = (((r.nilCheck, r[5]) >>> 0));
r02 = (y$1 = (16), y$1 < 32 ? (r02 << y$1) : 0) >>> 0;
r0 = (x$1 = (new $Int64(0, r01)), new $Int64(r0.$high + x$1.$high, r0.$low + x$1.$low));
r12 = (((r.nilCheck, r[6]) >>> 0));
r03 = (y$2 = (24), y$2 < 32 ? (r03 << y$2) : 0) >>> 0;
r0 = (x$2 = (new $Int64(0, r02)), new $Int64(r0.$high + x$2.$high, r0.$low + x$2.$low));
r13 = (((r.nilCheck, r[7]) >>> 0));
r13 = (r13 & (15)) >>> 0;
r1 = new $Int64(0, 2215);
r0 = (x$3 = (new $Int64(0, r03)), new $Int64(r0.$high + x$3.$high, r0.$low + x$3.$low));
d0 = r0;
r1 = $shiftLeft64(r1, (51));
r2 = new $Int64(0, 2279);
r20 = (((r.nilCheck, r[8]) >>> 0));
r20 = (r20 & (252)) >>> 0;
r11 = (y$3 = (8), y$3 < 32 ? (r11 << y$3) : 0) >>> 0;
r1 = (x$4 = (new $Int64(0, r10)), new $Int64(r1.$high + x$4.$high, r1.$low + x$4.$low));
r21 = (((r.nilCheck, r[9]) >>> 0));
r12 = (y$4 = (16), y$4 < 32 ? (r12 << y$4) : 0) >>> 0;
r1 = (x$5 = (new $Int64(0, r11)), new $Int64(r1.$high + x$5.$high, r1.$low + x$5.$low));
r22 = (((r.nilCheck, r[10]) >>> 0));
r13 = (y$5 = (24), y$5 < 32 ? (r13 << y$5) : 0) >>> 0;
r1 = (x$6 = (new $Int64(0, r12)), new $Int64(r1.$high + x$6.$high, r1.$low + x$6.$low));
r23 = (((r.nilCheck, r[11]) >>> 0));
r23 = (r23 & (15)) >>> 0;
r2 = $shiftLeft64(r2, (51));
r1 = (x$7 = (new $Int64(0, r13)), new $Int64(r1.$high + x$7.$high, r1.$low + x$7.$low));
d1 = r1;
r21 = (y$6 = (8), y$6 < 32 ? (r21 << y$6) : 0) >>> 0;
r2 = (x$8 = (new $Int64(0, r20)), new $Int64(r2.$high + x$8.$high, r2.$low + x$8.$low));
r30 = (((r.nilCheck, r[12]) >>> 0));
r30 = (r30 & (252)) >>> 0;
r22 = (y$7 = (16), y$7 < 32 ? (r22 << y$7) : 0) >>> 0;
r2 = (x$9 = (new $Int64(0, r21)), new $Int64(r2.$high + x$9.$high, r2.$low + x$9.$low));
r31 = (((r.nilCheck, r[13]) >>> 0));
r23 = (y$8 = (24), y$8 < 32 ? (r23 << y$8) : 0) >>> 0;
r2 = (x$10 = (new $Int64(0, r22)), new $Int64(r2.$high + x$10.$high, r2.$low + x$10.$low));
r32 = (((r.nilCheck, r[14]) >>> 0));
r2 = (x$11 = (new $Int64(0, r23)), new $Int64(r2.$high + x$11.$high, r2.$low + x$11.$low));
r3 = new $Int64(0, 2343);
d2 = r2;
r3 = $shiftLeft64(r3, (51));
r33 = (((r.nilCheck, r[15]) >>> 0));
r33 = (r33 & (15)) >>> 0;
r31 = (y$9 = (8), y$9 < 32 ? (r31 << y$9) : 0) >>> 0;
r3 = (x$12 = (new $Int64(0, r30)), new $Int64(r3.$high + x$12.$high, r3.$low + x$12.$low));
r32 = (y$10 = (16), y$10 < 32 ? (r32 << y$10) : 0) >>> 0;
r3 = (x$13 = (new $Int64(0, r31)), new $Int64(r3.$high + x$13.$high, r3.$low + x$13.$low));
r33 = (y$11 = (24), y$11 < 32 ? (r33 << y$11) : 0) >>> 0;
r3 = (x$14 = (new $Int64(0, r32)), new $Int64(r3.$high + x$14.$high, r3.$low + x$14.$low));
r3 = (x$15 = (new $Int64(0, r33)), new $Int64(r3.$high + x$15.$high, r3.$low + x$15.$low));
h0 = 0;
d3 = r3;
h1 = 0;
h2 = 0;
h3 = 0;
h4 = 0;
r0low = math.Float64frombits((new $Uint64(d0.$high, d0.$low)));
h5 = 0;
r1low = math.Float64frombits((new $Uint64(d1.$high, d1.$low)));
h6 = 0;
r2low = math.Float64frombits((new $Uint64(d2.$high, d2.$low)));
h7 = 0;
r0low = r0low - (6.755399441055744e+15);
r1low = r1low - (2.90142196707511e+25);
r2low = r2low - (1.2461512460483586e+35);
r0high = r0low + 1.770887431076117e+21;
r3low = math.Float64frombits((new $Uint64(d3.$high, d3.$low)));
r1high = r1low + 7.605903601369376e+30;
sr1low = 3.6734198463196485e-39 * r1low;
r2high = r2low + 3.2667107224410092e+40;
sr2low = 3.6734198463196485e-39 * r2low;
r0high = r0high - (1.770887431076117e+21);
r0high_stack = r0high;
r3low = r3low - (5.3521788476473496e+44);
r1high = r1high - (7.605903601369376e+30);
r1high_stack = r1high;
sr1high = sr1low + 5.587935447692871e-09;
r0low = r0low - (r0high);
r2high = r2high - (3.2667107224410092e+40);
sr3low = 3.6734198463196485e-39 * r3low;
sr2high = sr2low + 24;
r1low = r1low - (r1high);
r1low_stack = r1low;
sr1high = sr1high - (5.587935447692871e-09);
sr1high_stack = sr1high;
r2low = r2low - (r2high);
r2low_stack = r2low;
sr2high = sr2high - (24);
sr2high_stack = sr2high;
r3high = r3low + 3.507603929594167e+49;
r0low_stack = r0low;
sr1low = sr1low - (sr1high);
sr1low_stack = sr1low;
sr3high = sr3low + 1.03079215104e+11;
r2high_stack = r2high;
sr2low = sr2low - (sr2high);
sr2low_stack = sr2low;
r3high = r3high - (3.507603929594167e+49);
r3high_stack = r3high;
sr3high = sr3high - (1.03079215104e+11);
sr3high_stack = sr3high;
r3low = r3low - (r3high);
r3low_stack = r3low;
sr3low = sr3low - (sr3high);
sr3low_stack = sr3low;
/* */ if (l < 16) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (l < 16) { */ case 1:
/* goto addatmost15bytes */ $s = 3; continue;
/* } */ case 2:
m00 = (((x$16 = p + 0 >> 0, ((x$16 < 0 || x$16 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$16])) >>> 0));
m0 = new $Int64(0, 2151);
m0 = $shiftLeft64(m0, (51));
m1 = new $Int64(0, 2215);
m01 = (((x$17 = p + 1 >> 0, ((x$17 < 0 || x$17 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$17])) >>> 0));
m1 = $shiftLeft64(m1, (51));
m2 = new $Int64(0, 2279);
m02 = (((x$18 = p + 2 >> 0, ((x$18 < 0 || x$18 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$18])) >>> 0));
m2 = $shiftLeft64(m2, (51));
m3 = new $Int64(0, 2343);
m03 = (((x$19 = p + 3 >> 0, ((x$19 < 0 || x$19 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$19])) >>> 0));
m10 = (((x$20 = p + 4 >> 0, ((x$20 < 0 || x$20 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$20])) >>> 0));
m01 = (y$12 = (8), y$12 < 32 ? (m01 << y$12) : 0) >>> 0;
m0 = (x$21 = (new $Int64(0, m00)), new $Int64(m0.$high + x$21.$high, m0.$low + x$21.$low));
m11 = (((x$22 = p + 5 >> 0, ((x$22 < 0 || x$22 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$22])) >>> 0));
m02 = (y$13 = (16), y$13 < 32 ? (m02 << y$13) : 0) >>> 0;
m0 = (x$23 = (new $Int64(0, m01)), new $Int64(m0.$high + x$23.$high, m0.$low + x$23.$low));
m12 = (((x$24 = p + 6 >> 0, ((x$24 < 0 || x$24 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$24])) >>> 0));
m03 = (y$14 = (24), y$14 < 32 ? (m03 << y$14) : 0) >>> 0;
m0 = (x$25 = (new $Int64(0, m02)), new $Int64(m0.$high + x$25.$high, m0.$low + x$25.$low));
m13 = (((x$26 = p + 7 >> 0, ((x$26 < 0 || x$26 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$26])) >>> 0));
m3 = $shiftLeft64(m3, (51));
m0 = (x$27 = (new $Int64(0, m03)), new $Int64(m0.$high + x$27.$high, m0.$low + x$27.$low));
m20 = (((x$28 = p + 8 >> 0, ((x$28 < 0 || x$28 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$28])) >>> 0));
m11 = (y$15 = (8), y$15 < 32 ? (m11 << y$15) : 0) >>> 0;
m1 = (x$29 = (new $Int64(0, m10)), new $Int64(m1.$high + x$29.$high, m1.$low + x$29.$low));
m21 = (((x$30 = p + 9 >> 0, ((x$30 < 0 || x$30 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$30])) >>> 0));
m12 = (y$16 = (16), y$16 < 32 ? (m12 << y$16) : 0) >>> 0;
m1 = (x$31 = (new $Int64(0, m11)), new $Int64(m1.$high + x$31.$high, m1.$low + x$31.$low));
m22 = (((x$32 = p + 10 >> 0, ((x$32 < 0 || x$32 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$32])) >>> 0));
m13 = (y$17 = (24), y$17 < 32 ? (m13 << y$17) : 0) >>> 0;
m1 = (x$33 = (new $Int64(0, m12)), new $Int64(m1.$high + x$33.$high, m1.$low + x$33.$low));
m23 = (((x$34 = p + 11 >> 0, ((x$34 < 0 || x$34 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$34])) >>> 0));
m1 = (x$35 = (new $Int64(0, m13)), new $Int64(m1.$high + x$35.$high, m1.$low + x$35.$low));
m30 = (((x$36 = p + 12 >> 0, ((x$36 < 0 || x$36 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$36])) >>> 0));
m21 = (y$18 = (8), y$18 < 32 ? (m21 << y$18) : 0) >>> 0;
m2 = (x$37 = (new $Int64(0, m20)), new $Int64(m2.$high + x$37.$high, m2.$low + x$37.$low));
m31 = (((x$38 = p + 13 >> 0, ((x$38 < 0 || x$38 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$38])) >>> 0));
m22 = (y$19 = (16), y$19 < 32 ? (m22 << y$19) : 0) >>> 0;
m2 = (x$39 = (new $Int64(0, m21)), new $Int64(m2.$high + x$39.$high, m2.$low + x$39.$low));
m32 = (((x$40 = p + 14 >> 0, ((x$40 < 0 || x$40 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$40])) >>> 0));
m23 = (y$20 = (24), y$20 < 32 ? (m23 << y$20) : 0) >>> 0;
m2 = (x$41 = (new $Int64(0, m22)), new $Int64(m2.$high + x$41.$high, m2.$low + x$41.$low));
m33 = (new $Uint64(0, (x$42 = p + 15 >> 0, ((x$42 < 0 || x$42 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$42]))));
m2 = (x$43 = (new $Int64(0, m23)), new $Int64(m2.$high + x$43.$high, m2.$low + x$43.$low));
d0 = m0;
m31 = (y$21 = (8), y$21 < 32 ? (m31 << y$21) : 0) >>> 0;
m3 = (x$44 = (new $Int64(0, m30)), new $Int64(m3.$high + x$44.$high, m3.$low + x$44.$low));
d1 = m1;
m32 = (y$22 = (16), y$22 < 32 ? (m32 << y$22) : 0) >>> 0;
m3 = (x$45 = (new $Int64(0, m31)), new $Int64(m3.$high + x$45.$high, m3.$low + x$45.$low));
d2 = m2;
m33 = (x$46 = new $Uint64(0, 256), new $Uint64(m33.$high + x$46.$high, m33.$low + x$46.$low));
m33 = $shiftLeft64(m33, (24));
m3 = (x$47 = (new $Int64(0, m32)), new $Int64(m3.$high + x$47.$high, m3.$low + x$47.$low));
m3 = (x$48 = (new $Int64(m33.$high, m33.$low)), new $Int64(m3.$high + x$48.$high, m3.$low + x$48.$low));
d3 = m3;
p = p + (16) >> 0;
l = l - (16) >> 0;
z0 = math.Float64frombits((new $Uint64(d0.$high, d0.$low)));
z1 = math.Float64frombits((new $Uint64(d1.$high, d1.$low)));
z2 = math.Float64frombits((new $Uint64(d2.$high, d2.$low)));
z3 = math.Float64frombits((new $Uint64(d3.$high, d3.$low)));
z0 = z0 - (6.755399441055744e+15);
z1 = z1 - (2.90142196707511e+25);
z2 = z2 - (1.2461512460483586e+35);
z3 = z3 - (5.3521788476473496e+44);
h0 = h0 + (z0);
h1 = h1 + (z1);
h3 = h3 + (z2);
h5 = h5 + (z3);
/* */ if (l < 16) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (l < 16) { */ case 4:
/* goto multiplyaddatmost15bytes */ $s = 6; continue;
/* } */ case 5:
/* multiplyaddatleast16bytes: */ case 7:
m2 = new $Int64(0, 2279);
m20 = (((x$49 = p + 8 >> 0, ((x$49 < 0 || x$49 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$49])) >>> 0));
y7 = h7 + 9.194973245195333e+54;
m2 = $shiftLeft64(m2, (51));
m3 = new $Int64(0, 2343);
m21 = (((x$50 = p + 9 >> 0, ((x$50 < 0 || x$50 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$50])) >>> 0));
y6 = h6 + 9.194973245195333e+54;
m3 = $shiftLeft64(m3, (51));
m0 = new $Int64(0, 2151);
m22 = (((x$51 = p + 10 >> 0, ((x$51 < 0 || x$51 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$51])) >>> 0));
y1 = h1 + 2.90142196707511e+25;
m0 = $shiftLeft64(m0, (51));
m1 = new $Int64(0, 2215);
m23 = (((x$52 = p + 11 >> 0, ((x$52 < 0 || x$52 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$52])) >>> 0));
y0 = h0 + 2.90142196707511e+25;
m1 = $shiftLeft64(m1, (51));
m30 = (((x$53 = p + 12 >> 0, ((x$53 < 0 || x$53 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$53])) >>> 0));
y7 = y7 - (9.194973245195333e+54);
m21 = (y$23 = (8), y$23 < 32 ? (m21 << y$23) : 0) >>> 0;
m2 = (x$54 = (new $Int64(0, m20)), new $Int64(m2.$high + x$54.$high, m2.$low + x$54.$low));
m31 = (((x$55 = p + 13 >> 0, ((x$55 < 0 || x$55 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$55])) >>> 0));
y6 = y6 - (9.194973245195333e+54);
m22 = (y$24 = (16), y$24 < 32 ? (m22 << y$24) : 0) >>> 0;
m2 = (x$56 = (new $Int64(0, m21)), new $Int64(m2.$high + x$56.$high, m2.$low + x$56.$low));
m32 = (((x$57 = p + 14 >> 0, ((x$57 < 0 || x$57 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$57])) >>> 0));
y1 = y1 - (2.90142196707511e+25);
m23 = (y$25 = (24), y$25 < 32 ? (m23 << y$25) : 0) >>> 0;
m2 = (x$58 = (new $Int64(0, m22)), new $Int64(m2.$high + x$58.$high, m2.$low + x$58.$low));
m33 = (new $Uint64(0, (x$59 = p + 15 >> 0, ((x$59 < 0 || x$59 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$59]))));
y0 = y0 - (2.90142196707511e+25);
m2 = (x$60 = (new $Int64(0, m23)), new $Int64(m2.$high + x$60.$high, m2.$low + x$60.$low));
m00 = (((x$61 = p + 0 >> 0, ((x$61 < 0 || x$61 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$61])) >>> 0));
y5 = h5 + 5.3521788476473496e+44;
m31 = (y$26 = (8), y$26 < 32 ? (m31 << y$26) : 0) >>> 0;
m3 = (x$62 = (new $Int64(0, m30)), new $Int64(m3.$high + x$62.$high, m3.$low + x$62.$low));
m01 = (((x$63 = p + 1 >> 0, ((x$63 < 0 || x$63 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$63])) >>> 0));
y4 = h4 + 5.3521788476473496e+44;
m32 = (y$27 = (16), y$27 < 32 ? (m32 << y$27) : 0) >>> 0;
m02 = (((x$64 = p + 2 >> 0, ((x$64 < 0 || x$64 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$64])) >>> 0));
x7 = h7 - y7;
y7 = y7 * (3.6734198463196485e-39);
m33 = (x$65 = new $Uint64(0, 256), new $Uint64(m33.$high + x$65.$high, m33.$low + x$65.$low));
m03 = (((x$66 = p + 3 >> 0, ((x$66 < 0 || x$66 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$66])) >>> 0));
x6 = h6 - y6;
y6 = y6 * (3.6734198463196485e-39);
m33 = $shiftLeft64(m33, (24));
m3 = (x$67 = (new $Int64(0, m31)), new $Int64(m3.$high + x$67.$high, m3.$low + x$67.$low));
m10 = (((x$68 = p + 4 >> 0, ((x$68 < 0 || x$68 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$68])) >>> 0));
x1 = h1 - y1;
m01 = (y$28 = (8), y$28 < 32 ? (m01 << y$28) : 0) >>> 0;
m3 = (x$69 = (new $Int64(0, m32)), new $Int64(m3.$high + x$69.$high, m3.$low + x$69.$low));
m11 = (((x$70 = p + 5 >> 0, ((x$70 < 0 || x$70 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$70])) >>> 0));
x0 = h0 - y0;
m3 = (x$71 = (new $Int64(m33.$high, m33.$low)), new $Int64(m3.$high + x$71.$high, m3.$low + x$71.$low));
m0 = (x$72 = (new $Int64(0, m00)), new $Int64(m0.$high + x$72.$high, m0.$low + x$72.$low));
m12 = (((x$73 = p + 6 >> 0, ((x$73 < 0 || x$73 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$73])) >>> 0));
y5 = y5 - (5.3521788476473496e+44);
m02 = (y$29 = (16), y$29 < 32 ? (m02 << y$29) : 0) >>> 0;
m0 = (x$74 = (new $Int64(0, m01)), new $Int64(m0.$high + x$74.$high, m0.$low + x$74.$low));
m13 = (((x$75 = p + 7 >> 0, ((x$75 < 0 || x$75 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$75])) >>> 0));
y4 = y4 - (5.3521788476473496e+44);
m03 = (y$30 = (24), y$30 < 32 ? (m03 << y$30) : 0) >>> 0;
m0 = (x$76 = (new $Int64(0, m02)), new $Int64(m0.$high + x$76.$high, m0.$low + x$76.$low));
d2 = m2;
x1 = x1 + (y7);
m0 = (x$77 = (new $Int64(0, m03)), new $Int64(m0.$high + x$77.$high, m0.$low + x$77.$low));
d3 = m3;
x0 = x0 + (y6);
m11 = (y$31 = (8), y$31 < 32 ? (m11 << y$31) : 0) >>> 0;
m1 = (x$78 = (new $Int64(0, m10)), new $Int64(m1.$high + x$78.$high, m1.$low + x$78.$low));
d0 = m0;
x7 = x7 + (y5);
m12 = (y$32 = (16), y$32 < 32 ? (m12 << y$32) : 0) >>> 0;
m1 = (x$79 = (new $Int64(0, m11)), new $Int64(m1.$high + x$79.$high, m1.$low + x$79.$low));
x6 = x6 + (y4);
m13 = (y$33 = (24), y$33 < 32 ? (m13 << y$33) : 0) >>> 0;
m1 = (x$80 = (new $Int64(0, m12)), new $Int64(m1.$high + x$80.$high, m1.$low + x$80.$low));
y3 = h3 + 1.2461512460483586e+35;
m1 = (x$81 = (new $Int64(0, m13)), new $Int64(m1.$high + x$81.$high, m1.$low + x$81.$low));
d1 = m1;
y2 = h2 + 1.2461512460483586e+35;
x0 = x0 + (x1);
x6 = x6 + (x7);
y3 = y3 - (1.2461512460483586e+35);
r3low = r3low_stack;
y2 = y2 - (1.2461512460483586e+35);
r0low = r0low_stack;
x5 = h5 - y5;
r3lowx0 = r3low * x0;
r3high = r3high_stack;
x4 = h4 - y4;
r0lowx6 = r0low * x6;
r0high = r0high_stack;
x3 = h3 - y3;
r3highx0 = r3high * x0;
sr1low = sr1low_stack;
x2 = h2 - y2;
r0highx6 = r0high * x6;
sr1high = sr1high_stack;
x5 = x5 + (y3);
r0lowx0 = r0low * x0;
r1low = r1low_stack;
h6 = r3lowx0 + r0lowx6;
sr1lowx6 = sr1low * x6;
r1high = r1high_stack;
x4 = x4 + (y2);
r0highx0 = r0high * x0;
sr2low = sr2low_stack;
h7 = r3highx0 + r0highx6;
sr1highx6 = sr1high * x6;
sr2high = sr2high_stack;
x3 = x3 + (y1);
r1lowx0 = r1low * x0;
r2low = r2low_stack;
h0 = r0lowx0 + sr1lowx6;
sr2lowx6 = sr2low * x6;
r2high = r2high_stack;
x2 = x2 + (y0);
r1highx0 = r1high * x0;
sr3low = sr3low_stack;
h1 = r0highx0 + sr1highx6;
sr2highx6 = sr2high * x6;
sr3high = sr3high_stack;
x4 = x4 + (x5);
r2lowx0 = r2low * x0;
z2 = math.Float64frombits((new $Uint64(d2.$high, d2.$low)));
h2 = r1lowx0 + sr2lowx6;
sr3lowx6 = sr3low * x6;
x2 = x2 + (x3);
r2highx0 = r2high * x0;
z3 = math.Float64frombits((new $Uint64(d3.$high, d3.$low)));
h3 = r1highx0 + sr2highx6;
sr3highx6 = sr3high * x6;
r1highx4 = r1high * x4;
z2 = z2 - (1.2461512460483586e+35);
h4 = r2lowx0 + sr3lowx6;
r1lowx4 = r1low * x4;
r0highx4 = r0high * x4;
z3 = z3 - (5.3521788476473496e+44);
h5 = r2highx0 + sr3highx6;
r0lowx4 = r0low * x4;
h7 = h7 + (r1highx4);
sr3highx4 = sr3high * x4;
h6 = h6 + (r1lowx4);
sr3lowx4 = sr3low * x4;
h5 = h5 + (r0highx4);
sr2highx4 = sr2high * x4;
h4 = h4 + (r0lowx4);
sr2lowx4 = sr2low * x4;
h3 = h3 + (sr3highx4);
r0lowx2 = r0low * x2;
h2 = h2 + (sr3lowx4);
r0highx2 = r0high * x2;
h1 = h1 + (sr2highx4);
r1lowx2 = r1low * x2;
h0 = h0 + (sr2lowx4);
r1highx2 = r1high * x2;
h2 = h2 + (r0lowx2);
r2lowx2 = r2low * x2;
h3 = h3 + (r0highx2);
r2highx2 = r2high * x2;
h4 = h4 + (r1lowx2);
sr3lowx2 = sr3low * x2;
h5 = h5 + (r1highx2);
sr3highx2 = sr3high * x2;
p = p + (16) >> 0;
l = l - (16) >> 0;
h6 = h6 + (r2lowx2);
h7 = h7 + (r2highx2);
z1 = math.Float64frombits((new $Uint64(d1.$high, d1.$low)));
h0 = h0 + (sr3lowx2);
z0 = math.Float64frombits((new $Uint64(d0.$high, d0.$low)));
h1 = h1 + (sr3highx2);
z1 = z1 - (2.90142196707511e+25);
z0 = z0 - (6.755399441055744e+15);
h5 = h5 + (z3);
h3 = h3 + (z2);
h1 = h1 + (z1);
h0 = h0 + (z0);
/* */ if (l >= 16) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (l >= 16) { */ case 8:
/* goto multiplyaddatleast16bytes */ $s = 7; continue;
/* } */ case 9:
/* multiplyaddatmost15bytes: */ case 6:
y7 = h7 + 9.194973245195333e+54;
y6 = h6 + 9.194973245195333e+54;
y1 = h1 + 2.90142196707511e+25;
y0 = h0 + 2.90142196707511e+25;
y7 = y7 - (9.194973245195333e+54);
y6 = y6 - (9.194973245195333e+54);
y1 = y1 - (2.90142196707511e+25);
y0 = y0 - (2.90142196707511e+25);
y5 = h5 + 5.3521788476473496e+44;
y4 = h4 + 5.3521788476473496e+44;
x7 = h7 - y7;
y7 = y7 * (3.6734198463196485e-39);
x6 = h6 - y6;
y6 = y6 * (3.6734198463196485e-39);
x1 = h1 - y1;
x0 = h0 - y0;
y5 = y5 - (5.3521788476473496e+44);
y4 = y4 - (5.3521788476473496e+44);
x1 = x1 + (y7);
x0 = x0 + (y6);
x7 = x7 + (y5);
x6 = x6 + (y4);
y3 = h3 + 1.2461512460483586e+35;
y2 = h2 + 1.2461512460483586e+35;
x0 = x0 + (x1);
x6 = x6 + (x7);
y3 = y3 - (1.2461512460483586e+35);
r3low = r3low_stack;
y2 = y2 - (1.2461512460483586e+35);
r0low = r0low_stack;
x5 = h5 - y5;
r3lowx0 = r3low * x0;
r3high = r3high_stack;
x4 = h4 - y4;
r0lowx6 = r0low * x6;
r0high = r0high_stack;
x3 = h3 - y3;
r3highx0 = r3high * x0;
sr1low = sr1low_stack;
x2 = h2 - y2;
r0highx6 = r0high * x6;
sr1high = sr1high_stack;
x5 = x5 + (y3);
r0lowx0 = r0low * x0;
r1low = r1low_stack;
h6 = r3lowx0 + r0lowx6;
sr1lowx6 = sr1low * x6;
r1high = r1high_stack;
x4 = x4 + (y2);
r0highx0 = r0high * x0;
sr2low = sr2low_stack;
h7 = r3highx0 + r0highx6;
sr1highx6 = sr1high * x6;
sr2high = sr2high_stack;
x3 = x3 + (y1);
r1lowx0 = r1low * x0;
r2low = r2low_stack;
h0 = r0lowx0 + sr1lowx6;
sr2lowx6 = sr2low * x6;
r2high = r2high_stack;
x2 = x2 + (y0);
r1highx0 = r1high * x0;
sr3low = sr3low_stack;
h1 = r0highx0 + sr1highx6;
sr2highx6 = sr2high * x6;
sr3high = sr3high_stack;
x4 = x4 + (x5);
r2lowx0 = r2low * x0;
h2 = r1lowx0 + sr2lowx6;
sr3lowx6 = sr3low * x6;
x2 = x2 + (x3);
r2highx0 = r2high * x0;
h3 = r1highx0 + sr2highx6;
sr3highx6 = sr3high * x6;
r1highx4 = r1high * x4;
h4 = r2lowx0 + sr3lowx6;
r1lowx4 = r1low * x4;
r0highx4 = r0high * x4;
h5 = r2highx0 + sr3highx6;
r0lowx4 = r0low * x4;
h7 = h7 + (r1highx4);
sr3highx4 = sr3high * x4;
h6 = h6 + (r1lowx4);
sr3lowx4 = sr3low * x4;
h5 = h5 + (r0highx4);
sr2highx4 = sr2high * x4;
h4 = h4 + (r0lowx4);
sr2lowx4 = sr2low * x4;
h3 = h3 + (sr3highx4);
r0lowx2 = r0low * x2;
h2 = h2 + (sr3lowx4);
r0highx2 = r0high * x2;
h1 = h1 + (sr2highx4);
r1lowx2 = r1low * x2;
h0 = h0 + (sr2lowx4);
r1highx2 = r1high * x2;
h2 = h2 + (r0lowx2);
r2lowx2 = r2low * x2;
h3 = h3 + (r0highx2);
r2highx2 = r2high * x2;
h4 = h4 + (r1lowx2);
sr3lowx2 = sr3low * x2;
h5 = h5 + (r1highx2);
sr3highx2 = sr3high * x2;
h6 = h6 + (r2lowx2);
h7 = h7 + (r2highx2);
h0 = h0 + (sr3lowx2);
h1 = h1 + (sr3highx2);
/* addatmost15bytes: */ case 3:
/* */ if (l === 0) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (l === 0) { */ case 10:
/* goto nomorebytes */ $s = 12; continue;
/* } */ case 11:
lbelow2 = l - 2 >> 0;
lbelow3 = l - 3 >> 0;
lbelow2 = (lbelow2 >> $min((31), 31)) >> 0;
lbelow4 = l - 4 >> 0;
m00 = (((x$82 = p + 0 >> 0, ((x$82 < 0 || x$82 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$82])) >>> 0));
lbelow3 = (lbelow3 >> $min((31), 31)) >> 0;
p = p + (lbelow2) >> 0;
m01 = (((x$83 = p + 1 >> 0, ((x$83 < 0 || x$83 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$83])) >>> 0));
lbelow4 = (lbelow4 >> $min((31), 31)) >> 0;
p = p + (lbelow3) >> 0;
m02 = (((x$84 = p + 2 >> 0, ((x$84 < 0 || x$84 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$84])) >>> 0));
p = p + (lbelow4) >> 0;
m0 = new $Int64(0, 2151);
m03 = (((x$85 = p + 3 >> 0, ((x$85 < 0 || x$85 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$85])) >>> 0));
m0 = $shiftLeft64(m0, (51));
m1 = new $Int64(0, 2215);
m0 = (x$86 = (new $Int64(0, m00)), new $Int64(m0.$high + x$86.$high, m0.$low + x$86.$low));
m01 = (m01 & ~(((lbelow2 >>> 0)))) >>> 0;
m02 = (m02 & ~(((lbelow3 >>> 0)))) >>> 0;
m01 = m01 - (((lbelow2 >>> 0))) >>> 0;
m01 = (y$34 = (8), y$34 < 32 ? (m01 << y$34) : 0) >>> 0;
m03 = (m03 & ~(((lbelow4 >>> 0)))) >>> 0;
m0 = (x$87 = (new $Int64(0, m01)), new $Int64(m0.$high + x$87.$high, m0.$low + x$87.$low));
lbelow2 = lbelow2 - (lbelow3) >> 0;
m02 = m02 + (((lbelow2 >>> 0))) >>> 0;
lbelow3 = lbelow3 - (lbelow4) >> 0;
m02 = (y$35 = (16), y$35 < 32 ? (m02 << y$35) : 0) >>> 0;
m03 = m03 + (((lbelow3 >>> 0))) >>> 0;
m03 = (y$36 = (24), y$36 < 32 ? (m03 << y$36) : 0) >>> 0;
m0 = (x$88 = (new $Int64(0, m02)), new $Int64(m0.$high + x$88.$high, m0.$low + x$88.$low));
m0 = (x$89 = (new $Int64(0, m03)), new $Int64(m0.$high + x$89.$high, m0.$low + x$89.$low));
lbelow5 = l - 5 >> 0;
lbelow6 = l - 6 >> 0;
lbelow7 = l - 7 >> 0;
lbelow5 = (lbelow5 >> $min((31), 31)) >> 0;
lbelow8 = l - 8 >> 0;
lbelow6 = (lbelow6 >> $min((31), 31)) >> 0;
p = p + (lbelow5) >> 0;
m10 = (((x$90 = p + 4 >> 0, ((x$90 < 0 || x$90 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$90])) >>> 0));
lbelow7 = (lbelow7 >> $min((31), 31)) >> 0;
p = p + (lbelow6) >> 0;
m11 = (((x$91 = p + 5 >> 0, ((x$91 < 0 || x$91 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$91])) >>> 0));
lbelow8 = (lbelow8 >> $min((31), 31)) >> 0;
p = p + (lbelow7) >> 0;
m12 = (((x$92 = p + 6 >> 0, ((x$92 < 0 || x$92 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$92])) >>> 0));
m1 = $shiftLeft64(m1, (51));
p = p + (lbelow8) >> 0;
m13 = (((x$93 = p + 7 >> 0, ((x$93 < 0 || x$93 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$93])) >>> 0));
m10 = (m10 & ~(((lbelow5 >>> 0)))) >>> 0;
lbelow4 = lbelow4 - (lbelow5) >> 0;
m10 = m10 + (((lbelow4 >>> 0))) >>> 0;
lbelow5 = lbelow5 - (lbelow6) >> 0;
m11 = (m11 & ~(((lbelow6 >>> 0)))) >>> 0;
m11 = m11 + (((lbelow5 >>> 0))) >>> 0;
m11 = (y$37 = (8), y$37 < 32 ? (m11 << y$37) : 0) >>> 0;
m1 = (x$94 = (new $Int64(0, m10)), new $Int64(m1.$high + x$94.$high, m1.$low + x$94.$low));
m1 = (x$95 = (new $Int64(0, m11)), new $Int64(m1.$high + x$95.$high, m1.$low + x$95.$low));
m12 = (m12 & ~(((lbelow7 >>> 0)))) >>> 0;
lbelow6 = lbelow6 - (lbelow7) >> 0;
m13 = (m13 & ~(((lbelow8 >>> 0)))) >>> 0;
m12 = m12 + (((lbelow6 >>> 0))) >>> 0;
lbelow7 = lbelow7 - (lbelow8) >> 0;
m12 = (y$38 = (16), y$38 < 32 ? (m12 << y$38) : 0) >>> 0;
m13 = m13 + (((lbelow7 >>> 0))) >>> 0;
m13 = (y$39 = (24), y$39 < 32 ? (m13 << y$39) : 0) >>> 0;
m1 = (x$96 = (new $Int64(0, m12)), new $Int64(m1.$high + x$96.$high, m1.$low + x$96.$low));
m1 = (x$97 = (new $Int64(0, m13)), new $Int64(m1.$high + x$97.$high, m1.$low + x$97.$low));
m2 = new $Int64(0, 2279);
lbelow9 = l - 9 >> 0;
m3 = new $Int64(0, 2343);
lbelow10 = l - 10 >> 0;
lbelow11 = l - 11 >> 0;
lbelow9 = (lbelow9 >> $min((31), 31)) >> 0;
lbelow12 = l - 12 >> 0;
lbelow10 = (lbelow10 >> $min((31), 31)) >> 0;
p = p + (lbelow9) >> 0;
m20 = (((x$98 = p + 8 >> 0, ((x$98 < 0 || x$98 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$98])) >>> 0));
lbelow11 = (lbelow11 >> $min((31), 31)) >> 0;
p = p + (lbelow10) >> 0;
m21 = (((x$99 = p + 9 >> 0, ((x$99 < 0 || x$99 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$99])) >>> 0));
lbelow12 = (lbelow12 >> $min((31), 31)) >> 0;
p = p + (lbelow11) >> 0;
m22 = (((x$100 = p + 10 >> 0, ((x$100 < 0 || x$100 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$100])) >>> 0));
m2 = $shiftLeft64(m2, (51));
p = p + (lbelow12) >> 0;
m23 = (((x$101 = p + 11 >> 0, ((x$101 < 0 || x$101 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$101])) >>> 0));
m20 = (m20 & ~(((lbelow9 >>> 0)))) >>> 0;
lbelow8 = lbelow8 - (lbelow9) >> 0;
m20 = m20 + (((lbelow8 >>> 0))) >>> 0;
lbelow9 = lbelow9 - (lbelow10) >> 0;
m21 = (m21 & ~(((lbelow10 >>> 0)))) >>> 0;
m21 = m21 + (((lbelow9 >>> 0))) >>> 0;
m21 = (y$40 = (8), y$40 < 32 ? (m21 << y$40) : 0) >>> 0;
m2 = (x$102 = (new $Int64(0, m20)), new $Int64(m2.$high + x$102.$high, m2.$low + x$102.$low));
m2 = (x$103 = (new $Int64(0, m21)), new $Int64(m2.$high + x$103.$high, m2.$low + x$103.$low));
m22 = (m22 & ~(((lbelow11 >>> 0)))) >>> 0;
lbelow10 = lbelow10 - (lbelow11) >> 0;
m23 = (m23 & ~(((lbelow12 >>> 0)))) >>> 0;
m22 = m22 + (((lbelow10 >>> 0))) >>> 0;
lbelow11 = lbelow11 - (lbelow12) >> 0;
m22 = (y$41 = (16), y$41 < 32 ? (m22 << y$41) : 0) >>> 0;
m23 = m23 + (((lbelow11 >>> 0))) >>> 0;
m23 = (y$42 = (24), y$42 < 32 ? (m23 << y$42) : 0) >>> 0;
m2 = (x$104 = (new $Int64(0, m22)), new $Int64(m2.$high + x$104.$high, m2.$low + x$104.$low));
m3 = $shiftLeft64(m3, (51));
lbelow13 = l - 13 >> 0;
lbelow13 = (lbelow13 >> $min((31), 31)) >> 0;
lbelow14 = l - 14 >> 0;
lbelow14 = (lbelow14 >> $min((31), 31)) >> 0;
p = p + (lbelow13) >> 0;
lbelow15 = l - 15 >> 0;
m30 = (((x$105 = p + 12 >> 0, ((x$105 < 0 || x$105 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$105])) >>> 0));
lbelow15 = (lbelow15 >> $min((31), 31)) >> 0;
p = p + (lbelow14) >> 0;
m31 = (((x$106 = p + 13 >> 0, ((x$106 < 0 || x$106 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$106])) >>> 0));
p = p + (lbelow15) >> 0;
m2 = (x$107 = (new $Int64(0, m23)), new $Int64(m2.$high + x$107.$high, m2.$low + x$107.$low));
m32 = (((x$108 = p + 14 >> 0, ((x$108 < 0 || x$108 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$108])) >>> 0));
m30 = (m30 & ~(((lbelow13 >>> 0)))) >>> 0;
lbelow12 = lbelow12 - (lbelow13) >> 0;
m30 = m30 + (((lbelow12 >>> 0))) >>> 0;
lbelow13 = lbelow13 - (lbelow14) >> 0;
m3 = (x$109 = (new $Int64(0, m30)), new $Int64(m3.$high + x$109.$high, m3.$low + x$109.$low));
m31 = (m31 & ~(((lbelow14 >>> 0)))) >>> 0;
m31 = m31 + (((lbelow13 >>> 0))) >>> 0;
m32 = (m32 & ~(((lbelow15 >>> 0)))) >>> 0;
m31 = (y$43 = (8), y$43 < 32 ? (m31 << y$43) : 0) >>> 0;
lbelow14 = lbelow14 - (lbelow15) >> 0;
m3 = (x$110 = (new $Int64(0, m31)), new $Int64(m3.$high + x$110.$high, m3.$low + x$110.$low));
m32 = m32 + (((lbelow14 >>> 0))) >>> 0;
d0 = m0;
m32 = (y$44 = (16), y$44 < 32 ? (m32 << y$44) : 0) >>> 0;
m33 = (new $Uint64(0, (lbelow15 + 1 >> 0)));
d1 = m1;
m33 = $shiftLeft64(m33, (24));
m3 = (x$111 = (new $Int64(0, m32)), new $Int64(m3.$high + x$111.$high, m3.$low + x$111.$low));
d2 = m2;
m3 = (x$112 = (new $Int64(m33.$high, m33.$low)), new $Int64(m3.$high + x$112.$high, m3.$low + x$112.$low));
d3 = m3;
z3 = math.Float64frombits((new $Uint64(d3.$high, d3.$low)));
z2 = math.Float64frombits((new $Uint64(d2.$high, d2.$low)));
z1 = math.Float64frombits((new $Uint64(d1.$high, d1.$low)));
z0 = math.Float64frombits((new $Uint64(d0.$high, d0.$low)));
z3 = z3 - (5.3521788476473496e+44);
z2 = z2 - (1.2461512460483586e+35);
z1 = z1 - (2.90142196707511e+25);
z0 = z0 - (6.755399441055744e+15);
h5 = h5 + (z3);
h3 = h3 + (z2);
h1 = h1 + (z1);
h0 = h0 + (z0);
y7 = h7 + 9.194973245195333e+54;
y6 = h6 + 9.194973245195333e+54;
y1 = h1 + 2.90142196707511e+25;
y0 = h0 + 2.90142196707511e+25;
y7 = y7 - (9.194973245195333e+54);
y6 = y6 - (9.194973245195333e+54);
y1 = y1 - (2.90142196707511e+25);
y0 = y0 - (2.90142196707511e+25);
y5 = h5 + 5.3521788476473496e+44;
y4 = h4 + 5.3521788476473496e+44;
x7 = h7 - y7;
y7 = y7 * (3.6734198463196485e-39);
x6 = h6 - y6;
y6 = y6 * (3.6734198463196485e-39);
x1 = h1 - y1;
x0 = h0 - y0;
y5 = y5 - (5.3521788476473496e+44);
y4 = y4 - (5.3521788476473496e+44);
x1 = x1 + (y7);
x0 = x0 + (y6);
x7 = x7 + (y5);
x6 = x6 + (y4);
y3 = h3 + 1.2461512460483586e+35;
y2 = h2 + 1.2461512460483586e+35;
x0 = x0 + (x1);
x6 = x6 + (x7);
y3 = y3 - (1.2461512460483586e+35);
r3low = r3low_stack;
y2 = y2 - (1.2461512460483586e+35);
r0low = r0low_stack;
x5 = h5 - y5;
r3lowx0 = r3low * x0;
r3high = r3high_stack;
x4 = h4 - y4;
r0lowx6 = r0low * x6;
r0high = r0high_stack;
x3 = h3 - y3;
r3highx0 = r3high * x0;
sr1low = sr1low_stack;
x2 = h2 - y2;
r0highx6 = r0high * x6;
sr1high = sr1high_stack;
x5 = x5 + (y3);
r0lowx0 = r0low * x0;
r1low = r1low_stack;
h6 = r3lowx0 + r0lowx6;
sr1lowx6 = sr1low * x6;
r1high = r1high_stack;
x4 = x4 + (y2);
r0highx0 = r0high * x0;
sr2low = sr2low_stack;
h7 = r3highx0 + r0highx6;
sr1highx6 = sr1high * x6;
sr2high = sr2high_stack;
x3 = x3 + (y1);
r1lowx0 = r1low * x0;
r2low = r2low_stack;
h0 = r0lowx0 + sr1lowx6;
sr2lowx6 = sr2low * x6;
r2high = r2high_stack;
x2 = x2 + (y0);
r1highx0 = r1high * x0;
sr3low = sr3low_stack;
h1 = r0highx0 + sr1highx6;
sr2highx6 = sr2high * x6;
sr3high = sr3high_stack;
x4 = x4 + (x5);
r2lowx0 = r2low * x0;
h2 = r1lowx0 + sr2lowx6;
sr3lowx6 = sr3low * x6;
x2 = x2 + (x3);
r2highx0 = r2high * x0;
h3 = r1highx0 + sr2highx6;
sr3highx6 = sr3high * x6;
r1highx4 = r1high * x4;
h4 = r2lowx0 + sr3lowx6;
r1lowx4 = r1low * x4;
r0highx4 = r0high * x4;
h5 = r2highx0 + sr3highx6;
r0lowx4 = r0low * x4;
h7 = h7 + (r1highx4);
sr3highx4 = sr3high * x4;
h6 = h6 + (r1lowx4);
sr3lowx4 = sr3low * x4;
h5 = h5 + (r0highx4);
sr2highx4 = sr2high * x4;
h4 = h4 + (r0lowx4);
sr2lowx4 = sr2low * x4;
h3 = h3 + (sr3highx4);
r0lowx2 = r0low * x2;
h2 = h2 + (sr3lowx4);
r0highx2 = r0high * x2;
h1 = h1 + (sr2highx4);
r1lowx2 = r1low * x2;
h0 = h0 + (sr2lowx4);
r1highx2 = r1high * x2;
h2 = h2 + (r0lowx2);
r2lowx2 = r2low * x2;
h3 = h3 + (r0highx2);
r2highx2 = r2high * x2;
h4 = h4 + (r1lowx2);
sr3lowx2 = sr3low * x2;
h5 = h5 + (r1highx2);
sr3highx2 = sr3high * x2;
h6 = h6 + (r2lowx2);
h7 = h7 + (r2highx2);
h0 = h0 + (sr3lowx2);
h1 = h1 + (sr3highx2);
/* nomorebytes: */ case 12:
y7 = h7 + 9.194973245195333e+54;
y0 = h0 + 2.90142196707511e+25;
y1 = h1 + 2.90142196707511e+25;
y2 = h2 + 1.2461512460483586e+35;
y7 = y7 - (9.194973245195333e+54);
y3 = h3 + 1.2461512460483586e+35;
y4 = h4 + 5.3521788476473496e+44;
y5 = h5 + 5.3521788476473496e+44;
x7 = h7 - y7;
y7 = y7 * (3.6734198463196485e-39);
y0 = y0 - (2.90142196707511e+25);
y1 = y1 - (2.90142196707511e+25);
y2 = y2 - (1.2461512460483586e+35);
h6 = h6 + (x7);
y3 = y3 - (1.2461512460483586e+35);
y4 = y4 - (5.3521788476473496e+44);
y5 = y5 - (5.3521788476473496e+44);
y6 = h6 + 9.194973245195333e+54;
x0 = h0 - y0;
x1 = h1 - y1;
x2 = h2 - y2;
y6 = y6 - (9.194973245195333e+54);
x0 = x0 + (y7);
x3 = h3 - y3;
x4 = h4 - y4;
x5 = h5 - y5;
x6 = h6 - y6;
y6 = y6 * (3.6734198463196485e-39);
x2 = x2 + (y0);
x3 = x3 + (y1);
x4 = x4 + (y2);
x0 = x0 + (y6);
x5 = x5 + (y3);
x6 = x6 + (y4);
x2 = x2 + (x3);
x0 = x0 + (x1);
x4 = x4 + (x5);
x6 = x6 + (y5);
x2 = x2 + (2.901425656423924e+25);
d1 = ((x$113 = math.Float64bits(x2), new $Int64(x$113.$high, x$113.$low)));
x0 = x0 + (6.755408030990331e+15);
d0 = ((x$114 = math.Float64bits(x0), new $Int64(x$114.$high, x$114.$low)));
x4 = x4 + (1.2461528306116085e+35);
d2 = ((x$115 = math.Float64bits(x4), new $Int64(x$115.$high, x$115.$low)));
x6 = x6 + (5.352192458942025e+44);
d3 = ((x$116 = math.Float64bits(x6), new $Int64(x$116.$high, x$116.$low)));
f0 = (new $Uint64(d0.$high, d0.$low));
f1 = (new $Uint64(d1.$high, d1.$low));
bits32 = new $Uint64(4294967295, 4294967295);
f2 = (new $Uint64(d2.$high, d2.$low));
bits32 = $shiftRightUint64(bits32, (32));
f3 = (new $Uint64(d3.$high, d3.$low));
f = $shiftRightUint64(f0, 32);
f0 = (x$117 = bits32, new $Uint64(f0.$high & x$117.$high, (f0.$low & x$117.$low) >>> 0));
f = (x$118 = new $Uint64(0, 255), new $Uint64(f.$high & x$118.$high, (f.$low & x$118.$low) >>> 0));
f1 = (x$119 = f, new $Uint64(f1.$high + x$119.$high, f1.$low + x$119.$low));
g0 = new $Uint64(f0.$high + 0, f0.$low + 5);
g = $shiftRightUint64(g0, 32);
g0 = (x$120 = bits32, new $Uint64(g0.$high & x$120.$high, (g0.$low & x$120.$low) >>> 0));
f = $shiftRightUint64(f1, 32);
f1 = (x$121 = bits32, new $Uint64(f1.$high & x$121.$high, (f1.$low & x$121.$low) >>> 0));
f = (x$122 = new $Uint64(0, 255), new $Uint64(f.$high & x$122.$high, (f.$low & x$122.$low) >>> 0));
g1 = new $Uint64(f1.$high + g.$high, f1.$low + g.$low);
g = $shiftRightUint64(g1, 32);
f2 = (x$123 = f, new $Uint64(f2.$high + x$123.$high, f2.$low + x$123.$low));
f = $shiftRightUint64(f2, 32);
g1 = (x$124 = bits32, new $Uint64(g1.$high & x$124.$high, (g1.$low & x$124.$low) >>> 0));
f2 = (x$125 = bits32, new $Uint64(f2.$high & x$125.$high, (f2.$low & x$125.$low) >>> 0));
f = (x$126 = new $Uint64(0, 255), new $Uint64(f.$high & x$126.$high, (f.$low & x$126.$low) >>> 0));
f3 = (x$127 = f, new $Uint64(f3.$high + x$127.$high, f3.$low + x$127.$low));
g2 = new $Uint64(f2.$high + g.$high, f2.$low + g.$low);
g = $shiftRightUint64(g2, 32);
g2 = (x$128 = bits32, new $Uint64(g2.$high & x$128.$high, (g2.$low & x$128.$low) >>> 0));
f4 = $shiftRightUint64(f3, 32);
f3 = (x$129 = bits32, new $Uint64(f3.$high & x$129.$high, (f3.$low & x$129.$low) >>> 0));
f4 = (x$130 = new $Uint64(0, 255), new $Uint64(f4.$high & x$130.$high, (f4.$low & x$130.$low) >>> 0));
g3 = new $Uint64(f3.$high + g.$high, f3.$low + g.$low);
g = $shiftRightUint64(g3, 32);
g3 = (x$131 = bits32, new $Uint64(g3.$high & x$131.$high, (g3.$low & x$131.$low) >>> 0));
g4 = new $Uint64(f4.$high + g.$high, f4.$low + g.$low);
g4 = new $Uint64(g4.$high - 0, g4.$low - 4);
s00 = (((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) >>> 0));
f = ((x$132 = $shiftRightInt64((new $Int64(g4.$high, g4.$low)), 63), new $Uint64(x$132.$high, x$132.$low)));
s01 = (((1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]) >>> 0));
f0 = (x$133 = f, new $Uint64(f0.$high & x$133.$high, (f0.$low & x$133.$low) >>> 0));
g0 = (x$134 = f, new $Uint64(g0.$high & ~x$134.$high, (g0.$low & ~x$134.$low) >>> 0));
s02 = (((2 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 2]) >>> 0));
f1 = (x$135 = f, new $Uint64(f1.$high & x$135.$high, (f1.$low & x$135.$low) >>> 0));
f0 = (x$136 = g0, new $Uint64(f0.$high | x$136.$high, (f0.$low | x$136.$low) >>> 0));
s03 = (((3 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 3]) >>> 0));
g1 = (x$137 = f, new $Uint64(g1.$high & ~x$137.$high, (g1.$low & ~x$137.$low) >>> 0));
f2 = (x$138 = f, new $Uint64(f2.$high & x$138.$high, (f2.$low & x$138.$low) >>> 0));
s10 = (((4 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 4]) >>> 0));
f3 = (x$139 = f, new $Uint64(f3.$high & x$139.$high, (f3.$low & x$139.$low) >>> 0));
g2 = (x$140 = f, new $Uint64(g2.$high & ~x$140.$high, (g2.$low & ~x$140.$low) >>> 0));
s11 = (((5 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 5]) >>> 0));
g3 = (x$141 = f, new $Uint64(g3.$high & ~x$141.$high, (g3.$low & ~x$141.$low) >>> 0));
f1 = (x$142 = g1, new $Uint64(f1.$high | x$142.$high, (f1.$low | x$142.$low) >>> 0));
s12 = (((6 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 6]) >>> 0));
f2 = (x$143 = g2, new $Uint64(f2.$high | x$143.$high, (f2.$low | x$143.$low) >>> 0));
f3 = (x$144 = g3, new $Uint64(f3.$high | x$144.$high, (f3.$low | x$144.$low) >>> 0));
s13 = (((7 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 7]) >>> 0));
s01 = (y$45 = (8), y$45 < 32 ? (s01 << y$45) : 0) >>> 0;
f0 = (x$145 = (new $Uint64(0, s00)), new $Uint64(f0.$high + x$145.$high, f0.$low + x$145.$low));
s20 = (((8 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 8]) >>> 0));
s02 = (y$46 = (16), y$46 < 32 ? (s02 << y$46) : 0) >>> 0;
f0 = (x$146 = (new $Uint64(0, s01)), new $Uint64(f0.$high + x$146.$high, f0.$low + x$146.$low));
s21 = (((9 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 9]) >>> 0));
s03 = (y$47 = (24), y$47 < 32 ? (s03 << y$47) : 0) >>> 0;
f0 = (x$147 = (new $Uint64(0, s02)), new $Uint64(f0.$high + x$147.$high, f0.$low + x$147.$low));
s22 = (((10 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 10]) >>> 0));
s11 = (y$48 = (8), y$48 < 32 ? (s11 << y$48) : 0) >>> 0;
f1 = (x$148 = (new $Uint64(0, s10)), new $Uint64(f1.$high + x$148.$high, f1.$low + x$148.$low));
s23 = (((11 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 11]) >>> 0));
s12 = (y$49 = (16), y$49 < 32 ? (s12 << y$49) : 0) >>> 0;
f1 = (x$149 = (new $Uint64(0, s11)), new $Uint64(f1.$high + x$149.$high, f1.$low + x$149.$low));
s30 = (((12 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 12]) >>> 0));
s13 = (y$50 = (24), y$50 < 32 ? (s13 << y$50) : 0) >>> 0;
f1 = (x$150 = (new $Uint64(0, s12)), new $Uint64(f1.$high + x$150.$high, f1.$low + x$150.$low));
s31 = (((13 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 13]) >>> 0));
f0 = (x$151 = (new $Uint64(0, s03)), new $Uint64(f0.$high + x$151.$high, f0.$low + x$151.$low));
f1 = (x$152 = (new $Uint64(0, s13)), new $Uint64(f1.$high + x$152.$high, f1.$low + x$152.$low));
s32 = (((14 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 14]) >>> 0));
s21 = (y$51 = (8), y$51 < 32 ? (s21 << y$51) : 0) >>> 0;
f2 = (x$153 = (new $Uint64(0, s20)), new $Uint64(f2.$high + x$153.$high, f2.$low + x$153.$low));
s33 = (((15 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 15]) >>> 0));
s22 = (y$52 = (16), y$52 < 32 ? (s22 << y$52) : 0) >>> 0;
f2 = (x$154 = (new $Uint64(0, s21)), new $Uint64(f2.$high + x$154.$high, f2.$low + x$154.$low));
s23 = (y$53 = (24), y$53 < 32 ? (s23 << y$53) : 0) >>> 0;
f2 = (x$155 = (new $Uint64(0, s22)), new $Uint64(f2.$high + x$155.$high, f2.$low + x$155.$low));
s31 = (y$54 = (8), y$54 < 32 ? (s31 << y$54) : 0) >>> 0;
f3 = (x$156 = (new $Uint64(0, s30)), new $Uint64(f3.$high + x$156.$high, f3.$low + x$156.$low));
s32 = (y$55 = (16), y$55 < 32 ? (s32 << y$55) : 0) >>> 0;
f3 = (x$157 = (new $Uint64(0, s31)), new $Uint64(f3.$high + x$157.$high, f3.$low + x$157.$low));
s33 = (y$56 = (24), y$56 < 32 ? (s33 << y$56) : 0) >>> 0;
f3 = (x$158 = (new $Uint64(0, s32)), new $Uint64(f3.$high + x$158.$high, f3.$low + x$158.$low));
f2 = (x$159 = (new $Uint64(0, s23)), new $Uint64(f2.$high + x$159.$high, f2.$low + x$159.$low));
f3 = (x$160 = (new $Uint64(0, s33)), new $Uint64(f3.$high + x$160.$high, f3.$low + x$160.$low));
out.nilCheck, out[0] = ((f0.$low << 24 >>> 24));
f0 = $shiftRightUint64(f0, (8));
out.nilCheck, out[1] = ((f0.$low << 24 >>> 24));
f0 = $shiftRightUint64(f0, (8));
out.nilCheck, out[2] = ((f0.$low << 24 >>> 24));
f0 = $shiftRightUint64(f0, (8));
out.nilCheck, out[3] = ((f0.$low << 24 >>> 24));
f0 = $shiftRightUint64(f0, (8));
f1 = (x$161 = f0, new $Uint64(f1.$high + x$161.$high, f1.$low + x$161.$low));
out.nilCheck, out[4] = ((f1.$low << 24 >>> 24));
f1 = $shiftRightUint64(f1, (8));
out.nilCheck, out[5] = ((f1.$low << 24 >>> 24));
f1 = $shiftRightUint64(f1, (8));
out.nilCheck, out[6] = ((f1.$low << 24 >>> 24));
f1 = $shiftRightUint64(f1, (8));
out.nilCheck, out[7] = ((f1.$low << 24 >>> 24));
f1 = $shiftRightUint64(f1, (8));
f2 = (x$162 = f1, new $Uint64(f2.$high + x$162.$high, f2.$low + x$162.$low));
out.nilCheck, out[8] = ((f2.$low << 24 >>> 24));
f2 = $shiftRightUint64(f2, (8));
out.nilCheck, out[9] = ((f2.$low << 24 >>> 24));
f2 = $shiftRightUint64(f2, (8));
out.nilCheck, out[10] = ((f2.$low << 24 >>> 24));
f2 = $shiftRightUint64(f2, (8));
out.nilCheck, out[11] = ((f2.$low << 24 >>> 24));
f2 = $shiftRightUint64(f2, (8));
f3 = (x$163 = f2, new $Uint64(f3.$high + x$163.$high, f3.$low + x$163.$low));
out.nilCheck, out[12] = ((f3.$low << 24 >>> 24));
f3 = $shiftRightUint64(f3, (8));
out.nilCheck, out[13] = ((f3.$low << 24 >>> 24));
f3 = $shiftRightUint64(f3, (8));
out.nilCheck, out[14] = ((f3.$low << 24 >>> 24));
f3 = $shiftRightUint64(f3, (8));
out.nilCheck, out[15] = ((f3.$low << 24 >>> 24));
$s = -1; return;
/* */ } return; }
};
$pkg.Sum = Sum;
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = subtle.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = math.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["vendor/golang_org/x/crypto/chacha20poly1305"] = (function() {
var $pkg = {}, $init, cipher, binary, errors, chacha20, poly1305, chacha20poly1305, arrayType, sliceType$1, arrayType$1, ptrType, errOpen, New, sliceForAppend, roundTo16;
cipher = $packages["crypto/cipher"];
binary = $packages["encoding/binary"];
errors = $packages["errors"];
chacha20 = $packages["vendor/golang_org/x/crypto/chacha20poly1305/internal/chacha20"];
poly1305 = $packages["vendor/golang_org/x/crypto/poly1305"];
chacha20poly1305 = $pkg.chacha20poly1305 = $newType(0, $kindStruct, "chacha20poly1305.chacha20poly1305", true, "vendor/golang_org/x/crypto/chacha20poly1305", false, function(key_) {
this.$val = this;
if (arguments.length === 0) {
this.key = arrayType.zero();
return;
}
this.key = key_;
});
arrayType = $arrayType($Uint8, 32);
sliceType$1 = $sliceType($Uint8);
arrayType$1 = $arrayType($Uint8, 16);
ptrType = $ptrType(chacha20poly1305);
New = function(key) {
var $ptr, key, ret;
if (!((key.$length === 32))) {
return [$ifaceNil, errors.New("chacha20poly1305: bad key length")];
}
ret = new chacha20poly1305.ptr(arrayType.zero());
$copySlice(new sliceType$1(ret.key), key);
return [ret, $ifaceNil];
};
$pkg.New = New;
chacha20poly1305.ptr.prototype.NonceSize = function() {
var $ptr, c;
c = this;
return 12;
};
chacha20poly1305.prototype.NonceSize = function() { return this.$val.NonceSize(); };
chacha20poly1305.ptr.prototype.Overhead = function() {
var $ptr, c;
c = this;
return 16;
};
chacha20poly1305.prototype.Overhead = function() { return this.$val.Overhead(); };
chacha20poly1305.ptr.prototype.Seal = function(dst, nonce, plaintext, additionalData) {
var $ptr, additionalData, c, dst, nonce, plaintext, x;
c = this;
if (!((nonce.$length === 12))) {
$panic(new $String("chacha20poly1305: bad nonce length passed to Seal"));
}
if ((x = (new $Uint64(0, plaintext.$length)), (x.$high > 63 || (x.$high === 63 && x.$low > 4294967232)))) {
$panic(new $String("chacha20poly1305: plaintext too large"));
}
return c.seal(dst, nonce, plaintext, additionalData);
};
chacha20poly1305.prototype.Seal = function(dst, nonce, plaintext, additionalData) { return this.$val.Seal(dst, nonce, plaintext, additionalData); };
chacha20poly1305.ptr.prototype.Open = function(dst, nonce, ciphertext, additionalData) {
var $ptr, additionalData, c, ciphertext, dst, nonce, x;
c = this;
if (!((nonce.$length === 12))) {
$panic(new $String("chacha20poly1305: bad nonce length passed to Open"));
}
if (ciphertext.$length < 16) {
return [sliceType$1.nil, errOpen];
}
if ((x = (new $Uint64(0, ciphertext.$length)), (x.$high > 63 || (x.$high === 63 && x.$low > 4294967248)))) {
$panic(new $String("chacha20poly1305: ciphertext too large"));
}
return c.open(dst, nonce, ciphertext, additionalData);
};
chacha20poly1305.prototype.Open = function(dst, nonce, ciphertext, additionalData) { return this.$val.Open(dst, nonce, ciphertext, additionalData); };
sliceForAppend = function(in$1, n) {
var $ptr, head, in$1, n, tail, total;
head = sliceType$1.nil;
tail = sliceType$1.nil;
total = in$1.$length + n >> 0;
if (in$1.$capacity >= total) {
head = $subslice(in$1, 0, total);
} else {
head = $makeSlice(sliceType$1, total);
$copySlice(head, in$1);
}
tail = $subslice(head, in$1.$length);
return [head, tail];
};
roundTo16 = function(n) {
var $ptr, _q, n;
return $imul(16, ((_q = ((n + 15 >> 0)) / 16, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))));
};
chacha20poly1305.ptr.prototype.sealGeneric = function(dst, nonce, plaintext, additionalData) {
var $ptr, _tuple, additionalData, c, counter, dst, nonce, out, plaintext, polyInput, polyKey, ret, tag;
c = this;
counter = arrayType$1.zero();
$copySlice($subslice(new sliceType$1(counter), 4), nonce);
polyKey = arrayType.zero();
chacha20.XORKeyStream(new sliceType$1(polyKey), new sliceType$1(polyKey), counter, c.key);
_tuple = sliceForAppend(dst, plaintext.$length + 16 >> 0);
ret = _tuple[0];
out = _tuple[1];
counter[0] = 1;
chacha20.XORKeyStream(out, plaintext, counter, c.key);
polyInput = $makeSlice(sliceType$1, (((roundTo16(additionalData.$length) + roundTo16(plaintext.$length) >> 0) + 8 >> 0) + 8 >> 0));
$copySlice(polyInput, additionalData);
$copySlice($subslice(polyInput, roundTo16(additionalData.$length)), $subslice(out, 0, plaintext.$length));
$clone(binary.LittleEndian, binary.littleEndian).PutUint64($subslice(polyInput, (polyInput.$length - 16 >> 0)), (new $Uint64(0, additionalData.$length)));
$clone(binary.LittleEndian, binary.littleEndian).PutUint64($subslice(polyInput, (polyInput.$length - 8 >> 0)), (new $Uint64(0, plaintext.$length)));
tag = arrayType$1.zero();
poly1305.Sum(tag, polyInput, polyKey);
$copySlice($subslice(out, plaintext.$length), new sliceType$1(tag));
return ret;
};
chacha20poly1305.prototype.sealGeneric = function(dst, nonce, plaintext, additionalData) { return this.$val.sealGeneric(dst, nonce, plaintext, additionalData); };
chacha20poly1305.ptr.prototype.openGeneric = function(dst, nonce, ciphertext, additionalData) {
var $ptr, _i, _ref, _tuple, additionalData, c, ciphertext, counter, dst, i, nonce, out, polyInput, polyKey, ret, tag;
c = this;
tag = arrayType$1.zero();
$copySlice(new sliceType$1(tag), $subslice(ciphertext, (ciphertext.$length - 16 >> 0)));
ciphertext = $subslice(ciphertext, 0, (ciphertext.$length - 16 >> 0));
counter = arrayType$1.zero();
$copySlice($subslice(new sliceType$1(counter), 4), nonce);
polyKey = arrayType.zero();
chacha20.XORKeyStream(new sliceType$1(polyKey), new sliceType$1(polyKey), counter, c.key);
polyInput = $makeSlice(sliceType$1, (((roundTo16(additionalData.$length) + roundTo16(ciphertext.$length) >> 0) + 8 >> 0) + 8 >> 0));
$copySlice(polyInput, additionalData);
$copySlice($subslice(polyInput, roundTo16(additionalData.$length)), ciphertext);
$clone(binary.LittleEndian, binary.littleEndian).PutUint64($subslice(polyInput, (polyInput.$length - 16 >> 0)), (new $Uint64(0, additionalData.$length)));
$clone(binary.LittleEndian, binary.littleEndian).PutUint64($subslice(polyInput, (polyInput.$length - 8 >> 0)), (new $Uint64(0, ciphertext.$length)));
_tuple = sliceForAppend(dst, ciphertext.$length);
ret = _tuple[0];
out = _tuple[1];
if (!poly1305.Verify(tag, polyInput, polyKey)) {
_ref = out;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
((i < 0 || i >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i] = 0);
_i++;
}
return [sliceType$1.nil, errOpen];
}
counter[0] = 1;
chacha20.XORKeyStream(out, ciphertext, counter, c.key);
return [ret, $ifaceNil];
};
chacha20poly1305.prototype.openGeneric = function(dst, nonce, ciphertext, additionalData) { return this.$val.openGeneric(dst, nonce, ciphertext, additionalData); };
chacha20poly1305.ptr.prototype.seal = function(dst, nonce, plaintext, additionalData) {
var $ptr, additionalData, c, dst, nonce, plaintext;
c = this;
return c.sealGeneric(dst, nonce, plaintext, additionalData);
};
chacha20poly1305.prototype.seal = function(dst, nonce, plaintext, additionalData) { return this.$val.seal(dst, nonce, plaintext, additionalData); };
chacha20poly1305.ptr.prototype.open = function(dst, nonce, ciphertext, additionalData) {
var $ptr, additionalData, c, ciphertext, dst, nonce;
c = this;
return c.openGeneric(dst, nonce, ciphertext, additionalData);
};
chacha20poly1305.prototype.open = function(dst, nonce, ciphertext, additionalData) { return this.$val.open(dst, nonce, ciphertext, additionalData); };
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$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: "sealGeneric", name: "sealGeneric", pkg: "vendor/golang_org/x/crypto/chacha20poly1305", typ: $funcType([sliceType$1, sliceType$1, sliceType$1, sliceType$1], [sliceType$1], false)}, {prop: "openGeneric", name: "openGeneric", pkg: "vendor/golang_org/x/crypto/chacha20poly1305", typ: $funcType([sliceType$1, sliceType$1, sliceType$1, sliceType$1], [sliceType$1, $error], false)}, {prop: "seal", name: "seal", pkg: "vendor/golang_org/x/crypto/chacha20poly1305", typ: $funcType([sliceType$1, sliceType$1, sliceType$1, sliceType$1], [sliceType$1], false)}, {prop: "open", name: "open", pkg: "vendor/golang_org/x/crypto/chacha20poly1305", typ: $funcType([sliceType$1, sliceType$1, sliceType$1, sliceType$1], [sliceType$1, $error], false)}];
chacha20poly1305.init("vendor/golang_org/x/crypto/chacha20poly1305", [{prop: "key", name: "key", exported: false, typ: arrayType, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = cipher.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = binary.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = errors.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = chacha20.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = poly1305.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
errOpen = errors.New("chacha20poly1305: message authentication failed");
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["vendor/golang_org/x/crypto/curve25519"] = (function() {
var $pkg = {}, $init, fieldElement, arrayType, sliceType, arrayType$1, arrayType$2, basePoint, basePoint$24ptr, feZero, feOne, feAdd, feSub, feCopy, feCSwap, load3, load4, feFromBytes, feToBytes, feMul, feSquare, feMul121666, feInvert, scalarMult, ScalarMult, ScalarBaseMult;
fieldElement = $pkg.fieldElement = $newType(40, $kindArray, "curve25519.fieldElement", true, "vendor/golang_org/x/crypto/curve25519", false, null);
arrayType = $arrayType($Int32, 10);
sliceType = $sliceType($Uint8);
arrayType$1 = $arrayType($Int64, 10);
arrayType$2 = $arrayType($Uint8, 32);
feZero = function(fe) {
var $ptr, _i, _ref, fe, i;
_ref = fe;
_i = 0;
while (true) {
if (!(_i < 10)) { break; }
i = _i;
fe.nilCheck, ((i < 0 || i >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[i] = 0);
_i++;
}
};
feOne = function(fe) {
var $ptr, fe;
feZero(fe);
fe.nilCheck, fe[0] = 1;
};
feAdd = function(dst, a, b) {
var $ptr, _i, _ref, a, b, dst, i;
_ref = dst;
_i = 0;
while (true) {
if (!(_i < 10)) { break; }
i = _i;
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));
_i++;
}
};
feSub = function(dst, a, b) {
var $ptr, _i, _ref, a, b, dst, i;
_ref = dst;
_i = 0;
while (true) {
if (!(_i < 10)) { break; }
i = _i;
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));
_i++;
}
};
feCopy = function(dst, src) {
var $ptr, _i, _ref, dst, i, src;
_ref = dst;
_i = 0;
while (true) {
if (!(_i < 10)) { break; }
i = _i;
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])));
_i++;
}
};
feCSwap = function(f, g, b) {
var $ptr, _i, _i$1, _i$2, _ref, _ref$1, _ref$2, b, f, g, i, i$1, i$2, x;
x = arrayType.zero();
b = -b;
_ref = x;
_i = 0;
while (true) {
if (!(_i < 10)) { break; }
i = _i;
((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i] = (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))));
_i++;
}
_ref$1 = f;
_i$1 = 0;
while (true) {
if (!(_i$1 < 10)) { break; }
i$1 = _i$1;
f.nilCheck, ((i$1 < 0 || i$1 >= f.length) ? ($throwRuntimeError("index out of range"), undefined) : f[i$1] = (((f.nilCheck, ((i$1 < 0 || i$1 >= f.length) ? ($throwRuntimeError("index out of range"), undefined) : f[i$1])) ^ (((i$1 < 0 || i$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i$1]))) >> 0));
_i$1++;
}
_ref$2 = g;
_i$2 = 0;
while (true) {
if (!(_i$2 < 10)) { break; }
i$2 = _i$2;
g.nilCheck, ((i$2 < 0 || i$2 >= g.length) ? ($throwRuntimeError("index out of range"), undefined) : g[i$2] = (((g.nilCheck, ((i$2 < 0 || i$2 >= g.length) ? ($throwRuntimeError("index out of range"), undefined) : g[i$2])) ^ (((i$2 < 0 || i$2 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i$2]))) >> 0));
_i$2++;
}
};
load3 = function(in$1) {
var $ptr, in$1, r, x, x$1;
r = new $Int64(0, 0);
r = (new $Int64(0, (0 >= in$1.$length ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + 0])));
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));
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));
return r;
};
load4 = function(in$1) {
var $ptr, in$1, r, x, x$1, x$2;
r = new $Int64(0, 0);
r = (new $Int64(0, (0 >= in$1.$length ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + 0])));
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));
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));
r = (x$2 = $shiftLeft64((new $Int64(0, (3 >= in$1.$length ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + 3]))), 24), new $Int64(r.$high | x$2.$high, (r.$low | x$2.$low) >>> 0));
return r;
};
feFromBytes = function(dst, src) {
var $ptr, 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;
h0 = load4(new sliceType(src));
h1 = $shiftLeft64(load3($subslice(new sliceType(src), 4)), 6);
h2 = $shiftLeft64(load3($subslice(new sliceType(src), 7)), 5);
h3 = $shiftLeft64(load3($subslice(new sliceType(src), 10)), 3);
h4 = $shiftLeft64(load3($subslice(new sliceType(src), 13)), 2);
h5 = load4($subslice(new sliceType(src), 16));
h6 = $shiftLeft64(load3($subslice(new sliceType(src), 20)), 7);
h7 = $shiftLeft64(load3($subslice(new sliceType(src), 23)), 5);
h8 = $shiftLeft64(load3($subslice(new sliceType(src), 26)), 4);
h9 = $shiftLeft64(load3($subslice(new sliceType(src), 29)), 2);
carry = arrayType$1.zero();
carry[9] = $shiftRightInt64((new $Int64(h9.$high + 0, h9.$low + 16777216)), 25);
h0 = (x = $mul64(carry[9], new $Int64(0, 19)), new $Int64(h0.$high + x.$high, h0.$low + x.$low));
h9 = (x$1 = $shiftLeft64(carry[9], 25), new $Int64(h9.$high - x$1.$high, h9.$low - x$1.$low));
carry[1] = $shiftRightInt64((new $Int64(h1.$high + 0, h1.$low + 16777216)), 25);
h2 = (x$2 = carry[1], new $Int64(h2.$high + x$2.$high, h2.$low + x$2.$low));
h1 = (x$3 = $shiftLeft64(carry[1], 25), new $Int64(h1.$high - x$3.$high, h1.$low - x$3.$low));
carry[3] = $shiftRightInt64((new $Int64(h3.$high + 0, h3.$low + 16777216)), 25);
h4 = (x$4 = carry[3], new $Int64(h4.$high + x$4.$high, h4.$low + x$4.$low));
h3 = (x$5 = $shiftLeft64(carry[3], 25), new $Int64(h3.$high - x$5.$high, h3.$low - x$5.$low));
carry[5] = $shiftRightInt64((new $Int64(h5.$high + 0, h5.$low + 16777216)), 25);
h6 = (x$6 = carry[5], new $Int64(h6.$high + x$6.$high, h6.$low + x$6.$low));
h5 = (x$7 = $shiftLeft64(carry[5], 25), new $Int64(h5.$high - x$7.$high, h5.$low - x$7.$low));
carry[7] = $shiftRightInt64((new $Int64(h7.$high + 0, h7.$low + 16777216)), 25);
h8 = (x$8 = carry[7], new $Int64(h8.$high + x$8.$high, h8.$low + x$8.$low));
h7 = (x$9 = $shiftLeft64(carry[7], 25), new $Int64(h7.$high - x$9.$high, h7.$low - x$9.$low));
carry[0] = $shiftRightInt64((new $Int64(h0.$high + 0, h0.$low + 33554432)), 26);
h1 = (x$10 = carry[0], new $Int64(h1.$high + x$10.$high, h1.$low + x$10.$low));
h0 = (x$11 = $shiftLeft64(carry[0], 26), new $Int64(h0.$high - x$11.$high, h0.$low - x$11.$low));
carry[2] = $shiftRightInt64((new $Int64(h2.$high + 0, h2.$low + 33554432)), 26);
h3 = (x$12 = carry[2], new $Int64(h3.$high + x$12.$high, h3.$low + x$12.$low));
h2 = (x$13 = $shiftLeft64(carry[2], 26), new $Int64(h2.$high - x$13.$high, h2.$low - x$13.$low));
carry[4] = $shiftRightInt64((new $Int64(h4.$high + 0, h4.$low + 33554432)), 26);
h5 = (x$14 = carry[4], new $Int64(h5.$high + x$14.$high, h5.$low + x$14.$low));
h4 = (x$15 = $shiftLeft64(carry[4], 26), new $Int64(h4.$high - x$15.$high, h4.$low - x$15.$low));
carry[6] = $shiftRightInt64((new $Int64(h6.$high + 0, h6.$low + 33554432)), 26);
h7 = (x$16 = carry[6], new $Int64(h7.$high + x$16.$high, h7.$low + x$16.$low));
h6 = (x$17 = $shiftLeft64(carry[6], 26), new $Int64(h6.$high - x$17.$high, h6.$low - x$17.$low));
carry[8] = $shiftRightInt64((new $Int64(h8.$high + 0, h8.$low + 33554432)), 26);
h9 = (x$18 = carry[8], new $Int64(h9.$high + x$18.$high, h9.$low + x$18.$low));
h8 = (x$19 = $shiftLeft64(carry[8], 26), new $Int64(h8.$high - x$19.$high, h8.$low - x$19.$low));
dst.nilCheck, dst[0] = (((h0.$low + ((h0.$high >> 31) * 4294967296)) >> 0));
dst.nilCheck, dst[1] = (((h1.$low + ((h1.$high >> 31) * 4294967296)) >> 0));
dst.nilCheck, dst[2] = (((h2.$low + ((h2.$high >> 31) * 4294967296)) >> 0));
dst.nilCheck, dst[3] = (((h3.$low + ((h3.$high >> 31) * 4294967296)) >> 0));
dst.nilCheck, dst[4] = (((h4.$low + ((h4.$high >> 31) * 4294967296)) >> 0));
dst.nilCheck, dst[5] = (((h5.$low + ((h5.$high >> 31) * 4294967296)) >> 0));
dst.nilCheck, dst[6] = (((h6.$low + ((h6.$high >> 31) * 4294967296)) >> 0));
dst.nilCheck, dst[7] = (((h7.$low + ((h7.$high >> 31) * 4294967296)) >> 0));
dst.nilCheck, dst[8] = (((h8.$low + ((h8.$high >> 31) * 4294967296)) >> 0));
dst.nilCheck, dst[9] = (((h9.$low + ((h9.$high >> 31) * 4294967296)) >> 0));
};
feToBytes = function(s, h) {
var $ptr, carry, h, q, s;
carry = arrayType.zero();
q = ((($imul(19, (h.nilCheck, h[9]))) + 16777216 >> 0)) >> 25 >> 0;
q = (((h.nilCheck, h[0]) + q >> 0)) >> 26 >> 0;
q = (((h.nilCheck, h[1]) + q >> 0)) >> 25 >> 0;
q = (((h.nilCheck, h[2]) + q >> 0)) >> 26 >> 0;
q = (((h.nilCheck, h[3]) + q >> 0)) >> 25 >> 0;
q = (((h.nilCheck, h[4]) + q >> 0)) >> 26 >> 0;
q = (((h.nilCheck, h[5]) + q >> 0)) >> 25 >> 0;
q = (((h.nilCheck, h[6]) + q >> 0)) >> 26 >> 0;
q = (((h.nilCheck, h[7]) + q >> 0)) >> 25 >> 0;
q = (((h.nilCheck, h[8]) + q >> 0)) >> 26 >> 0;
q = (((h.nilCheck, h[9]) + q >> 0)) >> 25 >> 0;
h.nilCheck, h[0] = ((h.nilCheck, h[0]) + (($imul(19, q))) >> 0);
carry[0] = ((h.nilCheck, h[0]) >> 26 >> 0);
h.nilCheck, h[1] = ((h.nilCheck, h[1]) + (carry[0]) >> 0);
h.nilCheck, h[0] = ((h.nilCheck, h[0]) - ((carry[0] << 26 >> 0)) >> 0);
carry[1] = ((h.nilCheck, h[1]) >> 25 >> 0);
h.nilCheck, h[2] = ((h.nilCheck, h[2]) + (carry[1]) >> 0);
h.nilCheck, h[1] = ((h.nilCheck, h[1]) - ((carry[1] << 25 >> 0)) >> 0);
carry[2] = ((h.nilCheck, h[2]) >> 26 >> 0);
h.nilCheck, h[3] = ((h.nilCheck, h[3]) + (carry[2]) >> 0);
h.nilCheck, h[2] = ((h.nilCheck, h[2]) - ((carry[2] << 26 >> 0)) >> 0);
carry[3] = ((h.nilCheck, h[3]) >> 25 >> 0);
h.nilCheck, h[4] = ((h.nilCheck, h[4]) + (carry[3]) >> 0);
h.nilCheck, h[3] = ((h.nilCheck, h[3]) - ((carry[3] << 25 >> 0)) >> 0);
carry[4] = ((h.nilCheck, h[4]) >> 26 >> 0);
h.nilCheck, h[5] = ((h.nilCheck, h[5]) + (carry[4]) >> 0);
h.nilCheck, h[4] = ((h.nilCheck, h[4]) - ((carry[4] << 26 >> 0)) >> 0);
carry[5] = ((h.nilCheck, h[5]) >> 25 >> 0);
h.nilCheck, h[6] = ((h.nilCheck, h[6]) + (carry[5]) >> 0);
h.nilCheck, h[5] = ((h.nilCheck, h[5]) - ((carry[5] << 25 >> 0)) >> 0);
carry[6] = ((h.nilCheck, h[6]) >> 26 >> 0);
h.nilCheck, h[7] = ((h.nilCheck, h[7]) + (carry[6]) >> 0);
h.nilCheck, h[6] = ((h.nilCheck, h[6]) - ((carry[6] << 26 >> 0)) >> 0);
carry[7] = ((h.nilCheck, h[7]) >> 25 >> 0);
h.nilCheck, h[8] = ((h.nilCheck, h[8]) + (carry[7]) >> 0);
h.nilCheck, h[7] = ((h.nilCheck, h[7]) - ((carry[7] << 25 >> 0)) >> 0);
carry[8] = ((h.nilCheck, h[8]) >> 26 >> 0);
h.nilCheck, h[9] = ((h.nilCheck, h[9]) + (carry[8]) >> 0);
h.nilCheck, h[8] = ((h.nilCheck, h[8]) - ((carry[8] << 26 >> 0)) >> 0);
carry[9] = ((h.nilCheck, h[9]) >> 25 >> 0);
h.nilCheck, h[9] = ((h.nilCheck, h[9]) - ((carry[9] << 25 >> 0)) >> 0);
s.nilCheck, s[0] = ((((h.nilCheck, h[0]) >> 0 >> 0) << 24 >>> 24));
s.nilCheck, s[1] = ((((h.nilCheck, h[0]) >> 8 >> 0) << 24 >>> 24));
s.nilCheck, s[2] = ((((h.nilCheck, h[0]) >> 16 >> 0) << 24 >>> 24));
s.nilCheck, s[3] = ((((((h.nilCheck, h[0]) >> 24 >> 0)) | (((h.nilCheck, h[1]) << 2 >> 0))) << 24 >>> 24));
s.nilCheck, s[4] = ((((h.nilCheck, h[1]) >> 6 >> 0) << 24 >>> 24));
s.nilCheck, s[5] = ((((h.nilCheck, h[1]) >> 14 >> 0) << 24 >>> 24));
s.nilCheck, s[6] = ((((((h.nilCheck, h[1]) >> 22 >> 0)) | (((h.nilCheck, h[2]) << 3 >> 0))) << 24 >>> 24));
s.nilCheck, s[7] = ((((h.nilCheck, h[2]) >> 5 >> 0) << 24 >>> 24));
s.nilCheck, s[8] = ((((h.nilCheck, h[2]) >> 13 >> 0) << 24 >>> 24));
s.nilCheck, s[9] = ((((((h.nilCheck, h[2]) >> 21 >> 0)) | (((h.nilCheck, h[3]) << 5 >> 0))) << 24 >>> 24));
s.nilCheck, s[10] = ((((h.nilCheck, h[3]) >> 3 >> 0) << 24 >>> 24));
s.nilCheck, s[11] = ((((h.nilCheck, h[3]) >> 11 >> 0) << 24 >>> 24));
s.nilCheck, s[12] = ((((((h.nilCheck, h[3]) >> 19 >> 0)) | (((h.nilCheck, h[4]) << 6 >> 0))) << 24 >>> 24));
s.nilCheck, s[13] = ((((h.nilCheck, h[4]) >> 2 >> 0) << 24 >>> 24));
s.nilCheck, s[14] = ((((h.nilCheck, h[4]) >> 10 >> 0) << 24 >>> 24));
s.nilCheck, s[15] = ((((h.nilCheck, h[4]) >> 18 >> 0) << 24 >>> 24));
s.nilCheck, s[16] = ((((h.nilCheck, h[5]) >> 0 >> 0) << 24 >>> 24));
s.nilCheck, s[17] = ((((h.nilCheck, h[5]) >> 8 >> 0) << 24 >>> 24));
s.nilCheck, s[18] = ((((h.nilCheck, h[5]) >> 16 >> 0) << 24 >>> 24));
s.nilCheck, s[19] = ((((((h.nilCheck, h[5]) >> 24 >> 0)) | (((h.nilCheck, h[6]) << 1 >> 0))) << 24 >>> 24));
s.nilCheck, s[20] = ((((h.nilCheck, h[6]) >> 7 >> 0) << 24 >>> 24));
s.nilCheck, s[21] = ((((h.nilCheck, h[6]) >> 15 >> 0) << 24 >>> 24));
s.nilCheck, s[22] = ((((((h.nilCheck, h[6]) >> 23 >> 0)) | (((h.nilCheck, h[7]) << 3 >> 0))) << 24 >>> 24));
s.nilCheck, s[23] = ((((h.nilCheck, h[7]) >> 5 >> 0) << 24 >>> 24));
s.nilCheck, s[24] = ((((h.nilCheck, h[7]) >> 13 >> 0) << 24 >>> 24));
s.nilCheck, s[25] = ((((((h.nilCheck, h[7]) >> 21 >> 0)) | (((h.nilCheck, h[8]) << 4 >> 0))) << 24 >>> 24));
s.nilCheck, s[26] = ((((h.nilCheck, h[8]) >> 4 >> 0) << 24 >>> 24));
s.nilCheck, s[27] = ((((h.nilCheck, h[8]) >> 12 >> 0) << 24 >>> 24));
s.nilCheck, s[28] = ((((((h.nilCheck, h[8]) >> 20 >> 0)) | (((h.nilCheck, h[9]) << 6 >> 0))) << 24 >>> 24));
s.nilCheck, s[29] = ((((h.nilCheck, h[9]) >> 2 >> 0) << 24 >>> 24));
s.nilCheck, s[30] = ((((h.nilCheck, h[9]) >> 10 >> 0) << 24 >>> 24));
s.nilCheck, s[31] = ((((h.nilCheck, h[9]) >> 18 >> 0) << 24 >>> 24));
};
feMul = function(h, f, g) {
var $ptr, 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;
f0 = (f.nilCheck, f[0]);
f1 = (f.nilCheck, f[1]);
f2 = (f.nilCheck, f[2]);
f3 = (f.nilCheck, f[3]);
f4 = (f.nilCheck, f[4]);
f5 = (f.nilCheck, f[5]);
f6 = (f.nilCheck, f[6]);
f7 = (f.nilCheck, f[7]);
f8 = (f.nilCheck, f[8]);
f9 = (f.nilCheck, f[9]);
g0 = (g.nilCheck, g[0]);
g1 = (g.nilCheck, g[1]);
g2 = (g.nilCheck, g[2]);
g3 = (g.nilCheck, g[3]);
g4 = (g.nilCheck, g[4]);
g5 = (g.nilCheck, g[5]);
g6 = (g.nilCheck, g[6]);
g7 = (g.nilCheck, g[7]);
g8 = (g.nilCheck, g[8]);
g9 = (g.nilCheck, g[9]);
g1_19 = $imul(19, g1);
g2_19 = $imul(19, g2);
g3_19 = $imul(19, g3);
g4_19 = $imul(19, g4);
g5_19 = $imul(19, g5);
g6_19 = $imul(19, g6);
g7_19 = $imul(19, g7);
g8_19 = $imul(19, g8);
g9_19 = $imul(19, g9);
f1_2 = $imul(2, f1);
f3_2 = $imul(2, f3);
f5_2 = $imul(2, f5);
f7_2 = $imul(2, f7);
f9_2 = $imul(2, f9);
f0g0 = $mul64((new $Int64(0, f0)), (new $Int64(0, g0)));
f0g1 = $mul64((new $Int64(0, f0)), (new $Int64(0, g1)));
f0g2 = $mul64((new $Int64(0, f0)), (new $Int64(0, g2)));
f0g3 = $mul64((new $Int64(0, f0)), (new $Int64(0, g3)));
f0g4 = $mul64((new $Int64(0, f0)), (new $Int64(0, g4)));
f0g5 = $mul64((new $Int64(0, f0)), (new $Int64(0, g5)));
f0g6 = $mul64((new $Int64(0, f0)), (new $Int64(0, g6)));
f0g7 = $mul64((new $Int64(0, f0)), (new $Int64(0, g7)));
f0g8 = $mul64((new $Int64(0, f0)), (new $Int64(0, g8)));
f0g9 = $mul64((new $Int64(0, f0)), (new $Int64(0, g9)));
f1g0 = $mul64((new $Int64(0, f1)), (new $Int64(0, g0)));
f1g1_2 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, g1)));
f1g2 = $mul64((new $Int64(0, f1)), (new $Int64(0, g2)));
f1g3_2 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, g3)));
f1g4 = $mul64((new $Int64(0, f1)), (new $Int64(0, g4)));
f1g5_2 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, g5)));
f1g6 = $mul64((new $Int64(0, f1)), (new $Int64(0, g6)));
f1g7_2 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, g7)));
f1g8 = $mul64((new $Int64(0, f1)), (new $Int64(0, g8)));
f1g9_38 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, g9_19)));
f2g0 = $mul64((new $Int64(0, f2)), (new $Int64(0, g0)));
f2g1 = $mul64((new $Int64(0, f2)), (new $Int64(0, g1)));
f2g2 = $mul64((new $Int64(0, f2)), (new $Int64(0, g2)));
f2g3 = $mul64((new $Int64(0, f2)), (new $Int64(0, g3)));
f2g4 = $mul64((new $Int64(0, f2)), (new $Int64(0, g4)));
f2g5 = $mul64((new $Int64(0, f2)), (new $Int64(0, g5)));
f2g6 = $mul64((new $Int64(0, f2)), (new $Int64(0, g6)));
f2g7 = $mul64((new $Int64(0, f2)), (new $Int64(0, g7)));
f2g8_19 = $mul64((new $Int64(0, f2)), (new $Int64(0, g8_19)));
f2g9_19 = $mul64((new $Int64(0, f2)), (new $Int64(0, g9_19)));
f3g0 = $mul64((new $Int64(0, f3)), (new $Int64(0, g0)));
f3g1_2 = $mul64((new $Int64(0, f3_2)), (new $Int64(0, g1)));
f3g2 = $mul64((new $Int64(0, f3)), (new $Int64(0, g2)));
f3g3_2 = $mul64((new $Int64(0, f3_2)), (new $Int64(0, g3)));
f3g4 = $mul64((new $Int64(0, f3)), (new $Int64(0, g4)));
f3g5_2 = $mul64((new $Int64(0, f3_2)), (new $Int64(0, g5)));
f3g6 = $mul64((new $Int64(0, f3)), (new $Int64(0, g6)));
f3g7_38 = $mul64((new $Int64(0, f3_2)), (new $Int64(0, g7_19)));
f3g8_19 = $mul64((new $Int64(0, f3)), (new $Int64(0, g8_19)));
f3g9_38 = $mul64((new $Int64(0, f3_2)), (new $Int64(0, g9_19)));
f4g0 = $mul64((new $Int64(0, f4)), (new $Int64(0, g0)));
f4g1 = $mul64((new $Int64(0, f4)), (new $Int64(0, g1)));
f4g2 = $mul64((new $Int64(0, f4)), (new $Int64(0, g2)));
f4g3 = $mul64((new $Int64(0, f4)), (new $Int64(0, g3)));
f4g4 = $mul64((new $Int64(0, f4)), (new $Int64(0, g4)));
f4g5 = $mul64((new $Int64(0, f4)), (new $Int64(0, g5)));
f4g6_19 = $mul64((new $Int64(0, f4)), (new $Int64(0, g6_19)));
f4g7_19 = $mul64((new $Int64(0, f4)), (new $Int64(0, g7_19)));
f4g8_19 = $mul64((new $Int64(0, f4)), (new $Int64(0, g8_19)));
f4g9_19 = $mul64((new $Int64(0, f4)), (new $Int64(0, g9_19)));
f5g0 = $mul64((new $Int64(0, f5)), (new $Int64(0, g0)));
f5g1_2 = $mul64((new $Int64(0, f5_2)), (new $Int64(0, g1)));
f5g2 = $mul64((new $Int64(0, f5)), (new $Int64(0, g2)));
f5g3_2 = $mul64((new $Int64(0, f5_2)), (new $Int64(0, g3)));
f5g4 = $mul64((new $Int64(0, f5)), (new $Int64(0, g4)));
f5g5_38 = $mul64((new $Int64(0, f5_2)), (new $Int64(0, g5_19)));
f5g6_19 = $mul64((new $Int64(0, f5)), (new $Int64(0, g6_19)));
f5g7_38 = $mul64((new $Int64(0, f5_2)), (new $Int64(0, g7_19)));
f5g8_19 = $mul64((new $Int64(0, f5)), (new $Int64(0, g8_19)));
f5g9_38 = $mul64((new $Int64(0, f5_2)), (new $Int64(0, g9_19)));
f6g0 = $mul64((new $Int64(0, f6)), (new $Int64(0, g0)));
f6g1 = $mul64((new $Int64(0, f6)), (new $Int64(0, g1)));
f6g2 = $mul64((new $Int64(0, f6)), (new $Int64(0, g2)));
f6g3 = $mul64((new $Int64(0, f6)), (new $Int64(0, g3)));
f6g4_19 = $mul64((new $Int64(0, f6)), (new $Int64(0, g4_19)));
f6g5_19 = $mul64((new $Int64(0, f6)), (new $Int64(0, g5_19)));
f6g6_19 = $mul64((new $Int64(0, f6)), (new $Int64(0, g6_19)));
f6g7_19 = $mul64((new $Int64(0, f6)), (new $Int64(0, g7_19)));
f6g8_19 = $mul64((new $Int64(0, f6)), (new $Int64(0, g8_19)));
f6g9_19 = $mul64((new $Int64(0, f6)), (new $Int64(0, g9_19)));
f7g0 = $mul64((new $Int64(0, f7)), (new $Int64(0, g0)));
f7g1_2 = $mul64((new $Int64(0, f7_2)), (new $Int64(0, g1)));
f7g2 = $mul64((new $Int64(0, f7)), (new $Int64(0, g2)));
f7g3_38 = $mul64((new $Int64(0, f7_2)), (new $Int64(0, g3_19)));
f7g4_19 = $mul64((new $Int64(0, f7)), (new $Int64(0, g4_19)));
f7g5_38 = $mul64((new $Int64(0, f7_2)), (new $Int64(0, g5_19)));
f7g6_19 = $mul64((new $Int64(0, f7)), (new $Int64(0, g6_19)));
f7g7_38 = $mul64((new $Int64(0, f7_2)), (new $Int64(0, g7_19)));
f7g8_19 = $mul64((new $Int64(0, f7)), (new $Int64(0, g8_19)));
f7g9_38 = $mul64((new $Int64(0, f7_2)), (new $Int64(0, g9_19)));
f8g0 = $mul64((new $Int64(0, f8)), (new $Int64(0, g0)));
f8g1 = $mul64((new $Int64(0, f8)), (new $Int64(0, g1)));
f8g2_19 = $mul64((new $Int64(0, f8)), (new $Int64(0, g2_19)));
f8g3_19 = $mul64((new $Int64(0, f8)), (new $Int64(0, g3_19)));
f8g4_19 = $mul64((new $Int64(0, f8)), (new $Int64(0, g4_19)));
f8g5_19 = $mul64((new $Int64(0, f8)), (new $Int64(0, g5_19)));
f8g6_19 = $mul64((new $Int64(0, f8)), (new $Int64(0, g6_19)));
f8g7_19 = $mul64((new $Int64(0, f8)), (new $Int64(0, g7_19)));
f8g8_19 = $mul64((new $Int64(0, f8)), (new $Int64(0, g8_19)));
f8g9_19 = $mul64((new $Int64(0, f8)), (new $Int64(0, g9_19)));
f9g0 = $mul64((new $Int64(0, f9)), (new $Int64(0, g0)));
f9g1_38 = $mul64((new $Int64(0, f9_2)), (new $Int64(0, g1_19)));
f9g2_19 = $mul64((new $Int64(0, f9)), (new $Int64(0, g2_19)));
f9g3_38 = $mul64((new $Int64(0, f9_2)), (new $Int64(0, g3_19)));
f9g4_19 = $mul64((new $Int64(0, f9)), (new $Int64(0, g4_19)));
f9g5_38 = $mul64((new $Int64(0, f9_2)), (new $Int64(0, g5_19)));
f9g6_19 = $mul64((new $Int64(0, f9)), (new $Int64(0, g6_19)));
f9g7_38 = $mul64((new $Int64(0, f9_2)), (new $Int64(0, g7_19)));
f9g8_19 = $mul64((new $Int64(0, f9)), (new $Int64(0, g8_19)));
f9g9_38 = $mul64((new $Int64(0, f9_2)), (new $Int64(0, g9_19)));
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));
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));
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));
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));
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));
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));
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));
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));
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));
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));
carry = arrayType$1.zero();
carry[0] = $shiftRightInt64((new $Int64(h0.$high + 0, h0.$low + 33554432)), 26);
h1 = (x$80 = carry[0], new $Int64(h1.$high + x$80.$high, h1.$low + x$80.$low));
h0 = (x$81 = $shiftLeft64(carry[0], 26), new $Int64(h0.$high - x$81.$high, h0.$low - x$81.$low));
carry[4] = $shiftRightInt64((new $Int64(h4.$high + 0, h4.$low + 33554432)), 26);
h5 = (x$82 = carry[4], new $Int64(h5.$high + x$82.$high, h5.$low + x$82.$low));
h4 = (x$83 = $shiftLeft64(carry[4], 26), new $Int64(h4.$high - x$83.$high, h4.$low - x$83.$low));
carry[1] = $shiftRightInt64((new $Int64(h1.$high + 0, h1.$low + 16777216)), 25);
h2 = (x$84 = carry[1], new $Int64(h2.$high + x$84.$high, h2.$low + x$84.$low));
h1 = (x$85 = $shiftLeft64(carry[1], 25), new $Int64(h1.$high - x$85.$high, h1.$low - x$85.$low));
carry[5] = $shiftRightInt64((new $Int64(h5.$high + 0, h5.$low + 16777216)), 25);
h6 = (x$86 = carry[5], new $Int64(h6.$high + x$86.$high, h6.$low + x$86.$low));
h5 = (x$87 = $shiftLeft64(carry[5], 25), new $Int64(h5.$high - x$87.$high, h5.$low - x$87.$low));
carry[2] = $shiftRightInt64((new $Int64(h2.$high + 0, h2.$low + 33554432)), 26);
h3 = (x$88 = carry[2], new $Int64(h3.$high + x$88.$high, h3.$low + x$88.$low));
h2 = (x$89 = $shiftLeft64(carry[2], 26), new $Int64(h2.$high - x$89.$high, h2.$low - x$89.$low));
carry[6] = $shiftRightInt64((new $Int64(h6.$high + 0, h6.$low + 33554432)), 26);
h7 = (x$90 = carry[6], new $Int64(h7.$high + x$90.$high, h7.$low + x$90.$low));
h6 = (x$91 = $shiftLeft64(carry[6], 26), new $Int64(h6.$high - x$91.$high, h6.$low - x$91.$low));
carry[3] = $shiftRightInt64((new $Int64(h3.$high + 0, h3.$low + 16777216)), 25);
h4 = (x$92 = carry[3], new $Int64(h4.$high + x$92.$high, h4.$low + x$92.$low));
h3 = (x$93 = $shiftLeft64(carry[3], 25), new $Int64(h3.$high - x$93.$high, h3.$low - x$93.$low));
carry[7] = $shiftRightInt64((new $Int64(h7.$high + 0, h7.$low + 16777216)), 25);
h8 = (x$94 = carry[7], new $Int64(h8.$high + x$94.$high, h8.$low + x$94.$low));
h7 = (x$95 = $shiftLeft64(carry[7], 25), new $Int64(h7.$high - x$95.$high, h7.$low - x$95.$low));
carry[4] = $shiftRightInt64((new $Int64(h4.$high + 0, h4.$low + 33554432)), 26);
h5 = (x$96 = carry[4], new $Int64(h5.$high + x$96.$high, h5.$low + x$96.$low));
h4 = (x$97 = $shiftLeft64(carry[4], 26), new $Int64(h4.$high - x$97.$high, h4.$low - x$97.$low));
carry[8] = $shiftRightInt64((new $Int64(h8.$high + 0, h8.$low + 33554432)), 26);
h9 = (x$98 = carry[8], new $Int64(h9.$high + x$98.$high, h9.$low + x$98.$low));
h8 = (x$99 = $shiftLeft64(carry[8], 26), new $Int64(h8.$high - x$99.$high, h8.$low - x$99.$low));
carry[9] = $shiftRightInt64((new $Int64(h9.$high + 0, h9.$low + 16777216)), 25);
h0 = (x$100 = $mul64(carry[9], new $Int64(0, 19)), new $Int64(h0.$high + x$100.$high, h0.$low + x$100.$low));
h9 = (x$101 = $shiftLeft64(carry[9], 25), new $Int64(h9.$high - x$101.$high, h9.$low - x$101.$low));
carry[0] = $shiftRightInt64((new $Int64(h0.$high + 0, h0.$low + 33554432)), 26);
h1 = (x$102 = carry[0], new $Int64(h1.$high + x$102.$high, h1.$low + x$102.$low));
h0 = (x$103 = $shiftLeft64(carry[0], 26), new $Int64(h0.$high - x$103.$high, h0.$low - x$103.$low));
h.nilCheck, h[0] = (((h0.$low + ((h0.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[1] = (((h1.$low + ((h1.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[2] = (((h2.$low + ((h2.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[3] = (((h3.$low + ((h3.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[4] = (((h4.$low + ((h4.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[5] = (((h5.$low + ((h5.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[6] = (((h6.$low + ((h6.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[7] = (((h7.$low + ((h7.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[8] = (((h8.$low + ((h8.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[9] = (((h9.$low + ((h9.$high >> 31) * 4294967296)) >> 0));
};
feSquare = function(h, f) {
var $ptr, 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;
f0 = (f.nilCheck, f[0]);
f1 = (f.nilCheck, f[1]);
f2 = (f.nilCheck, f[2]);
f3 = (f.nilCheck, f[3]);
f4 = (f.nilCheck, f[4]);
f5 = (f.nilCheck, f[5]);
f6 = (f.nilCheck, f[6]);
f7 = (f.nilCheck, f[7]);
f8 = (f.nilCheck, f[8]);
f9 = (f.nilCheck, f[9]);
f0_2 = $imul(2, f0);
f1_2 = $imul(2, f1);
f2_2 = $imul(2, f2);
f3_2 = $imul(2, f3);
f4_2 = $imul(2, f4);
f5_2 = $imul(2, f5);
f6_2 = $imul(2, f6);
f7_2 = $imul(2, f7);
f5_38 = $imul(38, f5);
f6_19 = $imul(19, f6);
f7_38 = $imul(38, f7);
f8_19 = $imul(19, f8);
f9_38 = $imul(38, f9);
f0f0 = $mul64((new $Int64(0, f0)), (new $Int64(0, f0)));
f0f1_2 = $mul64((new $Int64(0, f0_2)), (new $Int64(0, f1)));
f0f2_2 = $mul64((new $Int64(0, f0_2)), (new $Int64(0, f2)));
f0f3_2 = $mul64((new $Int64(0, f0_2)), (new $Int64(0, f3)));
f0f4_2 = $mul64((new $Int64(0, f0_2)), (new $Int64(0, f4)));
f0f5_2 = $mul64((new $Int64(0, f0_2)), (new $Int64(0, f5)));
f0f6_2 = $mul64((new $Int64(0, f0_2)), (new $Int64(0, f6)));
f0f7_2 = $mul64((new $Int64(0, f0_2)), (new $Int64(0, f7)));
f0f8_2 = $mul64((new $Int64(0, f0_2)), (new $Int64(0, f8)));
f0f9_2 = $mul64((new $Int64(0, f0_2)), (new $Int64(0, f9)));
f1f1_2 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, f1)));
f1f2_2 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, f2)));
f1f3_4 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, f3_2)));
f1f4_2 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, f4)));
f1f5_4 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, f5_2)));
f1f6_2 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, f6)));
f1f7_4 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, f7_2)));
f1f8_2 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, f8)));
f1f9_76 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, f9_38)));
f2f2 = $mul64((new $Int64(0, f2)), (new $Int64(0, f2)));
f2f3_2 = $mul64((new $Int64(0, f2_2)), (new $Int64(0, f3)));
f2f4_2 = $mul64((new $Int64(0, f2_2)), (new $Int64(0, f4)));
f2f5_2 = $mul64((new $Int64(0, f2_2)), (new $Int64(0, f5)));
f2f6_2 = $mul64((new $Int64(0, f2_2)), (new $Int64(0, f6)));
f2f7_2 = $mul64((new $Int64(0, f2_2)), (new $Int64(0, f7)));
f2f8_38 = $mul64((new $Int64(0, f2_2)), (new $Int64(0, f8_19)));
f2f9_38 = $mul64((new $Int64(0, f2)), (new $Int64(0, f9_38)));
f3f3_2 = $mul64((new $Int64(0, f3_2)), (new $Int64(0, f3)));
f3f4_2 = $mul64((new $Int64(0, f3_2)), (new $Int64(0, f4)));
f3f5_4 = $mul64((new $Int64(0, f3_2)), (new $Int64(0, f5_2)));
f3f6_2 = $mul64((new $Int64(0, f3_2)), (new $Int64(0, f6)));
f3f7_76 = $mul64((new $Int64(0, f3_2)), (new $Int64(0, f7_38)));
f3f8_38 = $mul64((new $Int64(0, f3_2)), (new $Int64(0, f8_19)));
f3f9_76 = $mul64((new $Int64(0, f3_2)), (new $Int64(0, f9_38)));
f4f4 = $mul64((new $Int64(0, f4)), (new $Int64(0, f4)));
f4f5_2 = $mul64((new $Int64(0, f4_2)), (new $Int64(0, f5)));
f4f6_38 = $mul64((new $Int64(0, f4_2)), (new $Int64(0, f6_19)));
f4f7_38 = $mul64((new $Int64(0, f4)), (new $Int64(0, f7_38)));
f4f8_38 = $mul64((new $Int64(0, f4_2)), (new $Int64(0, f8_19)));
f4f9_38 = $mul64((new $Int64(0, f4)), (new $Int64(0, f9_38)));
f5f5_38 = $mul64((new $Int64(0, f5)), (new $Int64(0, f5_38)));
f5f6_38 = $mul64((new $Int64(0, f5_2)), (new $Int64(0, f6_19)));
f5f7_76 = $mul64((new $Int64(0, f5_2)), (new $Int64(0, f7_38)));
f5f8_38 = $mul64((new $Int64(0, f5_2)), (new $Int64(0, f8_19)));
f5f9_76 = $mul64((new $Int64(0, f5_2)), (new $Int64(0, f9_38)));
f6f6_19 = $mul64((new $Int64(0, f6)), (new $Int64(0, f6_19)));
f6f7_38 = $mul64((new $Int64(0, f6)), (new $Int64(0, f7_38)));
f6f8_38 = $mul64((new $Int64(0, f6_2)), (new $Int64(0, f8_19)));
f6f9_38 = $mul64((new $Int64(0, f6)), (new $Int64(0, f9_38)));
f7f7_38 = $mul64((new $Int64(0, f7)), (new $Int64(0, f7_38)));
f7f8_38 = $mul64((new $Int64(0, f7_2)), (new $Int64(0, f8_19)));
f7f9_76 = $mul64((new $Int64(0, f7_2)), (new $Int64(0, f9_38)));
f8f8_19 = $mul64((new $Int64(0, f8)), (new $Int64(0, f8_19)));
f8f9_38 = $mul64((new $Int64(0, f8)), (new $Int64(0, f9_38)));
f9f9_38 = $mul64((new $Int64(0, f9)), (new $Int64(0, f9_38)));
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));
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));
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));
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));
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));
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));
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));
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));
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));
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));
carry = arrayType$1.zero();
carry[0] = $shiftRightInt64((new $Int64(h0.$high + 0, h0.$low + 33554432)), 26);
h1 = (x$35 = carry[0], new $Int64(h1.$high + x$35.$high, h1.$low + x$35.$low));
h0 = (x$36 = $shiftLeft64(carry[0], 26), new $Int64(h0.$high - x$36.$high, h0.$low - x$36.$low));
carry[4] = $shiftRightInt64((new $Int64(h4.$high + 0, h4.$low + 33554432)), 26);
h5 = (x$37 = carry[4], new $Int64(h5.$high + x$37.$high, h5.$low + x$37.$low));
h4 = (x$38 = $shiftLeft64(carry[4], 26), new $Int64(h4.$high - x$38.$high, h4.$low - x$38.$low));
carry[1] = $shiftRightInt64((new $Int64(h1.$high + 0, h1.$low + 16777216)), 25);
h2 = (x$39 = carry[1], new $Int64(h2.$high + x$39.$high, h2.$low + x$39.$low));
h1 = (x$40 = $shiftLeft64(carry[1], 25), new $Int64(h1.$high - x$40.$high, h1.$low - x$40.$low));
carry[5] = $shiftRightInt64((new $Int64(h5.$high + 0, h5.$low + 16777216)), 25);
h6 = (x$41 = carry[5], new $Int64(h6.$high + x$41.$high, h6.$low + x$41.$low));
h5 = (x$42 = $shiftLeft64(carry[5], 25), new $Int64(h5.$high - x$42.$high, h5.$low - x$42.$low));
carry[2] = $shiftRightInt64((new $Int64(h2.$high + 0, h2.$low + 33554432)), 26);
h3 = (x$43 = carry[2], new $Int64(h3.$high + x$43.$high, h3.$low + x$43.$low));
h2 = (x$44 = $shiftLeft64(carry[2], 26), new $Int64(h2.$high - x$44.$high, h2.$low - x$44.$low));
carry[6] = $shiftRightInt64((new $Int64(h6.$high + 0, h6.$low + 33554432)), 26);
h7 = (x$45 = carry[6], new $Int64(h7.$high + x$45.$high, h7.$low + x$45.$low));
h6 = (x$46 = $shiftLeft64(carry[6], 26), new $Int64(h6.$high - x$46.$high, h6.$low - x$46.$low));
carry[3] = $shiftRightInt64((new $Int64(h3.$high + 0, h3.$low + 16777216)), 25);
h4 = (x$47 = carry[3], new $Int64(h4.$high + x$47.$high, h4.$low + x$47.$low));
h3 = (x$48 = $shiftLeft64(carry[3], 25), new $Int64(h3.$high - x$48.$high, h3.$low - x$48.$low));
carry[7] = $shiftRightInt64((new $Int64(h7.$high + 0, h7.$low + 16777216)), 25);
h8 = (x$49 = carry[7], new $Int64(h8.$high + x$49.$high, h8.$low + x$49.$low));
h7 = (x$50 = $shiftLeft64(carry[7], 25), new $Int64(h7.$high - x$50.$high, h7.$low - x$50.$low));
carry[4] = $shiftRightInt64((new $Int64(h4.$high + 0, h4.$low + 33554432)), 26);
h5 = (x$51 = carry[4], new $Int64(h5.$high + x$51.$high, h5.$low + x$51.$low));
h4 = (x$52 = $shiftLeft64(carry[4], 26), new $Int64(h4.$high - x$52.$high, h4.$low - x$52.$low));
carry[8] = $shiftRightInt64((new $Int64(h8.$high + 0, h8.$low + 33554432)), 26);
h9 = (x$53 = carry[8], new $Int64(h9.$high + x$53.$high, h9.$low + x$53.$low));
h8 = (x$54 = $shiftLeft64(carry[8], 26), new $Int64(h8.$high - x$54.$high, h8.$low - x$54.$low));
carry[9] = $shiftRightInt64((new $Int64(h9.$high + 0, h9.$low + 16777216)), 25);
h0 = (x$55 = $mul64(carry[9], new $Int64(0, 19)), new $Int64(h0.$high + x$55.$high, h0.$low + x$55.$low));
h9 = (x$56 = $shiftLeft64(carry[9], 25), new $Int64(h9.$high - x$56.$high, h9.$low - x$56.$low));
carry[0] = $shiftRightInt64((new $Int64(h0.$high + 0, h0.$low + 33554432)), 26);
h1 = (x$57 = carry[0], new $Int64(h1.$high + x$57.$high, h1.$low + x$57.$low));
h0 = (x$58 = $shiftLeft64(carry[0], 26), new $Int64(h0.$high - x$58.$high, h0.$low - x$58.$low));
h.nilCheck, h[0] = (((h0.$low + ((h0.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[1] = (((h1.$low + ((h1.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[2] = (((h2.$low + ((h2.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[3] = (((h3.$low + ((h3.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[4] = (((h4.$low + ((h4.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[5] = (((h5.$low + ((h5.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[6] = (((h6.$low + ((h6.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[7] = (((h7.$low + ((h7.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[8] = (((h8.$low + ((h8.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[9] = (((h9.$low + ((h9.$high >> 31) * 4294967296)) >> 0));
};
feMul121666 = function(h, f) {
var $ptr, 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;
h0 = $mul64((new $Int64(0, (f.nilCheck, f[0]))), new $Int64(0, 121666));
h1 = $mul64((new $Int64(0, (f.nilCheck, f[1]))), new $Int64(0, 121666));
h2 = $mul64((new $Int64(0, (f.nilCheck, f[2]))), new $Int64(0, 121666));
h3 = $mul64((new $Int64(0, (f.nilCheck, f[3]))), new $Int64(0, 121666));
h4 = $mul64((new $Int64(0, (f.nilCheck, f[4]))), new $Int64(0, 121666));
h5 = $mul64((new $Int64(0, (f.nilCheck, f[5]))), new $Int64(0, 121666));
h6 = $mul64((new $Int64(0, (f.nilCheck, f[6]))), new $Int64(0, 121666));
h7 = $mul64((new $Int64(0, (f.nilCheck, f[7]))), new $Int64(0, 121666));
h8 = $mul64((new $Int64(0, (f.nilCheck, f[8]))), new $Int64(0, 121666));
h9 = $mul64((new $Int64(0, (f.nilCheck, f[9]))), new $Int64(0, 121666));
carry = arrayType$1.zero();
carry[9] = $shiftRightInt64((new $Int64(h9.$high + 0, h9.$low + 16777216)), 25);
h0 = (x = $mul64(carry[9], new $Int64(0, 19)), new $Int64(h0.$high + x.$high, h0.$low + x.$low));
h9 = (x$1 = $shiftLeft64(carry[9], 25), new $Int64(h9.$high - x$1.$high, h9.$low - x$1.$low));
carry[1] = $shiftRightInt64((new $Int64(h1.$high + 0, h1.$low + 16777216)), 25);
h2 = (x$2 = carry[1], new $Int64(h2.$high + x$2.$high, h2.$low + x$2.$low));
h1 = (x$3 = $shiftLeft64(carry[1], 25), new $Int64(h1.$high - x$3.$high, h1.$low - x$3.$low));
carry[3] = $shiftRightInt64((new $Int64(h3.$high + 0, h3.$low + 16777216)), 25);
h4 = (x$4 = carry[3], new $Int64(h4.$high + x$4.$high, h4.$low + x$4.$low));
h3 = (x$5 = $shiftLeft64(carry[3], 25), new $Int64(h3.$high - x$5.$high, h3.$low - x$5.$low));
carry[5] = $shiftRightInt64((new $Int64(h5.$high + 0, h5.$low + 16777216)), 25);
h6 = (x$6 = carry[5], new $Int64(h6.$high + x$6.$high, h6.$low + x$6.$low));
h5 = (x$7 = $shiftLeft64(carry[5], 25), new $Int64(h5.$high - x$7.$high, h5.$low - x$7.$low));
carry[7] = $shiftRightInt64((new $Int64(h7.$high + 0, h7.$low + 16777216)), 25);
h8 = (x$8 = carry[7], new $Int64(h8.$high + x$8.$high, h8.$low + x$8.$low));
h7 = (x$9 = $shiftLeft64(carry[7], 25), new $Int64(h7.$high - x$9.$high, h7.$low - x$9.$low));
carry[0] = $shiftRightInt64((new $Int64(h0.$high + 0, h0.$low + 33554432)), 26);
h1 = (x$10 = carry[0], new $Int64(h1.$high + x$10.$high, h1.$low + x$10.$low));
h0 = (x$11 = $shiftLeft64(carry[0], 26), new $Int64(h0.$high - x$11.$high, h0.$low - x$11.$low));
carry[2] = $shiftRightInt64((new $Int64(h2.$high + 0, h2.$low + 33554432)), 26);
h3 = (x$12 = carry[2], new $Int64(h3.$high + x$12.$high, h3.$low + x$12.$low));
h2 = (x$13 = $shiftLeft64(carry[2], 26), new $Int64(h2.$high - x$13.$high, h2.$low - x$13.$low));
carry[4] = $shiftRightInt64((new $Int64(h4.$high + 0, h4.$low + 33554432)), 26);
h5 = (x$14 = carry[4], new $Int64(h5.$high + x$14.$high, h5.$low + x$14.$low));
h4 = (x$15 = $shiftLeft64(carry[4], 26), new $Int64(h4.$high - x$15.$high, h4.$low - x$15.$low));
carry[6] = $shiftRightInt64((new $Int64(h6.$high + 0, h6.$low + 33554432)), 26);
h7 = (x$16 = carry[6], new $Int64(h7.$high + x$16.$high, h7.$low + x$16.$low));
h6 = (x$17 = $shiftLeft64(carry[6], 26), new $Int64(h6.$high - x$17.$high, h6.$low - x$17.$low));
carry[8] = $shiftRightInt64((new $Int64(h8.$high + 0, h8.$low + 33554432)), 26);
h9 = (x$18 = carry[8], new $Int64(h9.$high + x$18.$high, h9.$low + x$18.$low));
h8 = (x$19 = $shiftLeft64(carry[8], 26), new $Int64(h8.$high - x$19.$high, h8.$low - x$19.$low));
h.nilCheck, h[0] = (((h0.$low + ((h0.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[1] = (((h1.$low + ((h1.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[2] = (((h2.$low + ((h2.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[3] = (((h3.$low + ((h3.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[4] = (((h4.$low + ((h4.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[5] = (((h5.$low + ((h5.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[6] = (((h6.$low + ((h6.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[7] = (((h7.$low + ((h7.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[8] = (((h8.$low + ((h8.$high >> 31) * 4294967296)) >> 0));
h.nilCheck, h[9] = (((h9.$low + ((h9.$high >> 31) * 4294967296)) >> 0));
};
feInvert = function(out, z) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, i, out, t0, t1, t2, t3, z;
_tmp = arrayType.zero();
_tmp$1 = arrayType.zero();
_tmp$2 = arrayType.zero();
_tmp$3 = arrayType.zero();
t0 = $clone(_tmp, fieldElement);
t1 = $clone(_tmp$1, fieldElement);
t2 = $clone(_tmp$2, fieldElement);
t3 = $clone(_tmp$3, fieldElement);
i = 0;
feSquare(t0, z);
i = 1;
while (true) {
if (!(i < 1)) { break; }
feSquare(t0, t0);
i = i + (1) >> 0;
}
feSquare(t1, t0);
i = 1;
while (true) {
if (!(i < 2)) { break; }
feSquare(t1, t1);
i = i + (1) >> 0;
}
feMul(t1, z, t1);
feMul(t0, t0, t1);
feSquare(t2, t0);
i = 1;
while (true) {
if (!(i < 1)) { break; }
feSquare(t2, t2);
i = i + (1) >> 0;
}
feMul(t1, t1, t2);
feSquare(t2, t1);
i = 1;
while (true) {
if (!(i < 5)) { break; }
feSquare(t2, t2);
i = i + (1) >> 0;
}
feMul(t1, t2, t1);
feSquare(t2, t1);
i = 1;
while (true) {
if (!(i < 10)) { break; }
feSquare(t2, t2);
i = i + (1) >> 0;
}
feMul(t2, t2, t1);
feSquare(t3, t2);
i = 1;
while (true) {
if (!(i < 20)) { break; }
feSquare(t3, t3);
i = i + (1) >> 0;
}
feMul(t2, t3, t2);
feSquare(t2, t2);
i = 1;
while (true) {
if (!(i < 10)) { break; }
feSquare(t2, t2);
i = i + (1) >> 0;
}
feMul(t1, t2, t1);
feSquare(t2, t1);
i = 1;
while (true) {
if (!(i < 50)) { break; }
feSquare(t2, t2);
i = i + (1) >> 0;
}
feMul(t2, t2, t1);
feSquare(t3, t2);
i = 1;
while (true) {
if (!(i < 100)) { break; }
feSquare(t3, t3);
i = i + (1) >> 0;
}
feMul(t2, t3, t2);
feSquare(t2, t2);
i = 1;
while (true) {
if (!(i < 50)) { break; }
feSquare(t2, t2);
i = i + (1) >> 0;
}
feMul(t1, t2, t1);
feSquare(t1, t1);
i = 1;
while (true) {
if (!(i < 5)) { break; }
feSquare(t1, t1);
i = i + (1) >> 0;
}
feMul(out, t1, t0);
};
scalarMult = function(out, in$1, base) {
var $ptr, _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;
e = arrayType$2.zero();
$copySlice(new sliceType(e), new sliceType(in$1));
e[0] = ((e[0] & (248)) >>> 0);
e[31] = ((e[31] & (127)) >>> 0);
e[31] = ((e[31] | (64)) >>> 0);
_tmp = arrayType.zero();
_tmp$1 = arrayType.zero();
_tmp$2 = arrayType.zero();
_tmp$3 = arrayType.zero();
_tmp$4 = arrayType.zero();
_tmp$5 = arrayType.zero();
_tmp$6 = arrayType.zero();
x1 = $clone(_tmp, fieldElement);
x2 = $clone(_tmp$1, fieldElement);
z2 = $clone(_tmp$2, fieldElement);
x3 = $clone(_tmp$3, fieldElement);
z3 = $clone(_tmp$4, fieldElement);
tmp0 = $clone(_tmp$5, fieldElement);
tmp1 = $clone(_tmp$6, fieldElement);
feFromBytes(x1, base);
feOne(x2);
feCopy(x3, x1);
feOne(z3);
swap = 0;
pos = 254;
while (true) {
if (!(pos >= 0)) { break; }
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;
b = (b & (1)) >>> 0;
swap = (swap ^ (((b >> 0)))) >> 0;
feCSwap(x2, x3, swap);
feCSwap(z2, z3, swap);
swap = ((b >> 0));
feSub(tmp0, x3, z3);
feSub(tmp1, x2, z2);
feAdd(x2, x2, z2);
feAdd(z2, x3, z3);
feMul(z3, tmp0, x2);
feMul(z2, z2, tmp1);
feSquare(tmp0, tmp1);
feSquare(tmp1, x2);
feAdd(x3, z3, z2);
feSub(z2, z3, z2);
feMul(x2, tmp1, tmp0);
feSub(tmp1, tmp1, tmp0);
feSquare(z2, z2);
feMul121666(z3, tmp1);
feSquare(x3, x3);
feAdd(tmp0, tmp0, z3);
feMul(z3, x1, z2);
feMul(z2, tmp1, tmp0);
pos = pos - (1) >> 0;
}
feCSwap(x2, x3, swap);
feCSwap(z2, z3, swap);
feInvert(z2, z2);
feMul(x2, x2, z2);
feToBytes(out, x2);
};
ScalarMult = function(dst, in$1, base) {
var $ptr, base, dst, in$1;
scalarMult(dst, in$1, base);
};
$pkg.ScalarMult = ScalarMult;
ScalarBaseMult = function(dst, in$1) {
var $ptr, dst, in$1;
ScalarMult(dst, in$1, basePoint);
};
$pkg.ScalarBaseMult = ScalarBaseMult;
fieldElement.init($Int32, 10);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
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]);
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["crypto/tls"] = (function() {
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, signatureAndHash, 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, ptrType$2, sliceType$5, sliceType$6, sliceType$7, sliceType$8, arrayType$1, ptrType$3, arrayType$2, arrayType$3, ptrType$4, sliceType$9, ptrType$8, ptrType$9, arrayType$4, sliceType$10, ptrType$10, ptrType$11, ptrType$12, ptrType$13, sliceType$11, sliceType$12, ptrType$14, ptrType$15, ptrType$16, ptrType$17, ptrType$18, sliceType$13, 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$14, 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, isSupportedSignatureAndHash, extractPadding, extractPaddingSSL30, roundUp, padToBlockSize, 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;
bytes = $packages["bytes"];
list = $packages["container/list"];
crypto = $packages["crypto"];
aes = $packages["crypto/aes"];
cipher = $packages["crypto/cipher"];
des = $packages["crypto/des"];
ecdsa = $packages["crypto/ecdsa"];
elliptic = $packages["crypto/elliptic"];
hmac = $packages["crypto/hmac"];
cipherhw = $packages["crypto/internal/cipherhw"];
md5 = $packages["crypto/md5"];
rand = $packages["crypto/rand"];
rc4 = $packages["crypto/rc4"];
rsa = $packages["crypto/rsa"];
sha1 = $packages["crypto/sha1"];
sha256 = $packages["crypto/sha256"];
sha512 = $packages["crypto/sha512"];
subtle = $packages["crypto/subtle"];
x509 = $packages["crypto/x509"];
asn1 = $packages["encoding/asn1"];
pem = $packages["encoding/pem"];
errors = $packages["errors"];
fmt = $packages["fmt"];
hash = $packages["hash"];
io = $packages["io"];
ioutil = $packages["io/ioutil"];
big = $packages["math/big"];
net = $packages["net"];
strconv = $packages["strconv"];
strings = $packages["strings"];
sync = $packages["sync"];
atomic = $packages["sync/atomic"];
time = $packages["time"];
chacha20poly1305 = $packages["vendor/golang_org/x/crypto/chacha20poly1305"];
curve25519 = $packages["vendor/golang_org/x/crypto/curve25519"];
alert = $pkg.alert = $newType(1, $kindUint8, "tls.alert", true, "crypto/tls", false, null);
keyAgreement = $pkg.keyAgreement = $newType(8, $kindInterface, "tls.keyAgreement", true, "crypto/tls", false, null);
cipherSuite = $pkg.cipherSuite = $newType(0, $kindStruct, "tls.cipherSuite", true, "crypto/tls", false, function(id_, keyLen_, macLen_, ivLen_, ka_, flags_, cipher_, mac_, aead_) {
this.$val = this;
if (arguments.length === 0) {
this.id = 0;
this.keyLen = 0;
this.macLen = 0;
this.ivLen = 0;
this.ka = $throwNilPointerError;
this.flags = 0;
this.cipher = $throwNilPointerError;
this.mac = $throwNilPointerError;
this.aead = $throwNilPointerError;
return;
}
this.id = id_;
this.keyLen = keyLen_;
this.macLen = macLen_;
this.ivLen = ivLen_;
this.ka = ka_;
this.flags = flags_;
this.cipher = cipher_;
this.mac = mac_;
this.aead = aead_;
});
macFunction = $pkg.macFunction = $newType(8, $kindInterface, "tls.macFunction", true, "crypto/tls", false, null);
aead = $pkg.aead = $newType(8, $kindInterface, "tls.aead", true, "crypto/tls", false, null);
fixedNonceAEAD = $pkg.fixedNonceAEAD = $newType(0, $kindStruct, "tls.fixedNonceAEAD", true, "crypto/tls", false, function(nonce_, aead_) {
this.$val = this;
if (arguments.length === 0) {
this.nonce = arrayType$1.zero();
this.aead = $ifaceNil;
return;
}
this.nonce = nonce_;
this.aead = aead_;
});
xorNonceAEAD = $pkg.xorNonceAEAD = $newType(0, $kindStruct, "tls.xorNonceAEAD", true, "crypto/tls", false, function(nonceMask_, aead_) {
this.$val = this;
if (arguments.length === 0) {
this.nonceMask = arrayType$1.zero();
this.aead = $ifaceNil;
return;
}
this.nonceMask = nonceMask_;
this.aead = aead_;
});
ssl30MAC = $pkg.ssl30MAC = $newType(0, $kindStruct, "tls.ssl30MAC", true, "crypto/tls", false, function(h_, key_) {
this.$val = this;
if (arguments.length === 0) {
this.h = $ifaceNil;
this.key = sliceType$8.nil;
return;
}
this.h = h_;
this.key = key_;
});
constantTimeHash = $pkg.constantTimeHash = $newType(8, $kindInterface, "tls.constantTimeHash", true, "crypto/tls", false, null);
cthWrapper = $pkg.cthWrapper = $newType(0, $kindStruct, "tls.cthWrapper", true, "crypto/tls", false, function(h_) {
this.$val = this;
if (arguments.length === 0) {
this.h = $ifaceNil;
return;
}
this.h = h_;
});
tls10MAC = $pkg.tls10MAC = $newType(0, $kindStruct, "tls.tls10MAC", true, "crypto/tls", false, function(h_) {
this.$val = this;
if (arguments.length === 0) {
this.h = $ifaceNil;
return;
}
this.h = h_;
});
recordType = $pkg.recordType = $newType(1, $kindUint8, "tls.recordType", true, "crypto/tls", false, null);
CurveID = $pkg.CurveID = $newType(2, $kindUint16, "tls.CurveID", true, "crypto/tls", true, null);
signatureAndHash = $pkg.signatureAndHash = $newType(0, $kindStruct, "tls.signatureAndHash", true, "crypto/tls", false, function(hash_, signature_) {
this.$val = this;
if (arguments.length === 0) {
this.hash = 0;
this.signature = 0;
return;
}
this.hash = hash_;
this.signature = signature_;
});
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_) {
this.$val = this;
if (arguments.length === 0) {
this.Version = 0;
this.HandshakeComplete = false;
this.DidResume = false;
this.CipherSuite = 0;
this.NegotiatedProtocol = "";
this.NegotiatedProtocolIsMutual = false;
this.ServerName = "";
this.PeerCertificates = sliceType$11.nil;
this.VerifiedChains = sliceType$12.nil;
this.SignedCertificateTimestamps = sliceType$10.nil;
this.OCSPResponse = sliceType$8.nil;
this.TLSUnique = sliceType$8.nil;
return;
}
this.Version = Version_;
this.HandshakeComplete = HandshakeComplete_;
this.DidResume = DidResume_;
this.CipherSuite = CipherSuite_;
this.NegotiatedProtocol = NegotiatedProtocol_;
this.NegotiatedProtocolIsMutual = NegotiatedProtocolIsMutual_;
this.ServerName = ServerName_;
this.PeerCertificates = PeerCertificates_;
this.VerifiedChains = VerifiedChains_;
this.SignedCertificateTimestamps = SignedCertificateTimestamps_;
this.OCSPResponse = OCSPResponse_;
this.TLSUnique = TLSUnique_;
});
ClientAuthType = $pkg.ClientAuthType = $newType(4, $kindInt, "tls.ClientAuthType", true, "crypto/tls", true, null);
ClientSessionState = $pkg.ClientSessionState = $newType(0, $kindStruct, "tls.ClientSessionState", true, "crypto/tls", true, function(sessionTicket_, vers_, cipherSuite_, masterSecret_, serverCertificates_, verifiedChains_) {
this.$val = this;
if (arguments.length === 0) {
this.sessionTicket = sliceType$8.nil;
this.vers = 0;
this.cipherSuite = 0;
this.masterSecret = sliceType$8.nil;
this.serverCertificates = sliceType$11.nil;
this.verifiedChains = sliceType$12.nil;
return;
}
this.sessionTicket = sessionTicket_;
this.vers = vers_;
this.cipherSuite = cipherSuite_;
this.masterSecret = masterSecret_;
this.serverCertificates = serverCertificates_;
this.verifiedChains = verifiedChains_;
});
ClientSessionCache = $pkg.ClientSessionCache = $newType(8, $kindInterface, "tls.ClientSessionCache", true, "crypto/tls", true, null);
SignatureScheme = $pkg.SignatureScheme = $newType(2, $kindUint16, "tls.SignatureScheme", true, "crypto/tls", true, null);
ClientHelloInfo = $pkg.ClientHelloInfo = $newType(0, $kindStruct, "tls.ClientHelloInfo", true, "crypto/tls", true, function(CipherSuites_, ServerName_, SupportedCurves_, SupportedPoints_, SignatureSchemes_, SupportedProtos_, SupportedVersions_, Conn_) {
this.$val = this;
if (arguments.length === 0) {
this.CipherSuites = sliceType$2.nil;
this.ServerName = "";
this.SupportedCurves = sliceType$3.nil;
this.SupportedPoints = sliceType$8.nil;
this.SignatureSchemes = sliceType$7.nil;
this.SupportedProtos = sliceType$1.nil;
this.SupportedVersions = sliceType$2.nil;
this.Conn = $ifaceNil;
return;
}
this.CipherSuites = CipherSuites_;
this.ServerName = ServerName_;
this.SupportedCurves = SupportedCurves_;
this.SupportedPoints = SupportedPoints_;
this.SignatureSchemes = SignatureSchemes_;
this.SupportedProtos = SupportedProtos_;
this.SupportedVersions = SupportedVersions_;
this.Conn = Conn_;
});
CertificateRequestInfo = $pkg.CertificateRequestInfo = $newType(0, $kindStruct, "tls.CertificateRequestInfo", true, "crypto/tls", true, function(AcceptableCAs_, SignatureSchemes_) {
this.$val = this;
if (arguments.length === 0) {
this.AcceptableCAs = sliceType$10.nil;
this.SignatureSchemes = sliceType$7.nil;
return;
}
this.AcceptableCAs = AcceptableCAs_;
this.SignatureSchemes = SignatureSchemes_;
});
RenegotiationSupport = $pkg.RenegotiationSupport = $newType(4, $kindInt, "tls.RenegotiationSupport", true, "crypto/tls", true, null);
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_, originalConfig_) {
this.$val = this;
if (arguments.length === 0) {
this.Rand = $ifaceNil;
this.Time = $throwNilPointerError;
this.Certificates = sliceType.nil;
this.NameToCertificate = false;
this.GetCertificate = $throwNilPointerError;
this.GetClientCertificate = $throwNilPointerError;
this.GetConfigForClient = $throwNilPointerError;
this.VerifyPeerCertificate = $throwNilPointerError;
this.RootCAs = ptrType.nil;
this.NextProtos = sliceType$1.nil;
this.ServerName = "";
this.ClientAuth = 0;
this.ClientCAs = ptrType.nil;
this.InsecureSkipVerify = false;
this.CipherSuites = sliceType$2.nil;
this.PreferServerCipherSuites = false;
this.SessionTicketsDisabled = false;
this.SessionTicketKey = arrayType.zero();
this.ClientSessionCache = $ifaceNil;
this.MinVersion = 0;
this.MaxVersion = 0;
this.CurvePreferences = sliceType$3.nil;
this.DynamicRecordSizingDisabled = false;
this.Renegotiation = 0;
this.KeyLogWriter = $ifaceNil;
this.serverInitOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
this.mutex = new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0);
this.sessionTicketKeys = sliceType$4.nil;
this.originalConfig = ptrType$1.nil;
return;
}
this.Rand = Rand_;
this.Time = Time_;
this.Certificates = Certificates_;
this.NameToCertificate = NameToCertificate_;
this.GetCertificate = GetCertificate_;
this.GetClientCertificate = GetClientCertificate_;
this.GetConfigForClient = GetConfigForClient_;
this.VerifyPeerCertificate = VerifyPeerCertificate_;
this.RootCAs = RootCAs_;
this.NextProtos = NextProtos_;
this.ServerName = ServerName_;
this.ClientAuth = ClientAuth_;
this.ClientCAs = ClientCAs_;
this.InsecureSkipVerify = InsecureSkipVerify_;
this.CipherSuites = CipherSuites_;
this.PreferServerCipherSuites = PreferServerCipherSuites_;
this.SessionTicketsDisabled = SessionTicketsDisabled_;
this.SessionTicketKey = SessionTicketKey_;
this.ClientSessionCache = ClientSessionCache_;
this.MinVersion = MinVersion_;
this.MaxVersion = MaxVersion_;
this.CurvePreferences = CurvePreferences_;
this.DynamicRecordSizingDisabled = DynamicRecordSizingDisabled_;
this.Renegotiation = Renegotiation_;
this.KeyLogWriter = KeyLogWriter_;
this.serverInitOnce = serverInitOnce_;
this.mutex = mutex_;
this.sessionTicketKeys = sessionTicketKeys_;
this.originalConfig = originalConfig_;
});
ticketKey = $pkg.ticketKey = $newType(0, $kindStruct, "tls.ticketKey", true, "crypto/tls", false, function(keyName_, aesKey_, hmacKey_) {
this.$val = this;
if (arguments.length === 0) {
this.keyName = arrayType$2.zero();
this.aesKey = arrayType$2.zero();
this.hmacKey = arrayType$2.zero();
return;
}
this.keyName = keyName_;
this.aesKey = aesKey_;
this.hmacKey = hmacKey_;
});
Certificate = $pkg.Certificate = $newType(0, $kindStruct, "tls.Certificate", true, "crypto/tls", true, function(Certificate_, PrivateKey_, OCSPStaple_, SignedCertificateTimestamps_, Leaf_) {
this.$val = this;
if (arguments.length === 0) {
this.Certificate = sliceType$10.nil;
this.PrivateKey = $ifaceNil;
this.OCSPStaple = sliceType$8.nil;
this.SignedCertificateTimestamps = sliceType$10.nil;
this.Leaf = ptrType$13.nil;
return;
}
this.Certificate = Certificate_;
this.PrivateKey = PrivateKey_;
this.OCSPStaple = OCSPStaple_;
this.SignedCertificateTimestamps = SignedCertificateTimestamps_;
this.Leaf = Leaf_;
});
ecdsaSignature = $pkg.ecdsaSignature = $newType(0, $kindStruct, "tls.ecdsaSignature", true, "crypto/tls", false, function(R_, S_) {
this.$val = this;
if (arguments.length === 0) {
this.R = ptrType$3.nil;
this.S = ptrType$3.nil;
return;
}
this.R = R_;
this.S = S_;
});
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_, activeCall_, tmp_) {
this.$val = this;
if (arguments.length === 0) {
this.conn = $ifaceNil;
this.isClient = false;
this.handshakeMutex = new sync.Mutex.ptr(0, 0);
this.handshakeCond = ptrType$12.nil;
this.handshakeErr = $ifaceNil;
this.vers = 0;
this.haveVers = false;
this.config = ptrType$1.nil;
this.handshakeComplete = false;
this.handshakes = 0;
this.didResume = false;
this.cipherSuite = 0;
this.ocspResponse = sliceType$8.nil;
this.scts = sliceType$10.nil;
this.peerCertificates = sliceType$11.nil;
this.verifiedChains = sliceType$12.nil;
this.serverName = "";
this.secureRenegotiation = false;
this.clientFinishedIsFirst = false;
this.closeNotifyErr = $ifaceNil;
this.closeNotifySent = false;
this.clientFinished = arrayType$1.zero();
this.serverFinished = arrayType$1.zero();
this.clientProtocol = "";
this.clientProtocolFallback = false;
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$8.nil, sliceType$8.nil);
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$8.nil, sliceType$8.nil);
this.rawInput = ptrType$9.nil;
this.input = ptrType$9.nil;
this.hand = new bytes.Buffer.ptr(sliceType$8.nil, 0, arrayType$3.zero(), 0);
this.buffering = false;
this.sendBuf = sliceType$8.nil;
this.bytesSent = new $Int64(0, 0);
this.packetsSent = new $Int64(0, 0);
this.activeCall = 0;
this.tmp = arrayType$2.zero();
return;
}
this.conn = conn_;
this.isClient = isClient_;
this.handshakeMutex = handshakeMutex_;
this.handshakeCond = handshakeCond_;
this.handshakeErr = handshakeErr_;
this.vers = vers_;
this.haveVers = haveVers_;
this.config = config_;
this.handshakeComplete = handshakeComplete_;
this.handshakes = handshakes_;
this.didResume = didResume_;
this.cipherSuite = cipherSuite_;
this.ocspResponse = ocspResponse_;
this.scts = scts_;
this.peerCertificates = peerCertificates_;
this.verifiedChains = verifiedChains_;
this.serverName = serverName_;
this.secureRenegotiation = secureRenegotiation_;
this.clientFinishedIsFirst = clientFinishedIsFirst_;
this.closeNotifyErr = closeNotifyErr_;
this.closeNotifySent = closeNotifySent_;
this.clientFinished = clientFinished_;
this.serverFinished = serverFinished_;
this.clientProtocol = clientProtocol_;
this.clientProtocolFallback = clientProtocolFallback_;
this.in$25 = in$25_;
this.out = out_;
this.rawInput = rawInput_;
this.input = input_;
this.hand = hand_;
this.buffering = buffering_;
this.sendBuf = sendBuf_;
this.bytesSent = bytesSent_;
this.packetsSent = packetsSent_;
this.activeCall = activeCall_;
this.tmp = tmp_;
});
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_) {
this.$val = this;
if (arguments.length === 0) {
this.Mutex = new sync.Mutex.ptr(0, 0);
this.err = $ifaceNil;
this.version = 0;
this.cipher = $ifaceNil;
this.mac = $ifaceNil;
this.seq = arrayType$7.zero();
this.bfree = ptrType$9.nil;
this.additionalData = arrayType$8.zero();
this.nextCipher = $ifaceNil;
this.nextMac = $ifaceNil;
this.inDigestBuf = sliceType$8.nil;
this.outDigestBuf = sliceType$8.nil;
return;
}
this.Mutex = Mutex_;
this.err = err_;
this.version = version_;
this.cipher = cipher_;
this.mac = mac_;
this.seq = seq_;
this.bfree = bfree_;
this.additionalData = additionalData_;
this.nextCipher = nextCipher_;
this.nextMac = nextMac_;
this.inDigestBuf = inDigestBuf_;
this.outDigestBuf = outDigestBuf_;
});
cbcMode = $pkg.cbcMode = $newType(8, $kindInterface, "tls.cbcMode", true, "crypto/tls", false, null);
block = $pkg.block = $newType(0, $kindStruct, "tls.block", true, "crypto/tls", false, function(data_, off_, link_) {
this.$val = this;
if (arguments.length === 0) {
this.data = sliceType$8.nil;
this.off = 0;
this.link = ptrType$9.nil;
return;
}
this.data = data_;
this.off = off_;
this.link = link_;
});
RecordHeaderError = $pkg.RecordHeaderError = $newType(0, $kindStruct, "tls.RecordHeaderError", true, "crypto/tls", true, function(Msg_, RecordHeader_) {
this.$val = this;
if (arguments.length === 0) {
this.Msg = "";
this.RecordHeader = arrayType$4.zero();
return;
}
this.Msg = Msg_;
this.RecordHeader = RecordHeader_;
});
clientHandshakeState = $pkg.clientHandshakeState = $newType(0, $kindStruct, "tls.clientHandshakeState", true, "crypto/tls", false, function(c_, serverHello_, hello_, suite_, finishedHash_, masterSecret_, session_) {
this.$val = this;
if (arguments.length === 0) {
this.c = ptrType$15.nil;
this.serverHello = ptrType$14.nil;
this.hello = ptrType$16.nil;
this.suite = ptrType$2.nil;
this.finishedHash = new finishedHash.ptr($ifaceNil, $ifaceNil, $ifaceNil, $ifaceNil, sliceType$8.nil, 0, $throwNilPointerError);
this.masterSecret = sliceType$8.nil;
this.session = ptrType$8.nil;
return;
}
this.c = c_;
this.serverHello = serverHello_;
this.hello = hello_;
this.suite = suite_;
this.finishedHash = finishedHash_;
this.masterSecret = masterSecret_;
this.session = session_;
});
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_, signatureAndHashes_, secureRenegotiation_, secureRenegotiationSupported_, alpnProtocols_) {
this.$val = this;
if (arguments.length === 0) {
this.raw = sliceType$8.nil;
this.vers = 0;
this.random = sliceType$8.nil;
this.sessionId = sliceType$8.nil;
this.cipherSuites = sliceType$2.nil;
this.compressionMethods = sliceType$8.nil;
this.nextProtoNeg = false;
this.serverName = "";
this.ocspStapling = false;
this.scts = false;
this.supportedCurves = sliceType$3.nil;
this.supportedPoints = sliceType$8.nil;
this.ticketSupported = false;
this.sessionTicket = sliceType$8.nil;
this.signatureAndHashes = sliceType$6.nil;
this.secureRenegotiation = sliceType$8.nil;
this.secureRenegotiationSupported = false;
this.alpnProtocols = sliceType$1.nil;
return;
}
this.raw = raw_;
this.vers = vers_;
this.random = random_;
this.sessionId = sessionId_;
this.cipherSuites = cipherSuites_;
this.compressionMethods = compressionMethods_;
this.nextProtoNeg = nextProtoNeg_;
this.serverName = serverName_;
this.ocspStapling = ocspStapling_;
this.scts = scts_;
this.supportedCurves = supportedCurves_;
this.supportedPoints = supportedPoints_;
this.ticketSupported = ticketSupported_;
this.sessionTicket = sessionTicket_;
this.signatureAndHashes = signatureAndHashes_;
this.secureRenegotiation = secureRenegotiation_;
this.secureRenegotiationSupported = secureRenegotiationSupported_;
this.alpnProtocols = alpnProtocols_;
});
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_) {
this.$val = this;
if (arguments.length === 0) {
this.raw = sliceType$8.nil;
this.vers = 0;
this.random = sliceType$8.nil;
this.sessionId = sliceType$8.nil;
this.cipherSuite = 0;
this.compressionMethod = 0;
this.nextProtoNeg = false;
this.nextProtos = sliceType$1.nil;
this.ocspStapling = false;
this.scts = sliceType$10.nil;
this.ticketSupported = false;
this.secureRenegotiation = sliceType$8.nil;
this.secureRenegotiationSupported = false;
this.alpnProtocol = "";
return;
}
this.raw = raw_;
this.vers = vers_;
this.random = random_;
this.sessionId = sessionId_;
this.cipherSuite = cipherSuite_;
this.compressionMethod = compressionMethod_;
this.nextProtoNeg = nextProtoNeg_;
this.nextProtos = nextProtos_;
this.ocspStapling = ocspStapling_;
this.scts = scts_;
this.ticketSupported = ticketSupported_;
this.secureRenegotiation = secureRenegotiation_;
this.secureRenegotiationSupported = secureRenegotiationSupported_;
this.alpnProtocol = alpnProtocol_;
});
certificateMsg = $pkg.certificateMsg = $newType(0, $kindStruct, "tls.certificateMsg", true, "crypto/tls", false, function(raw_, certificates_) {
this.$val = this;
if (arguments.length === 0) {
this.raw = sliceType$8.nil;
this.certificates = sliceType$10.nil;
return;
}
this.raw = raw_;
this.certificates = certificates_;
});
serverKeyExchangeMsg = $pkg.serverKeyExchangeMsg = $newType(0, $kindStruct, "tls.serverKeyExchangeMsg", true, "crypto/tls", false, function(raw_, key_) {
this.$val = this;
if (arguments.length === 0) {
this.raw = sliceType$8.nil;
this.key = sliceType$8.nil;
return;
}
this.raw = raw_;
this.key = key_;
});
certificateStatusMsg = $pkg.certificateStatusMsg = $newType(0, $kindStruct, "tls.certificateStatusMsg", true, "crypto/tls", false, function(raw_, statusType_, response_) {
this.$val = this;
if (arguments.length === 0) {
this.raw = sliceType$8.nil;
this.statusType = 0;
this.response = sliceType$8.nil;
return;
}
this.raw = raw_;
this.statusType = statusType_;
this.response = response_;
});
serverHelloDoneMsg = $pkg.serverHelloDoneMsg = $newType(0, $kindStruct, "tls.serverHelloDoneMsg", true, "crypto/tls", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
clientKeyExchangeMsg = $pkg.clientKeyExchangeMsg = $newType(0, $kindStruct, "tls.clientKeyExchangeMsg", true, "crypto/tls", false, function(raw_, ciphertext_) {
this.$val = this;
if (arguments.length === 0) {
this.raw = sliceType$8.nil;
this.ciphertext = sliceType$8.nil;
return;
}
this.raw = raw_;
this.ciphertext = ciphertext_;
});
finishedMsg = $pkg.finishedMsg = $newType(0, $kindStruct, "tls.finishedMsg", true, "crypto/tls", false, function(raw_, verifyData_) {
this.$val = this;
if (arguments.length === 0) {
this.raw = sliceType$8.nil;
this.verifyData = sliceType$8.nil;
return;
}
this.raw = raw_;
this.verifyData = verifyData_;
});
nextProtoMsg = $pkg.nextProtoMsg = $newType(0, $kindStruct, "tls.nextProtoMsg", true, "crypto/tls", false, function(raw_, proto_) {
this.$val = this;
if (arguments.length === 0) {
this.raw = sliceType$8.nil;
this.proto = "";
return;
}
this.raw = raw_;
this.proto = proto_;
});
certificateRequestMsg = $pkg.certificateRequestMsg = $newType(0, $kindStruct, "tls.certificateRequestMsg", true, "crypto/tls", false, function(raw_, hasSignatureAndHash_, certificateTypes_, signatureAndHashes_, certificateAuthorities_) {
this.$val = this;
if (arguments.length === 0) {
this.raw = sliceType$8.nil;
this.hasSignatureAndHash = false;
this.certificateTypes = sliceType$8.nil;
this.signatureAndHashes = sliceType$6.nil;
this.certificateAuthorities = sliceType$10.nil;
return;
}
this.raw = raw_;
this.hasSignatureAndHash = hasSignatureAndHash_;
this.certificateTypes = certificateTypes_;
this.signatureAndHashes = signatureAndHashes_;
this.certificateAuthorities = certificateAuthorities_;
});
certificateVerifyMsg = $pkg.certificateVerifyMsg = $newType(0, $kindStruct, "tls.certificateVerifyMsg", true, "crypto/tls", false, function(raw_, hasSignatureAndHash_, signatureAndHash_, signature_) {
this.$val = this;
if (arguments.length === 0) {
this.raw = sliceType$8.nil;
this.hasSignatureAndHash = false;
this.signatureAndHash = new signatureAndHash.ptr(0, 0);
this.signature = sliceType$8.nil;
return;
}
this.raw = raw_;
this.hasSignatureAndHash = hasSignatureAndHash_;
this.signatureAndHash = signatureAndHash_;
this.signature = signature_;
});
newSessionTicketMsg = $pkg.newSessionTicketMsg = $newType(0, $kindStruct, "tls.newSessionTicketMsg", true, "crypto/tls", false, function(raw_, ticket_) {
this.$val = this;
if (arguments.length === 0) {
this.raw = sliceType$8.nil;
this.ticket = sliceType$8.nil;
return;
}
this.raw = raw_;
this.ticket = ticket_;
});
helloRequestMsg = $pkg.helloRequestMsg = $newType(0, $kindStruct, "tls.helloRequestMsg", true, "crypto/tls", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
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_) {
this.$val = this;
if (arguments.length === 0) {
this.c = ptrType$15.nil;
this.clientHello = ptrType$16.nil;
this.hello = ptrType$14.nil;
this.suite = ptrType$2.nil;
this.ellipticOk = false;
this.ecdsaOk = false;
this.rsaDecryptOk = false;
this.rsaSignOk = false;
this.sessionState = ptrType$30.nil;
this.finishedHash = new finishedHash.ptr($ifaceNil, $ifaceNil, $ifaceNil, $ifaceNil, sliceType$8.nil, 0, $throwNilPointerError);
this.masterSecret = sliceType$8.nil;
this.certsFromClient = sliceType$10.nil;
this.cert = ptrType$4.nil;
this.cachedClientHelloInfo = ptrType$31.nil;
return;
}
this.c = c_;
this.clientHello = clientHello_;
this.hello = hello_;
this.suite = suite_;
this.ellipticOk = ellipticOk_;
this.ecdsaOk = ecdsaOk_;
this.rsaDecryptOk = rsaDecryptOk_;
this.rsaSignOk = rsaSignOk_;
this.sessionState = sessionState_;
this.finishedHash = finishedHash_;
this.masterSecret = masterSecret_;
this.certsFromClient = certsFromClient_;
this.cert = cert_;
this.cachedClientHelloInfo = cachedClientHelloInfo_;
});
rsaKeyAgreement = $pkg.rsaKeyAgreement = $newType(0, $kindStruct, "tls.rsaKeyAgreement", true, "crypto/tls", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
ecdheKeyAgreement = $pkg.ecdheKeyAgreement = $newType(0, $kindStruct, "tls.ecdheKeyAgreement", true, "crypto/tls", false, function(version_, sigType_, privateKey_, curveid_, publicKey_, x_, y_) {
this.$val = this;
if (arguments.length === 0) {
this.version = 0;
this.sigType = 0;
this.privateKey = sliceType$8.nil;
this.curveid = 0;
this.publicKey = sliceType$8.nil;
this.x = ptrType$3.nil;
this.y = ptrType$3.nil;
return;
}
this.version = version_;
this.sigType = sigType_;
this.privateKey = privateKey_;
this.curveid = curveid_;
this.publicKey = publicKey_;
this.x = x_;
this.y = y_;
});
finishedHash = $pkg.finishedHash = $newType(0, $kindStruct, "tls.finishedHash", true, "crypto/tls", false, function(client_, server_, clientMD5_, serverMD5_, buffer_, version_, prf_) {
this.$val = this;
if (arguments.length === 0) {
this.client = $ifaceNil;
this.server = $ifaceNil;
this.clientMD5 = $ifaceNil;
this.serverMD5 = $ifaceNil;
this.buffer = sliceType$8.nil;
this.version = 0;
this.prf = $throwNilPointerError;
return;
}
this.client = client_;
this.server = server_;
this.clientMD5 = clientMD5_;
this.serverMD5 = serverMD5_;
this.buffer = buffer_;
this.version = version_;
this.prf = prf_;
});
sessionState = $pkg.sessionState = $newType(0, $kindStruct, "tls.sessionState", true, "crypto/tls", false, function(vers_, cipherSuite_, masterSecret_, certificates_, usedOldKey_) {
this.$val = this;
if (arguments.length === 0) {
this.vers = 0;
this.cipherSuite = 0;
this.masterSecret = sliceType$8.nil;
this.certificates = sliceType$10.nil;
this.usedOldKey = false;
return;
}
this.vers = vers_;
this.cipherSuite = cipherSuite_;
this.masterSecret = masterSecret_;
this.certificates = certificates_;
this.usedOldKey = usedOldKey_;
});
listener = $pkg.listener = $newType(0, $kindStruct, "tls.listener", true, "crypto/tls", false, function(Listener_, config_) {
this.$val = this;
if (arguments.length === 0) {
this.Listener = $ifaceNil;
this.config = ptrType$1.nil;
return;
}
this.Listener = Listener_;
this.config = config_;
});
timeoutError = $pkg.timeoutError = $newType(0, $kindStruct, "tls.timeoutError", true, "crypto/tls", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
sliceType = $sliceType(Certificate);
ptrType = $ptrType(x509.CertPool);
sliceType$1 = $sliceType($String);
sliceType$2 = $sliceType($Uint16);
arrayType = $arrayType($Uint8, 32);
sliceType$3 = $sliceType(CurveID);
sliceType$4 = $sliceType(ticketKey);
ptrType$1 = $ptrType(Config);
ptrType$2 = $ptrType(cipherSuite);
sliceType$5 = $sliceType(ptrType$2);
sliceType$6 = $sliceType(signatureAndHash);
sliceType$7 = $sliceType(SignatureScheme);
sliceType$8 = $sliceType($Uint8);
arrayType$1 = $arrayType($Uint8, 12);
ptrType$3 = $ptrType(big.Int);
arrayType$2 = $arrayType($Uint8, 16);
arrayType$3 = $arrayType($Uint8, 64);
ptrType$4 = $ptrType(Certificate);
sliceType$9 = $sliceType($emptyInterface);
ptrType$8 = $ptrType(ClientSessionState);
ptrType$9 = $ptrType(block);
arrayType$4 = $arrayType($Uint8, 5);
sliceType$10 = $sliceType(sliceType$8);
ptrType$10 = $ptrType($Int32);
ptrType$11 = $ptrType(helloRequestMsg);
ptrType$12 = $ptrType(sync.Cond);
ptrType$13 = $ptrType(x509.Certificate);
sliceType$11 = $sliceType(ptrType$13);
sliceType$12 = $sliceType(sliceType$11);
ptrType$14 = $ptrType(serverHelloMsg);
ptrType$15 = $ptrType(Conn);
ptrType$16 = $ptrType(clientHelloMsg);
ptrType$17 = $ptrType(certificateMsg);
ptrType$18 = $ptrType(time.Location);
sliceType$13 = $sliceType(x509.ExtKeyUsage);
ptrType$19 = $ptrType(rsa.PublicKey);
ptrType$20 = $ptrType(ecdsa.PublicKey);
ptrType$21 = $ptrType(certificateStatusMsg);
ptrType$22 = $ptrType(serverKeyExchangeMsg);
ptrType$23 = $ptrType(certificateRequestMsg);
ptrType$24 = $ptrType(serverHelloDoneMsg);
ptrType$25 = $ptrType(clientKeyExchangeMsg);
arrayType$5 = $arrayType($Uint8, 24);
ptrType$26 = $ptrType(finishedMsg);
ptrType$27 = $ptrType(newSessionTicketMsg);
ptrType$28 = $ptrType(nextProtoMsg);
ptrType$29 = $ptrType(certificateVerifyMsg);
ptrType$30 = $ptrType(sessionState);
ptrType$31 = $ptrType(ClientHelloInfo);
arrayType$6 = $arrayType($Uint8, 11);
arrayType$7 = $arrayType($Uint8, 8);
arrayType$8 = $arrayType($Uint8, 13);
ptrType$32 = $ptrType(net.Resolver);
ptrType$33 = $ptrType(pem.Block);
ptrType$34 = $ptrType(rsa.PrivateKey);
ptrType$35 = $ptrType(ecdsa.PrivateKey);
funcType = $funcType([$Uint16], [keyAgreement], false);
funcType$1 = $funcType([sliceType$8, sliceType$8, $Bool], [$emptyInterface], false);
funcType$2 = $funcType([$Uint16, sliceType$8], [macFunction], false);
funcType$3 = $funcType([sliceType$8, sliceType$8], [cipher.AEAD], false);
ptrType$36 = $ptrType(fixedNonceAEAD);
ptrType$37 = $ptrType(xorNonceAEAD);
ptrType$38 = $ptrType(cthWrapper);
sliceType$14 = $sliceType(arrayType);
funcType$4 = $funcType([], [time.Time], false);
mapType = $mapType($String, ptrType$4);
funcType$5 = $funcType([ptrType$31], [ptrType$4, $error], false);
ptrType$39 = $ptrType(CertificateRequestInfo);
funcType$6 = $funcType([ptrType$39], [ptrType$4, $error], false);
funcType$7 = $funcType([ptrType$31], [ptrType$1, $error], false);
funcType$8 = $funcType([sliceType$10, sliceType$12], [$error], false);
ptrType$41 = $ptrType(halfConn);
ptrType$42 = $ptrType(clientHandshakeState);
ptrType$43 = $ptrType(serverHandshakeState);
ptrType$44 = $ptrType(ecdheKeyAgreement);
ptrType$45 = $ptrType(finishedHash);
funcType$9 = $funcType([sliceType$8, sliceType$8, sliceType$8, sliceType$8], [], false);
ptrType$46 = $ptrType(listener);
alert.prototype.String = function() {
var $ptr, _entry, _tuple, e, ok, s;
e = this.$val;
_tuple = (_entry = alertText[alert.keyFor(e)], _entry !== undefined ? [_entry.v, true] : ["", false]);
s = _tuple[0];
ok = _tuple[1];
if (ok) {
return "tls: " + s;
}
return "tls: alert(" + strconv.Itoa(((e >> 0))) + ")";
};
$ptrType(alert).prototype.String = function() { return new alert(this.$get()).String(); };
alert.prototype.Error = function() {
var $ptr, e;
e = this.$val;
return new alert(e).String();
};
$ptrType(alert).prototype.Error = function() { return new alert(this.$get()).Error(); };
cipherRC4 = function(key, iv, isRead) {
var $ptr, _tuple, cipher$1, isRead, iv, key;
_tuple = rc4.NewCipher(key);
cipher$1 = _tuple[0];
return cipher$1;
};
cipher3DES = function(key, iv, isRead) {
var $ptr, _r, _r$1, _tuple, block$1, isRead, iv, key, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_tuple = des.NewTripleDESCipher(key);
block$1 = _tuple[0];
/* */ if (isRead) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (isRead) { */ case 1:
_r = cipher.NewCBCDecrypter(block$1, iv); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 2:
_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; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: cipher3DES }; } $f.$ptr = $ptr; $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;
};
cipherAES = function(key, iv, isRead) {
var $ptr, _r, _r$1, _tuple, block$1, isRead, iv, key, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_tuple = aes.NewCipher(key);
block$1 = _tuple[0];
/* */ if (isRead) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (isRead) { */ case 1:
_r = cipher.NewCBCDecrypter(block$1, iv); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 2:
_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; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: cipherAES }; } $f.$ptr = $ptr; $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;
};
macSHA1 = function(version, key) {
var $ptr, _r, key, mac, version, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
if (version === 768) {
mac = new ssl30MAC.ptr(sha1.New(), $makeSlice(sliceType$8, key.$length));
$copySlice(mac.key, key);
$s = -1; return new mac.constructor.elem(mac);
}
_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; }
$s = -1; return (x = new tls10MAC.ptr(_r), new x.constructor.elem(x));
/* */ } return; } if ($f === undefined) { $f = { $blk: macSHA1 }; } $f.$ptr = $ptr; $f._r = _r; $f.key = key; $f.mac = mac; $f.version = version; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
macSHA256 = function(version, key) {
var $ptr, _r, key, version, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = hmac.New(sha256.New, key); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return (x = new tls10MAC.ptr(_r), new x.constructor.elem(x));
/* */ } return; } if ($f === undefined) { $f = { $blk: macSHA256 }; } $f.$ptr = $ptr; $f._r = _r; $f.key = key; $f.version = version; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
fixedNonceAEAD.ptr.prototype.NonceSize = function() {
var $ptr, f;
f = this;
return 8;
};
fixedNonceAEAD.prototype.NonceSize = function() { return this.$val.NonceSize(); };
fixedNonceAEAD.ptr.prototype.Overhead = function() {
var $ptr, _r, f, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
f = this;
_r = f.aead.Overhead(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: fixedNonceAEAD.ptr.prototype.Overhead }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
};
fixedNonceAEAD.prototype.Overhead = function() { return this.$val.Overhead(); };
fixedNonceAEAD.ptr.prototype.explicitNonceLen = function() {
var $ptr, f;
f = this;
return 8;
};
fixedNonceAEAD.prototype.explicitNonceLen = function() { return this.$val.explicitNonceLen(); };
fixedNonceAEAD.ptr.prototype.Seal = function(out, nonce, plaintext, additionalData) {
var $ptr, _r, additionalData, f, nonce, out, plaintext, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
f = this;
$copySlice($subslice(new sliceType$8(f.nonce), 4), nonce);
_r = f.aead.Seal(out, new sliceType$8(f.nonce), plaintext, additionalData); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: fixedNonceAEAD.ptr.prototype.Seal }; } $f.$ptr = $ptr; $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;
};
fixedNonceAEAD.prototype.Seal = function(out, nonce, plaintext, additionalData) { return this.$val.Seal(out, nonce, plaintext, additionalData); };
fixedNonceAEAD.ptr.prototype.Open = function(out, nonce, plaintext, additionalData) {
var $ptr, _r, additionalData, f, nonce, out, plaintext, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
f = this;
$copySlice($subslice(new sliceType$8(f.nonce), 4), nonce);
_r = f.aead.Open(out, new sliceType$8(f.nonce), plaintext, additionalData); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: fixedNonceAEAD.ptr.prototype.Open }; } $f.$ptr = $ptr; $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;
};
fixedNonceAEAD.prototype.Open = function(out, nonce, plaintext, additionalData) { return this.$val.Open(out, nonce, plaintext, additionalData); };
xorNonceAEAD.ptr.prototype.NonceSize = function() {
var $ptr, f;
f = this;
return 8;
};
xorNonceAEAD.prototype.NonceSize = function() { return this.$val.NonceSize(); };
xorNonceAEAD.ptr.prototype.Overhead = function() {
var $ptr, _r, f, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
f = this;
_r = f.aead.Overhead(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: xorNonceAEAD.ptr.prototype.Overhead }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
};
xorNonceAEAD.prototype.Overhead = function() { return this.$val.Overhead(); };
xorNonceAEAD.ptr.prototype.explicitNonceLen = function() {
var $ptr, f;
f = this;
return 0;
};
xorNonceAEAD.prototype.explicitNonceLen = function() { return this.$val.explicitNonceLen(); };
xorNonceAEAD.ptr.prototype.Seal = function(out, nonce, plaintext, additionalData) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
f = this;
_ref = nonce;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_index = 4 + i >> 0;
(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)));
_i++;
}
_r = f.aead.Seal(out, new sliceType$8(f.nonceMask), plaintext, additionalData); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
result = _r;
_ref$1 = nonce;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
i$1 = _i$1;
b$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
_index$1 = 4 + i$1 >> 0;
(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)));
_i$1++;
}
$s = -1; return result;
/* */ } return; } if ($f === undefined) { $f = { $blk: xorNonceAEAD.ptr.prototype.Seal }; } $f.$ptr = $ptr; $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;
};
xorNonceAEAD.prototype.Seal = function(out, nonce, plaintext, additionalData) { return this.$val.Seal(out, nonce, plaintext, additionalData); };
xorNonceAEAD.ptr.prototype.Open = function(out, nonce, plaintext, additionalData) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
f = this;
_ref = nonce;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_index = 4 + i >> 0;
(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)));
_i++;
}
_r = f.aead.Open(out, new sliceType$8(f.nonceMask), plaintext, additionalData); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
result = _tuple[0];
err = _tuple[1];
_ref$1 = nonce;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
i$1 = _i$1;
b$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
_index$1 = 4 + i$1 >> 0;
(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)));
_i$1++;
}
$s = -1; return [result, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: xorNonceAEAD.ptr.prototype.Open }; } $f.$ptr = $ptr; $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;
};
xorNonceAEAD.prototype.Open = function(out, nonce, plaintext, additionalData) { return this.$val.Open(out, nonce, plaintext, additionalData); };
aeadAESGCM = function(key, fixedNonce) {
var $ptr, _r, _tuple, _tuple$1, aead$1, aes$1, err, fixedNonce, key, ret, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_tuple = aes.NewCipher(key);
aes$1 = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$panic(err);
}
_r = cipher.NewGCM(aes$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
aead$1 = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$panic(err);
}
ret = new fixedNonceAEAD.ptr(arrayType$1.zero(), aead$1);
$copySlice(new sliceType$8(ret.nonce), fixedNonce);
$s = -1; return ret;
/* */ } return; } if ($f === undefined) { $f = { $blk: aeadAESGCM }; } $f.$ptr = $ptr; $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;
};
aeadChaCha20Poly1305 = function(key, fixedNonce) {
var $ptr, _tuple, aead$1, err, fixedNonce, key, ret;
_tuple = chacha20poly1305.New(key);
aead$1 = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$panic(err);
}
ret = new xorNonceAEAD.ptr(arrayType$1.zero(), aead$1);
$copySlice(new sliceType$8(ret.nonceMask), fixedNonce);
return ret;
};
ssl30MAC.ptr.prototype.Size = function() {
var $ptr, _r, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
s = this;
_r = s.h.Size(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: ssl30MAC.ptr.prototype.Size }; } $f.$ptr = $ptr; $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
ssl30MAC.prototype.Size = function() { return this.$val.Size(); };
ssl30MAC.ptr.prototype.MAC = function(digestBuf, seq, header, data, extra) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
s = this;
padLength = 48;
_r = s.h.Size(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (_r === 20) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (_r === 20) { */ case 1:
padLength = 40;
/* } */ case 2:
$r = s.h.Reset(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_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; }
_r$1;
_r$2 = s.h.Write($subslice(new sliceType$8(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; }
_r$2;
_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; }
_r$3;
_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; }
_r$4;
_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; }
_r$5;
_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; }
_r$6;
_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; }
digestBuf = _r$7;
$r = s.h.Reset(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_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; }
_r$8;
_r$9 = s.h.Write($subslice(new sliceType$8(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; }
_r$9;
_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; }
_r$10;
_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; }
$s = -1; return _r$11;
/* */ } return; } if ($f === undefined) { $f = { $blk: ssl30MAC.ptr.prototype.MAC }; } $f.$ptr = $ptr; $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;
};
ssl30MAC.prototype.MAC = function(digestBuf, seq, header, data, extra) { return this.$val.MAC(digestBuf, seq, header, data, extra); };
cthWrapper.ptr.prototype.Size = function() {
var $ptr, _r, c, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
_r = c.h.Size(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: cthWrapper.ptr.prototype.Size }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
};
cthWrapper.prototype.Size = function() { return this.$val.Size(); };
cthWrapper.ptr.prototype.BlockSize = function() {
var $ptr, _r, c, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
_r = c.h.BlockSize(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: cthWrapper.ptr.prototype.BlockSize }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
};
cthWrapper.prototype.BlockSize = function() { return this.$val.BlockSize(); };
cthWrapper.ptr.prototype.Reset = function() {
var $ptr, c, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
$r = c.h.Reset(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: cthWrapper.ptr.prototype.Reset }; } $f.$ptr = $ptr; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
};
cthWrapper.prototype.Reset = function() { return this.$val.Reset(); };
cthWrapper.ptr.prototype.Write = function(p) {
var $ptr, _r, c, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
_r = c.h.Write(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: cthWrapper.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
};
cthWrapper.prototype.Write = function(p) { return this.$val.Write(p); };
cthWrapper.ptr.prototype.Sum = function(b) {
var $ptr, _r, b, c, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; b = $f.b; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
_r = c.h.ConstantTimeSum(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: cthWrapper.ptr.prototype.Sum }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
};
cthWrapper.prototype.Sum = function(b) { return this.$val.Sum(b); };
newConstantTimeHash = function(h) {
var $ptr, h;
return (function $b() {
var $ptr, _r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = h(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return new cthWrapper.ptr($assertType(_r, constantTimeHash));
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f.$s = $s; $f.$r = $r; return $f;
});
};
tls10MAC.ptr.prototype.Size = function() {
var $ptr, _r, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
s = this;
_r = s.h.Size(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: tls10MAC.ptr.prototype.Size }; } $f.$ptr = $ptr; $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
tls10MAC.prototype.Size = function() { return this.$val.Size(); };
tls10MAC.ptr.prototype.MAC = function(digestBuf, seq, header, data, extra) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, data, digestBuf, extra, header, res, s, seq, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
s = this;
$r = s.h.Reset(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r = s.h.Write(seq); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
_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; }
_r$1;
_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; }
_r$2;
_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; }
res = _r$3;
/* */ if (!(extra === sliceType$8.nil)) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!(extra === sliceType$8.nil)) { */ case 6:
_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; }
_r$4;
/* } */ case 7:
$s = -1; return res;
/* */ } return; } if ($f === undefined) { $f = { $blk: tls10MAC.ptr.prototype.MAC }; } $f.$ptr = $ptr; $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;
};
tls10MAC.prototype.MAC = function(digestBuf, seq, header, data, extra) { return this.$val.MAC(digestBuf, seq, header, data, extra); };
rsaKA = function(version) {
var $ptr, version, x;
return (x = new rsaKeyAgreement.ptr(), new x.constructor.elem(x));
};
ecdheECDSAKA = function(version) {
var $ptr, version;
return new ecdheKeyAgreement.ptr(version, 3, sliceType$8.nil, 0, sliceType$8.nil, ptrType$3.nil, ptrType$3.nil);
};
ecdheRSAKA = function(version) {
var $ptr, version;
return new ecdheKeyAgreement.ptr(version, 1, sliceType$8.nil, 0, sliceType$8.nil, ptrType$3.nil, ptrType$3.nil);
};
mutualCipherSuite = function(have, want) {
var $ptr, _i, _i$1, _ref, _ref$1, have, id, suite, want;
_ref = have;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
id = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (id === want) {
_ref$1 = cipherSuites;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
suite = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
if (suite.id === want) {
return suite;
}
_i$1++;
}
return ptrType$2.nil;
}
_i++;
}
return ptrType$2.nil;
};
ticketKeyFromBytes = function(b) {
var $ptr, _r, b, hashed, key, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
key = new ticketKey.ptr(arrayType$2.zero(), arrayType$2.zero(), arrayType$2.zero());
_r = sha512.Sum512(new sliceType$8(b)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
hashed = $clone(_r, arrayType$3);
$copySlice(new sliceType$8(key.keyName), $subslice(new sliceType$8(hashed), 0, 16));
$copySlice(new sliceType$8(key.aesKey), $subslice(new sliceType$8(hashed), 16, 32));
$copySlice(new sliceType$8(key.hmacKey), $subslice(new sliceType$8(hashed), 32, 48));
ticketKey.copy(key, key);
$s = -1; return key;
/* */ } return; } if ($f === undefined) { $f = { $blk: ticketKeyFromBytes }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.hashed = hashed; $f.key = key; $f.$s = $s; $f.$r = $r; return $f;
};
Config.ptr.prototype.Clone = function() {
var $ptr, c, sessionTicketKeys, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; c = $f.c; sessionTicketKeys = $f.sessionTicketKeys; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
$r = c.serverInitOnce.Do($methodVal(c, "serverInit")); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
sessionTicketKeys = sliceType$4.nil;
$r = c.mutex.RLock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
sessionTicketKeys = c.sessionTicketKeys;
$r = c.mutex.RUnlock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return new Config.ptr(c.Rand, c.Time, c.Certificates, c.NameToCertificate, c.GetCertificate, c.GetClientCertificate, c.GetConfigForClient, c.VerifyPeerCertificate, c.RootCAs, c.NextProtos, c.ServerName, c.ClientAuth, c.ClientCAs, c.InsecureSkipVerify, c.CipherSuites, c.PreferServerCipherSuites, c.SessionTicketsDisabled, $clone(c.SessionTicketKey, arrayType), c.ClientSessionCache, c.MinVersion, c.MaxVersion, c.CurvePreferences, c.DynamicRecordSizingDisabled, c.Renegotiation, c.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, ptrType$1.nil);
/* */ } return; } if ($f === undefined) { $f = { $blk: Config.ptr.prototype.Clone }; } $f.$ptr = $ptr; $f.c = c; $f.sessionTicketKeys = sessionTicketKeys; $f.$s = $s; $f.$r = $r; return $f;
};
Config.prototype.Clone = function() { return this.$val.Clone(); };
Config.ptr.prototype.serverInit = function() {
var $ptr, _i, _r, _r$1, _r$2, _ref, _tmp, _tmp$1, _tuple, _v, alreadySet, b, c, err, originalConfig, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
c = this;
if (c.SessionTicketsDisabled) { _v = true; $s = 3; continue s; }
_r = c.ticketKeys(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_v = !((_r.$length === 0)); case 3:
/* */ if (_v) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (_v) { */ case 1:
$s = -1; return;
/* } */ case 2:
originalConfig = ptrType$1.nil;
$r = c.mutex.Lock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_tmp = c.originalConfig;
_tmp$1 = ptrType$1.nil;
originalConfig = _tmp;
c.originalConfig = _tmp$1;
$r = c.mutex.Unlock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
alreadySet = false;
_ref = c.SessionTicketKey;
_i = 0;
while (true) {
if (!(_i < 32)) { break; }
b = ((_i < 0 || _i >= _ref.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref[_i]);
if (!((b === 0))) {
alreadySet = true;
break;
}
_i++;
}
/* */ if (!alreadySet) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (!alreadySet) { */ case 7:
/* */ if (!(originalConfig === ptrType$1.nil)) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (!(originalConfig === ptrType$1.nil)) { */ case 9:
$copySlice(new sliceType$8(c.SessionTicketKey), new sliceType$8(originalConfig.SessionTicketKey));
$s = 11; continue;
/* } else { */ case 10:
_r$1 = io.ReadFull(c.rand(), new sliceType$8(c.SessionTicketKey)); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
c.SessionTicketsDisabled = true;
$s = -1; return;
}
/* } */ case 11:
/* } */ case 8:
/* */ if (!(originalConfig === ptrType$1.nil)) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (!(originalConfig === ptrType$1.nil)) { */ case 13:
$r = originalConfig.mutex.RLock(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
c.sessionTicketKeys = originalConfig.sessionTicketKeys;
$r = originalConfig.mutex.RUnlock(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 15; continue;
/* } else { */ case 14:
_r$2 = ticketKeyFromBytes($clone(c.SessionTicketKey, arrayType)); /* */ $s = 18; case 18: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
c.sessionTicketKeys = new sliceType$4([$clone(_r$2, ticketKey)]);
/* } */ case 15:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Config.ptr.prototype.serverInit }; } $f.$ptr = $ptr; $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._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;
};
Config.prototype.serverInit = function() { return this.$val.serverInit(); };
Config.ptr.prototype.ticketKeys = function() {
var $ptr, c, ret, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; c = $f.c; ret = $f.ret; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
$r = c.mutex.RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
ret = c.sessionTicketKeys;
$r = c.mutex.RUnlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return ret;
/* */ } return; } if ($f === undefined) { $f = { $blk: Config.ptr.prototype.ticketKeys }; } $f.$ptr = $ptr; $f.c = c; $f.ret = ret; $f.$s = $s; $f.$r = $r; return $f;
};
Config.prototype.ticketKeys = function() { return this.$val.ticketKeys(); };
Config.ptr.prototype.SetSessionTicketKeys = function(keys) {
var $ptr, _i, _r, _ref, bytes$1, c, i, keys, newKeys, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
c = this;
if (keys.$length === 0) {
$panic(new $String("tls: keys must have at least one key"));
}
newKeys = $makeSlice(sliceType$4, keys.$length);
_ref = keys;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
i = _i;
bytes$1 = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), arrayType);
_r = ticketKeyFromBytes($clone(bytes$1, arrayType)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
ticketKey.copy(((i < 0 || i >= newKeys.$length) ? ($throwRuntimeError("index out of range"), undefined) : newKeys.$array[newKeys.$offset + i]), _r);
_i++;
/* } */ $s = 1; continue; case 2:
$r = c.mutex.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
c.sessionTicketKeys = newKeys;
$r = c.mutex.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Config.ptr.prototype.SetSessionTicketKeys }; } $f.$ptr = $ptr; $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;
};
Config.prototype.SetSessionTicketKeys = function(keys) { return this.$val.SetSessionTicketKeys(keys); };
Config.ptr.prototype.rand = function() {
var $ptr, c, r;
c = this;
r = c.Rand;
if ($interfaceIsEqual(r, $ifaceNil)) {
return rand.Reader;
}
return r;
};
Config.prototype.rand = function() { return this.$val.rand(); };
Config.ptr.prototype.time = function() {
var $ptr, _r, c, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
t = c.Time;
if (t === $throwNilPointerError) {
t = time.Now;
}
_r = t(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Config.ptr.prototype.time }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
Config.prototype.time = function() { return this.$val.time(); };
Config.ptr.prototype.cipherSuites = function() {
var $ptr, _r, c, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
s = c.CipherSuites;
/* */ if (s === sliceType$2.nil) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (s === sliceType$2.nil) { */ case 1:
_r = defaultCipherSuites(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
s = _r;
/* } */ case 2:
$s = -1; return s;
/* */ } return; } if ($f === undefined) { $f = { $blk: Config.ptr.prototype.cipherSuites }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
Config.prototype.cipherSuites = function() { return this.$val.cipherSuites(); };
Config.ptr.prototype.minVersion = function() {
var $ptr, c;
c = this;
if (c === ptrType$1.nil || (c.MinVersion === 0)) {
return 769;
}
return c.MinVersion;
};
Config.prototype.minVersion = function() { return this.$val.minVersion(); };
Config.ptr.prototype.maxVersion = function() {
var $ptr, c;
c = this;
if (c === ptrType$1.nil || (c.MaxVersion === 0)) {
return 771;
}
return c.MaxVersion;
};
Config.prototype.maxVersion = function() { return this.$val.maxVersion(); };
Config.ptr.prototype.curvePreferences = function() {
var $ptr, c;
c = this;
if (c === ptrType$1.nil || (c.CurvePreferences.$length === 0)) {
return defaultCurvePreferences;
}
return c.CurvePreferences;
};
Config.prototype.curvePreferences = function() { return this.$val.curvePreferences(); };
Config.ptr.prototype.mutualVersion = function(vers) {
var $ptr, c, maxVersion, minVersion, vers;
c = this;
minVersion = c.minVersion();
maxVersion = c.maxVersion();
if (vers < minVersion) {
return [0, false];
}
if (vers > maxVersion) {
vers = maxVersion;
}
return [vers, true];
};
Config.prototype.mutualVersion = function(vers) { return this.$val.mutualVersion(vers); };
Config.ptr.prototype.getCertificate = function(clientHello) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
c = this;
/* */ if (!(c.GetCertificate === $throwNilPointerError) && ((c.Certificates.$length === 0) || clientHello.ServerName.length > 0)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(c.GetCertificate === $throwNilPointerError) && ((c.Certificates.$length === 0) || clientHello.ServerName.length > 0)) { */ case 1:
_r = c.GetCertificate(clientHello); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
cert = _tuple[0];
err = _tuple[1];
if (!(cert === ptrType$4.nil) || !($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [cert, err];
}
/* } */ case 2:
if (c.Certificates.$length === 0) {
$s = -1; return [ptrType$4.nil, errors.New("tls: no certificates configured")];
}
if ((c.Certificates.$length === 1) || c.NameToCertificate === false) {
$s = -1; return [(x = c.Certificates, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])), $ifaceNil];
}
_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; }
name = _r$1;
while (true) {
if (!(name.length > 0 && (name.charCodeAt((name.length - 1 >> 0)) === 46))) { break; }
name = $substring(name, 0, (name.length - 1 >> 0));
}
_tuple$1 = (_entry = c.NameToCertificate[$String.keyFor(name)], _entry !== undefined ? [_entry.v, true] : [ptrType$4.nil, false]);
cert$1 = _tuple$1[0];
ok = _tuple$1[1];
if (ok) {
$s = -1; return [cert$1, $ifaceNil];
}
labels = strings.Split(name, ".");
_ref = labels;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
((i < 0 || i >= labels.$length) ? ($throwRuntimeError("index out of range"), undefined) : labels.$array[labels.$offset + i] = "*");
candidate = strings.Join(labels, ".");
_tuple$2 = (_entry$1 = c.NameToCertificate[$String.keyFor(candidate)], _entry$1 !== undefined ? [_entry$1.v, true] : [ptrType$4.nil, false]);
cert$2 = _tuple$2[0];
ok$1 = _tuple$2[1];
if (ok$1) {
$s = -1; return [cert$2, $ifaceNil];
}
_i++;
}
$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];
/* */ } return; } if ($f === undefined) { $f = { $blk: Config.ptr.prototype.getCertificate }; } $f.$ptr = $ptr; $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;
};
Config.prototype.getCertificate = function(clientHello) { return this.$val.getCertificate(clientHello); };
Config.ptr.prototype.BuildNameToCertificate = function() {
var $ptr, _i, _i$1, _key, _key$1, _r, _ref, _ref$1, _tuple, c, cert, err, i, san, x, x$1, x509Cert, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
c = this;
c.NameToCertificate = {};
_ref = c.Certificates;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
i = _i;
cert = (x = c.Certificates, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
_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; }
_tuple = _r;
x509Cert = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_i++;
/* continue; */ $s = 1; continue;
}
if (x509Cert.Subject.CommonName.length > 0) {
_key = x509Cert.Subject.CommonName; (c.NameToCertificate || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: cert };
}
_ref$1 = x509Cert.DNSNames;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
san = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
_key$1 = san; (c.NameToCertificate || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$1)] = { k: _key$1, v: cert };
_i$1++;
}
_i++;
/* } */ $s = 1; continue; case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Config.ptr.prototype.BuildNameToCertificate }; } $f.$ptr = $ptr; $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;
};
Config.prototype.BuildNameToCertificate = function() { return this.$val.BuildNameToCertificate(); };
Config.ptr.prototype.writeKeyLog = function(clientRandom, masterSecret) {
var $ptr, _r, _r$1, _tuple, c, clientRandom, err, logLine, masterSecret, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
c = this;
if ($interfaceIsEqual(c.KeyLogWriter, $ifaceNil)) {
$s = -1; return $ifaceNil;
}
_r = fmt.Sprintf("CLIENT_RANDOM %x %x\n", new sliceType$9([clientRandom, masterSecret])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
logLine = (new sliceType$8($stringToBytes(_r)));
$r = writerMutex.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_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; }
_tuple = _r$1;
err = _tuple[1];
$r = writerMutex.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return err;
/* */ } return; } if ($f === undefined) { $f = { $blk: Config.ptr.prototype.writeKeyLog }; } $f.$ptr = $ptr; $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;
};
Config.prototype.writeKeyLog = function(clientRandom, masterSecret) { return this.$val.writeKeyLog(clientRandom, masterSecret); };
defaultConfig = function() {
var $ptr;
return emptyConfig;
};
defaultCipherSuites = function() {
var $ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = once.Do(initDefaultCipherSuites); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return varDefaultCipherSuites;
/* */ } return; } if ($f === undefined) { $f = { $blk: defaultCipherSuites }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
};
initDefaultCipherSuites = function() {
var $ptr, _i, _i$1, _i$2, _ref, _ref$1, _ref$2, existing, suite, topCipher, topCipherSuites;
topCipherSuites = sliceType$2.nil;
if (cipherhw.AESGCMSupport()) {
topCipherSuites = new sliceType$2([49199, 49200, 49195, 49196, 52392, 52393]);
} else {
topCipherSuites = new sliceType$2([52392, 52393, 49199, 49200, 49195, 49196]);
}
varDefaultCipherSuites = $makeSlice(sliceType$2, 0, cipherSuites.$length);
_ref = topCipherSuites;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
topCipher = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
varDefaultCipherSuites = $append(varDefaultCipherSuites, topCipher);
_i++;
}
_ref$1 = cipherSuites;
_i$1 = 0;
NextCipherSuite:
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
suite = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
if (!(((suite.flags & 16) === 0))) {
_i$1++;
continue;
}
_ref$2 = varDefaultCipherSuites;
_i$2 = 0;
while (true) {
if (!(_i$2 < _ref$2.$length)) { break; }
existing = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]);
if (existing === suite.id) {
_i$1++;
continue NextCipherSuite;
}
_i$2++;
}
varDefaultCipherSuites = $append(varDefaultCipherSuites, suite.id);
_i$1++;
}
};
unexpectedMessageError = function(wanted, got) {
var $ptr, _r, got, wanted, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; got = $f.got; wanted = $f.wanted; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = fmt.Errorf("tls: received unexpected handshake message of type %T when waiting for %T", new sliceType$9([got, wanted])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: unexpectedMessageError }; } $f.$ptr = $ptr; $f._r = _r; $f.got = got; $f.wanted = wanted; $f.$s = $s; $f.$r = $r; return $f;
};
isSupportedSignatureAndHash = function(sigHash, sigHashes) {
var $ptr, _i, _ref, s, sigHash, sigHashes;
_ref = sigHashes;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
s = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), signatureAndHash);
if ($equal(s, sigHash, signatureAndHash)) {
return true;
}
_i++;
}
return false;
};
Conn.ptr.prototype.LocalAddr = function() {
var $ptr, _r, c, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
_r = c.conn.LocalAddr(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.LocalAddr }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
};
Conn.prototype.LocalAddr = function() { return this.$val.LocalAddr(); };
Conn.ptr.prototype.RemoteAddr = function() {
var $ptr, _r, c, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
_r = c.conn.RemoteAddr(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.RemoteAddr }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
};
Conn.prototype.RemoteAddr = function() { return this.$val.RemoteAddr(); };
Conn.ptr.prototype.SetDeadline = function(t) {
var $ptr, _r, c, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.SetDeadline }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
Conn.prototype.SetDeadline = function(t) { return this.$val.SetDeadline(t); };
Conn.ptr.prototype.SetReadDeadline = function(t) {
var $ptr, _r, c, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.SetReadDeadline }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
Conn.prototype.SetReadDeadline = function(t) { return this.$val.SetReadDeadline(t); };
Conn.ptr.prototype.SetWriteDeadline = function(t) {
var $ptr, _r, c, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.SetWriteDeadline }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
Conn.prototype.SetWriteDeadline = function(t) { return this.$val.SetWriteDeadline(t); };
halfConn.ptr.prototype.setErrorLocked = function(err) {
var $ptr, err, hc;
hc = this;
hc.err = err;
return err;
};
halfConn.prototype.setErrorLocked = function(err) { return this.$val.setErrorLocked(err); };
halfConn.ptr.prototype.prepareCipherSpec = function(version, cipher$1, mac) {
var $ptr, cipher$1, hc, mac, version;
hc = this;
hc.version = version;
hc.nextCipher = cipher$1;
hc.nextMac = mac;
};
halfConn.prototype.prepareCipherSpec = function(version, cipher$1, mac) { return this.$val.prepareCipherSpec(version, cipher$1, mac); };
halfConn.ptr.prototype.changeCipherSpec = function() {
var $ptr, _i, _ref, hc, i, x;
hc = this;
if ($interfaceIsEqual(hc.nextCipher, $ifaceNil)) {
return new alert(80);
}
hc.cipher = hc.nextCipher;
hc.mac = hc.nextMac;
hc.nextCipher = $ifaceNil;
hc.nextMac = $ifaceNil;
_ref = hc.seq;
_i = 0;
while (true) {
if (!(_i < 8)) { break; }
i = _i;
(x = hc.seq, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i] = 0));
_i++;
}
return $ifaceNil;
};
halfConn.prototype.changeCipherSpec = function() { return this.$val.changeCipherSpec(); };
halfConn.ptr.prototype.incSeq = function() {
var $ptr, hc, i, x, x$1, x$2;
hc = this;
i = 7;
while (true) {
if (!(i >= 0)) { break; }
(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)));
if (!(((x$2 = hc.seq, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i])) === 0))) {
return;
}
i = i - (1) >> 0;
}
$panic(new $String("TLS: sequence number wraparound"));
};
halfConn.prototype.incSeq = function() { return this.$val.incSeq(); };
extractPadding = function(payload) {
var $ptr, _tmp, _tmp$1, b, good, i, mask, paddingLen, payload, t, t$1, toCheck, toRemove, x, x$1;
toRemove = 0;
good = 0;
if (payload.$length < 1) {
_tmp = 0;
_tmp$1 = 0;
toRemove = _tmp;
good = _tmp$1;
return [toRemove, good];
}
paddingLen = (x = payload.$length - 1 >> 0, ((x < 0 || x >= payload.$length) ? ($throwRuntimeError("index out of range"), undefined) : payload.$array[payload.$offset + x]));
t = (((payload.$length - 1 >> 0) >>> 0)) - ((paddingLen >>> 0)) >>> 0;
good = ((((((~t >>> 0) >> 0)) >> 31 >> 0) << 24 >>> 24));
toCheck = 255;
if ((toCheck + 1 >> 0) > payload.$length) {
toCheck = payload.$length - 1 >> 0;
}
i = 0;
while (true) {
if (!(i < toCheck)) { break; }
t$1 = ((paddingLen >>> 0)) - ((i >>> 0)) >>> 0;
mask = ((((((~t$1 >>> 0) >> 0)) >> 31 >> 0) << 24 >>> 24));
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]));
good = (good & ~(((((mask & paddingLen) >>> 0) ^ ((mask & b) >>> 0)) << 24 >>> 24))) << 24 >>> 24;
i = i + (1) >> 0;
}
good = (good & ((good << 4 << 24 >>> 24))) >>> 0;
good = (good & ((good << 2 << 24 >>> 24))) >>> 0;
good = (good & ((good << 1 << 24 >>> 24))) >>> 0;
good = (((((good << 24 >> 24)) >> 7 << 24 >> 24) << 24 >>> 24));
toRemove = ((paddingLen >> 0)) + 1 >> 0;
return [toRemove, good];
};
extractPaddingSSL30 = function(payload) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, good, paddingLen, payload, toRemove, x;
toRemove = 0;
good = 0;
if (payload.$length < 1) {
_tmp = 0;
_tmp$1 = 0;
toRemove = _tmp;
good = _tmp$1;
return [toRemove, good];
}
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;
if (paddingLen > payload.$length) {
_tmp$2 = 0;
_tmp$3 = 0;
toRemove = _tmp$2;
good = _tmp$3;
return [toRemove, good];
}
_tmp$4 = paddingLen;
_tmp$5 = 255;
toRemove = _tmp$4;
good = _tmp$5;
return [toRemove, good];
};
roundUp = function(a, b) {
var $ptr, _r, _r$1, a, b;
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;
};
halfConn.ptr.prototype.decrypt = function(b) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
ok = false;
prefixLen = 0;
alertValue = 0;
hc = this;
payload = $subslice(b.data, 5);
macSize = 0;
/* */ if (!($interfaceIsEqual(hc.mac, $ifaceNil))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!($interfaceIsEqual(hc.mac, $ifaceNil))) { */ case 1:
_r = hc.mac.Size(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
macSize = _r;
/* } */ case 2:
paddingGood = 255;
paddingLen = 0;
explicitIVLen = 0;
/* */ if (!($interfaceIsEqual(hc.cipher, $ifaceNil))) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!($interfaceIsEqual(hc.cipher, $ifaceNil))) { */ case 4:
_ref = hc.cipher;
/* */ if ($assertType(_ref, cipher.Stream, true)[1]) { $s = 6; continue; }
/* */ if ($assertType(_ref, aead, true)[1]) { $s = 7; continue; }
/* */ if ($assertType(_ref, cbcMode, true)[1]) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if ($assertType(_ref, cipher.Stream, true)[1]) { */ case 6:
c = _ref;
$r = c.XORKeyStream(payload, payload); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 10; continue;
/* } else if ($assertType(_ref, aead, true)[1]) { */ case 7:
c$1 = _ref;
_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; }
explicitIVLen = _r$1;
if (payload.$length < explicitIVLen) {
_tmp = false;
_tmp$1 = 0;
_tmp$2 = 20;
ok = _tmp;
prefixLen = _tmp$1;
alertValue = _tmp$2;
$s = -1; return [ok, prefixLen, alertValue];
}
nonce = $subslice(payload, 0, explicitIVLen);
payload = $subslice(payload, explicitIVLen);
if (nonce.$length === 0) {
nonce = new sliceType$8(hc.seq);
}
$copySlice(new sliceType$8(hc.additionalData), new sliceType$8(hc.seq));
$copySlice($subslice(new sliceType$8(hc.additionalData), 8), $subslice(b.data, 0, 3));
_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; }
n = payload.$length - _r$2 >> 0;
hc.additionalData[11] = (((n >> 8 >> 0) << 24 >>> 24));
hc.additionalData[12] = ((n << 24 >>> 24));
err = $ifaceNil;
_r$3 = c$1.Open($subslice(payload, 0, 0), nonce, payload, new sliceType$8(hc.additionalData)); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple = _r$3;
payload = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$3 = false;
_tmp$4 = 0;
_tmp$5 = 20;
ok = _tmp$3;
prefixLen = _tmp$4;
alertValue = _tmp$5;
$s = -1; return [ok, prefixLen, alertValue];
}
b.resize((5 + explicitIVLen >> 0) + payload.$length >> 0);
$s = 10; continue;
/* } else if ($assertType(_ref, cbcMode, true)[1]) { */ case 8:
c$2 = _ref;
_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; }
blockSize = _r$4;
if (hc.version >= 770) {
explicitIVLen = blockSize;
}
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)) {
_tmp$6 = false;
_tmp$7 = 0;
_tmp$8 = 20;
ok = _tmp$6;
prefixLen = _tmp$7;
alertValue = _tmp$8;
$s = -1; return [ok, prefixLen, alertValue];
}
/* */ if (explicitIVLen > 0) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (explicitIVLen > 0) { */ case 16:
$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; }
payload = $subslice(payload, explicitIVLen);
/* } */ case 17:
$r = c$2.CryptBlocks(payload, payload); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (hc.version === 768) {
_tuple$1 = extractPaddingSSL30(payload);
paddingLen = _tuple$1[0];
paddingGood = _tuple$1[1];
} else {
_tuple$2 = extractPadding(payload);
paddingLen = _tuple$2[0];
paddingGood = _tuple$2[1];
}
$s = 10; continue;
/* } else { */ case 9:
c$3 = _ref;
$panic(new $String("unknown cipher type"));
/* } */ case 10:
/* } */ case 5:
/* */ if (!($interfaceIsEqual(hc.mac, $ifaceNil))) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if (!($interfaceIsEqual(hc.mac, $ifaceNil))) { */ case 20:
if (payload.$length < macSize) {
_tmp$9 = false;
_tmp$10 = 0;
_tmp$11 = 20;
ok = _tmp$9;
prefixLen = _tmp$10;
alertValue = _tmp$11;
$s = -1; return [ok, prefixLen, alertValue];
}
n$1 = (payload.$length - macSize >> 0) - paddingLen >> 0;
n$1 = subtle.ConstantTimeSelect((((((n$1 >>> 0)) >>> 31 >>> 0) >> 0)), 0, n$1);
(x = b.data, (3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = (((n$1 >> 8 >> 0) << 24 >>> 24))));
(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))));
remoteMAC = $subslice(payload, n$1, (n$1 + macSize >> 0));
_r$6 = hc.mac.MAC(hc.inDigestBuf, $subslice(new sliceType$8(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; }
localMAC = _r$6;
if (!((subtle.ConstantTimeCompare(localMAC, remoteMAC) === 1)) || !((paddingGood === 255))) {
_tmp$12 = false;
_tmp$13 = 0;
_tmp$14 = 20;
ok = _tmp$12;
prefixLen = _tmp$13;
alertValue = _tmp$14;
$s = -1; return [ok, prefixLen, alertValue];
}
hc.inDigestBuf = localMAC;
b.resize((5 + explicitIVLen >> 0) + n$1 >> 0);
/* } */ case 21:
hc.incSeq();
_tmp$15 = true;
_tmp$16 = 5 + explicitIVLen >> 0;
_tmp$17 = 0;
ok = _tmp$15;
prefixLen = _tmp$16;
alertValue = _tmp$17;
$s = -1; return [ok, prefixLen, alertValue];
/* */ } return; } if ($f === undefined) { $f = { $blk: halfConn.ptr.prototype.decrypt }; } $f.$ptr = $ptr; $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;
};
halfConn.prototype.decrypt = function(b) { return this.$val.decrypt(b); };
padToBlockSize = function(payload, blockSize) {
var $ptr, _r, blockSize, finalBlock, i, overrun, paddingLen, payload, prefix;
prefix = sliceType$8.nil;
finalBlock = sliceType$8.nil;
overrun = (_r = payload.$length % blockSize, _r === _r ? _r : $throwRuntimeError("integer divide by zero"));
paddingLen = blockSize - overrun >> 0;
prefix = $subslice(payload, 0, (payload.$length - overrun >> 0));
finalBlock = $makeSlice(sliceType$8, blockSize);
$copySlice(finalBlock, $subslice(payload, (payload.$length - overrun >> 0)));
i = overrun;
while (true) {
if (!(i < blockSize)) { break; }
((i < 0 || i >= finalBlock.$length) ? ($throwRuntimeError("index out of range"), undefined) : finalBlock.$array[finalBlock.$offset + i] = (((paddingLen - 1 >> 0) << 24 >>> 24)));
i = i + (1) >> 0;
}
return [prefix, finalBlock];
};
halfConn.ptr.prototype.encrypt = function(b, explicitIVLen) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
hc = this;
/* */ if (!($interfaceIsEqual(hc.mac, $ifaceNil))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!($interfaceIsEqual(hc.mac, $ifaceNil))) { */ case 1:
_r = hc.mac.MAC(hc.outDigestBuf, $subslice(new sliceType$8(hc.seq), 0), $subslice(b.data, 0, 5), $subslice(b.data, (5 + explicitIVLen >> 0)), sliceType$8.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
mac = _r;
n = b.data.$length;
b.resize(n + mac.$length >> 0);
$copySlice($subslice(b.data, n), mac);
hc.outDigestBuf = mac;
/* } */ case 2:
payload = $subslice(b.data, 5);
/* */ if (!($interfaceIsEqual(hc.cipher, $ifaceNil))) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!($interfaceIsEqual(hc.cipher, $ifaceNil))) { */ case 4:
_ref = hc.cipher;
/* */ if ($assertType(_ref, cipher.Stream, true)[1]) { $s = 6; continue; }
/* */ if ($assertType(_ref, aead, true)[1]) { $s = 7; continue; }
/* */ if ($assertType(_ref, cbcMode, true)[1]) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if ($assertType(_ref, cipher.Stream, true)[1]) { */ case 6:
c = _ref;
$r = c.XORKeyStream(payload, payload); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 10; continue;
/* } else if ($assertType(_ref, aead, true)[1]) { */ case 7:
c$1 = _ref;
payloadLen = (b.data.$length - 5 >> 0) - explicitIVLen >> 0;
_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; }
$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; }
nonce = $subslice(b.data, 5, (5 + explicitIVLen >> 0));
if (nonce.$length === 0) {
nonce = new sliceType$8(hc.seq);
}
payload$1 = $subslice(b.data, (5 + explicitIVLen >> 0));
payload$1 = $subslice(payload$1, 0, payloadLen);
$copySlice(new sliceType$8(hc.additionalData), new sliceType$8(hc.seq));
$copySlice($subslice(new sliceType$8(hc.additionalData), 8), $subslice(b.data, 0, 3));
hc.additionalData[11] = (((payloadLen >> 8 >> 0) << 24 >>> 24));
hc.additionalData[12] = ((payloadLen << 24 >>> 24));
_r$2 = c$1.Seal($subslice(payload$1, 0, 0), nonce, payload$1, new sliceType$8(hc.additionalData)); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
$s = 10; continue;
/* } else if ($assertType(_ref, cbcMode, true)[1]) { */ case 8:
c$2 = _ref;
_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; }
blockSize = _r$3;
/* */ if (explicitIVLen > 0) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (explicitIVLen > 0) { */ case 16:
$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; }
payload = $subslice(payload, explicitIVLen);
/* } */ case 17:
_tuple = padToBlockSize(payload, blockSize);
prefix = _tuple[0];
finalBlock = _tuple[1];
b.resize(((5 + explicitIVLen >> 0) + prefix.$length >> 0) + finalBlock.$length >> 0);
$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; }
$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; }
$s = 10; continue;
/* } else { */ case 9:
c$3 = _ref;
$panic(new $String("unknown cipher type"));
/* } */ case 10:
/* } */ case 5:
n$1 = b.data.$length - 5 >> 0;
(x = b.data, (3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = (((n$1 >> 8 >> 0) << 24 >>> 24))));
(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))));
hc.incSeq();
$s = -1; return [true, 0];
/* */ } return; } if ($f === undefined) { $f = { $blk: halfConn.ptr.prototype.encrypt }; } $f.$ptr = $ptr; $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;
};
halfConn.prototype.encrypt = function(b, explicitIVLen) { return this.$val.encrypt(b, explicitIVLen); };
block.ptr.prototype.resize = function(n) {
var $ptr, b, n;
b = this;
if (n > b.data.$capacity) {
b.reserve(n);
}
b.data = $subslice(b.data, 0, n);
};
block.prototype.resize = function(n) { return this.$val.resize(n); };
block.ptr.prototype.reserve = function(n) {
var $ptr, b, data, m, n;
b = this;
if (b.data.$capacity >= n) {
return;
}
m = b.data.$capacity;
if (m === 0) {
m = 1024;
}
while (true) {
if (!(m < n)) { break; }
m = $imul(m, (2));
}
data = $makeSlice(sliceType$8, b.data.$length, m);
$copySlice(data, b.data);
b.data = data;
};
block.prototype.reserve = function(n) { return this.$val.reserve(n); };
block.ptr.prototype.readFromUntil = function(r, n) {
var $ptr, _r, _tuple, b, err, m, n, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
b = this;
if (b.data.$length >= n) {
$s = -1; return $ifaceNil;
}
b.reserve(n);
/* while (true) { */ case 1:
_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; }
_tuple = _r;
m = _tuple[0];
err = _tuple[1];
b.data = $subslice(b.data, 0, (b.data.$length + m >> 0));
if (b.data.$length >= n) {
/* break; */ $s = 2; continue;
}
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
/* } */ $s = 1; continue; case 2:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: block.ptr.prototype.readFromUntil }; } $f.$ptr = $ptr; $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;
};
block.prototype.readFromUntil = function(r, n) { return this.$val.readFromUntil(r, n); };
block.ptr.prototype.Read = function(p) {
var $ptr, b, err, n, p;
n = 0;
err = $ifaceNil;
b = this;
n = $copySlice(p, $subslice(b.data, b.off));
b.off = b.off + (n) >> 0;
return [n, err];
};
block.prototype.Read = function(p) { return this.$val.Read(p); };
halfConn.ptr.prototype.newBlock = function() {
var $ptr, b, hc;
hc = this;
b = hc.bfree;
if (b === ptrType$9.nil) {
return new block.ptr(sliceType$8.nil, 0, ptrType$9.nil);
}
hc.bfree = b.link;
b.link = ptrType$9.nil;
b.resize(0);
return b;
};
halfConn.prototype.newBlock = function() { return this.$val.newBlock(); };
halfConn.ptr.prototype.freeBlock = function(b) {
var $ptr, b, hc;
hc = this;
b.link = hc.bfree;
hc.bfree = b;
};
halfConn.prototype.freeBlock = function(b) { return this.$val.freeBlock(b); };
halfConn.ptr.prototype.splitBlock = function(b, n) {
var $ptr, b, bb, hc, n;
hc = this;
if (b.data.$length <= n) {
return [b, ptrType$9.nil];
}
bb = hc.newBlock();
bb.resize(b.data.$length - n >> 0);
$copySlice(bb.data, $subslice(b.data, n));
b.data = $subslice(b.data, 0, n);
return [b, bb];
};
halfConn.prototype.splitBlock = function(b, n) { return this.$val.splitBlock(b, n); };
RecordHeaderError.ptr.prototype.Error = function() {
var $ptr, e;
e = this;
return "tls: " + e.Msg;
};
RecordHeaderError.prototype.Error = function() { return this.$val.Error(); };
Conn.ptr.prototype.newRecordHeaderError = function(msg) {
var $ptr, c, err, msg;
err = new RecordHeaderError.ptr("", arrayType$4.zero());
c = this;
err.Msg = msg;
$copySlice(new sliceType$8(err.RecordHeader), c.rawInput.data);
RecordHeaderError.copy(err, err);
return err;
};
Conn.prototype.newRecordHeaderError = function(msg) { return this.$val.newRecordHeaderError(msg); };
Conn.ptr.prototype.readRecord = function(want) {
var $ptr, _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$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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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$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:
c = this;
_1 = want;
/* */ if ((_1 === (22)) || (_1 === (20))) { $s = 2; continue; }
/* */ if (_1 === (23)) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if ((_1 === (22)) || (_1 === (20))) { */ case 2:
/* */ if (c.handshakeComplete) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (c.handshakeComplete) { */ case 6:
_r = c.sendAlert(80); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
$s = -1; return c.in$25.setErrorLocked(errors.New("tls: handshake or ChangeCipherSpec requested while not in handshake"));
/* } */ case 7:
$s = 5; continue;
/* } else if (_1 === (23)) { */ case 3:
/* */ if (!c.handshakeComplete) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (!c.handshakeComplete) { */ case 9:
_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; }
_r$1;
$s = -1; return c.in$25.setErrorLocked(errors.New("tls: application data record requested while in handshake"));
/* } */ case 10:
$s = 5; continue;
/* } else { */ case 4:
_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; }
_r$2;
$s = -1; return c.in$25.setErrorLocked(errors.New("tls: unknown record type requested"));
/* } */ case 5:
case 1:
/* Again: */ case 13:
if (c.rawInput === ptrType$9.nil) {
c.rawInput = c.in$25.newBlock();
}
b = c.rawInput;
_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; }
err = _r$3;
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 15; continue; }
/* */ $s = 16; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 15:
_tuple = $assertType(err, net.Error, true);
e = _tuple[0];
ok = _tuple[1];
if (!ok) { _v = true; $s = 19; continue s; }
_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; }
_v = !_r$4; case 19:
/* */ if (_v) { $s = 17; continue; }
/* */ $s = 18; continue;
/* if (_v) { */ case 17:
c.in$25.setErrorLocked(err);
/* } */ case 18:
$s = -1; return err;
/* } */ case 16:
typ = (((x = b.data, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) << 24 >>> 24));
/* */ if ((want === 22) && (typ === 128)) { $s = 21; continue; }
/* */ $s = 22; continue;
/* if ((want === 22) && (typ === 128)) { */ case 21:
_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; }
_r$5;
$s = -1; return c.in$25.setErrorLocked((x$1 = c.newRecordHeaderError("unsupported SSLv2 handshake received"), new x$1.constructor.elem(x$1)));
/* } */ case 22:
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;
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));
/* */ if (c.haveVers && !((vers === c.vers))) { $s = 24; continue; }
/* */ $s = 25; continue;
/* if (c.haveVers && !((vers === c.vers))) { */ case 24:
_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; }
_r$6;
_r$7 = fmt.Sprintf("received record with version %x when expecting version %x", new sliceType$9([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; }
msg = _r$7;
$s = -1; return c.in$25.setErrorLocked((x$6 = c.newRecordHeaderError(msg), new x$6.constructor.elem(x$6)));
/* } */ case 25:
/* */ if (n > 18432) { $s = 28; continue; }
/* */ $s = 29; continue;
/* if (n > 18432) { */ case 28:
_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; }
_r$8;
_r$9 = fmt.Sprintf("oversized record received with length %d", new sliceType$9([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; }
msg$1 = _r$9;
$s = -1; return c.in$25.setErrorLocked((x$7 = c.newRecordHeaderError(msg$1), new x$7.constructor.elem(x$7)));
/* } */ case 29:
/* */ if (!c.haveVers) { $s = 32; continue; }
/* */ $s = 33; continue;
/* if (!c.haveVers) { */ case 32:
/* */ if ((!((typ === 21)) && !((typ === want))) || vers >= 4096) { $s = 34; continue; }
/* */ $s = 35; continue;
/* if ((!((typ === 21)) && !((typ === want))) || vers >= 4096) { */ case 34:
_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; }
_r$10;
$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)));
/* } */ case 35:
/* } */ case 33:
_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; }
err$1 = _r$11;
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 38; continue; }
/* */ $s = 39; continue;
/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 38:
if ($interfaceIsEqual(err$1, io.EOF)) {
err$1 = io.ErrUnexpectedEOF;
}
_tuple$1 = $assertType(err$1, net.Error, true);
e$1 = _tuple$1[0];
ok$1 = _tuple$1[1];
if (!ok$1) { _v$1 = true; $s = 42; continue s; }
_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; }
_v$1 = !_r$12; case 42:
/* */ if (_v$1) { $s = 40; continue; }
/* */ $s = 41; continue;
/* if (_v$1) { */ case 40:
c.in$25.setErrorLocked(err$1);
/* } */ case 41:
$s = -1; return err$1;
/* } */ case 39:
_tuple$2 = c.in$25.splitBlock(b, 5 + n >> 0);
b = _tuple$2[0];
c.rawInput = _tuple$2[1];
_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; }
_tuple$3 = _r$13;
ok$2 = _tuple$3[0];
off = _tuple$3[1];
alertValue = _tuple$3[2];
/* */ if (!ok$2) { $s = 45; continue; }
/* */ $s = 46; continue;
/* if (!ok$2) { */ case 45:
c.in$25.freeBlock(b);
_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; }
_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; }
$s = -1; return _r$15;
/* } */ case 46:
b.off = off;
data = $subslice(b.data, b.off);
/* */ if (data.$length > 16384) { $s = 49; continue; }
/* */ $s = 50; continue;
/* if (data.$length > 16384) { */ case 49:
_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; }
err$2 = _r$16;
c.in$25.freeBlock(b);
$s = -1; return c.in$25.setErrorLocked(err$2);
/* } */ case 50:
_2 = typ;
/* */ if (_2 === (21)) { $s = 53; continue; }
/* */ if (_2 === (20)) { $s = 54; continue; }
/* */ if (_2 === (23)) { $s = 55; continue; }
/* */ if (_2 === (22)) { $s = 56; continue; }
/* */ $s = 57; continue;
/* if (_2 === (21)) { */ case 53:
/* */ if (!((data.$length === 2))) { $s = 59; continue; }
/* */ $s = 60; continue;
/* if (!((data.$length === 2))) { */ case 59:
_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; }
_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; }
_r$18;
/* break; */ $s = 52; continue;
/* } */ case 60:
if ((((1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]) << 24 >>> 24)) === 0) {
c.in$25.setErrorLocked(io.EOF);
/* break; */ $s = 52; continue;
}
_3 = (0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]);
/* */ if (_3 === (1)) { $s = 64; continue; }
/* */ if (_3 === (2)) { $s = 65; continue; }
/* */ $s = 66; continue;
/* if (_3 === (1)) { */ case 64:
c.in$25.freeBlock(b);
/* goto Again */ $s = 13; continue;
$s = 67; continue;
/* } else if (_3 === (2)) { */ case 65:
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)))));
$s = 67; continue;
/* } else { */ case 66:
_r$19 = c.sendAlert(10); /* */ $s = 68; case 68: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
_r$20 = c.in$25.setErrorLocked(_r$19); /* */ $s = 69; case 69: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
_r$20;
/* } */ case 67:
case 63:
$s = 58; continue;
/* } else if (_2 === (20)) { */ case 54:
/* */ if (!((typ === want)) || !((data.$length === 1)) || !(((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) === 1))) { $s = 70; continue; }
/* */ $s = 71; continue;
/* if (!((typ === want)) || !((data.$length === 1)) || !(((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) === 1))) { */ case 70:
_r$21 = c.sendAlert(10); /* */ $s = 72; case 72: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
_r$22 = c.in$25.setErrorLocked(_r$21); /* */ $s = 73; case 73: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
_r$22;
/* break; */ $s = 52; continue;
/* } */ case 71:
err$3 = c.in$25.changeCipherSpec();
/* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 74; continue; }
/* */ $s = 75; continue;
/* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 74:
_r$23 = c.sendAlert($assertType(err$3, alert)); /* */ $s = 76; case 76: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
_r$24 = c.in$25.setErrorLocked(_r$23); /* */ $s = 77; case 77: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
_r$24;
/* } */ case 75:
$s = 58; continue;
/* } else if (_2 === (23)) { */ case 55:
/* */ if (!((typ === want))) { $s = 78; continue; }
/* */ $s = 79; continue;
/* if (!((typ === want))) { */ case 78:
_r$25 = c.sendAlert(10); /* */ $s = 80; case 80: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
_r$26 = c.in$25.setErrorLocked(_r$25); /* */ $s = 81; case 81: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
_r$26;
/* break; */ $s = 52; continue;
/* } */ case 79:
c.input = b;
b = ptrType$9.nil;
$s = 58; continue;
/* } else if (_2 === (22)) { */ case 56:
/* */ if (!((typ === want)) && !(c.isClient && !((c.config.Renegotiation === 0)))) { $s = 82; continue; }
/* */ $s = 83; continue;
/* if (!((typ === want)) && !(c.isClient && !((c.config.Renegotiation === 0)))) { */ case 82:
_r$27 = c.sendAlert(100); /* */ $s = 84; case 84: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
_r$28 = c.in$25.setErrorLocked(_r$27); /* */ $s = 85; case 85: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; }
$s = -1; return _r$28;
/* } */ case 83:
c.hand.Write(data);
$s = 58; continue;
/* } else { */ case 57:
_r$29 = c.sendAlert(10); /* */ $s = 86; case 86: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; }
_r$30 = c.in$25.setErrorLocked(_r$29); /* */ $s = 87; case 87: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; }
_r$30;
/* } */ case 58:
case 52:
if (!(b === ptrType$9.nil)) {
c.in$25.freeBlock(b);
}
$s = -1; return c.in$25.err;
/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.readRecord }; } $f.$ptr = $ptr; $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$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;
};
Conn.prototype.readRecord = function(want) { return this.$val.readRecord(want); };
Conn.ptr.prototype.sendAlertLocked = function(err) {
var $ptr, _1, _r, _tuple, c, err, writeErr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
c = this;
_1 = err;
if ((_1 === (100)) || (_1 === (0))) {
c.tmp[0] = 1;
} else {
c.tmp[0] = 2;
}
c.tmp[1] = ((err << 24 >>> 24));
_r = c.writeRecordLocked(21, $subslice(new sliceType$8(c.tmp), 0, 2)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
writeErr = _tuple[1];
if (err === 0) {
$s = -1; return writeErr;
}
$s = -1; return c.out.setErrorLocked(new net.OpError.ptr("local error", "", $ifaceNil, $ifaceNil, new alert(err)));
/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.sendAlertLocked }; } $f.$ptr = $ptr; $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;
};
Conn.prototype.sendAlertLocked = function(err) { return this.$val.sendAlertLocked(err); };
Conn.ptr.prototype.sendAlert = function(err) {
var $ptr, _r, c, err, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
c = this;
$r = c.out.Mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(c.out.Mutex, "Unlock"), []]);
_r = c.sendAlertLocked(err); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } 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.$ptr = $ptr; $f._r = _r; $f.c = c; $f.err = err; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Conn.prototype.sendAlert = function(err) { return this.$val.sendAlert(err); };
Conn.ptr.prototype.maxPayloadSizeForWrite = function(typ, explicitIVLen) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
c = this;
if (c.config.DynamicRecordSizingDisabled || !((typ === 23))) {
$s = -1; return 16384;
}
if ((x = c.bytesSent, (x.$high > 0 || (x.$high === 0 && x.$low >= 131072)))) {
$s = -1; return 16384;
}
macSize = 0;
/* */ if (!($interfaceIsEqual(c.out.mac, $ifaceNil))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!($interfaceIsEqual(c.out.mac, $ifaceNil))) { */ case 1:
_r = c.out.mac.Size(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
macSize = _r;
/* } */ case 2:
payloadBytes = 1203 - explicitIVLen >> 0;
/* */ if (!($interfaceIsEqual(c.out.cipher, $ifaceNil))) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!($interfaceIsEqual(c.out.cipher, $ifaceNil))) { */ case 4:
_ref = c.out.cipher;
/* */ if ($assertType(_ref, cipher.Stream, true)[1]) { $s = 6; continue; }
/* */ if ($assertType(_ref, cipher.AEAD, true)[1]) { $s = 7; continue; }
/* */ if ($assertType(_ref, cbcMode, true)[1]) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if ($assertType(_ref, cipher.Stream, true)[1]) { */ case 6:
ciph = _ref;
payloadBytes = payloadBytes - (macSize) >> 0;
$s = 10; continue;
/* } else if ($assertType(_ref, cipher.AEAD, true)[1]) { */ case 7:
ciph$1 = _ref;
_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; }
payloadBytes = payloadBytes - (_r$1) >> 0;
$s = 10; continue;
/* } else if ($assertType(_ref, cbcMode, true)[1]) { */ case 8:
ciph$2 = _ref;
_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; }
blockSize = _r$2;
payloadBytes = ((payloadBytes & (~((blockSize - 1 >> 0)) >> 0))) - 1 >> 0;
payloadBytes = payloadBytes - (macSize) >> 0;
$s = 10; continue;
/* } else { */ case 9:
ciph$3 = _ref;
$panic(new $String("unknown cipher type"));
/* } */ case 10:
/* } */ case 5:
pkt = c.packetsSent;
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));
if ((pkt.$high > 0 || (pkt.$high === 0 && pkt.$low > 1000))) {
$s = -1; return 16384;
}
n = $imul(payloadBytes, (((x$3 = new $Int64(pkt.$high + 0, pkt.$low + 1), x$3.$low + ((x$3.$high >> 31) * 4294967296)) >> 0)));
if (n > 16384) {
n = 16384;
}
$s = -1; return n;
/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.maxPayloadSizeForWrite }; } $f.$ptr = $ptr; $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;
};
Conn.prototype.maxPayloadSizeForWrite = function(typ, explicitIVLen) { return this.$val.maxPayloadSizeForWrite(typ, explicitIVLen); };
Conn.ptr.prototype.write = function(data) {
var $ptr, _r, _tuple, c, data, err, n, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
c = this;
if (c.buffering) {
c.sendBuf = $appendSlice(c.sendBuf, data);
$s = -1; return [data.$length, $ifaceNil];
}
_r = c.conn.Write(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
c.bytesSent = (x = c.bytesSent, x$1 = (new $Int64(0, n)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.write }; } $f.$ptr = $ptr; $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;
};
Conn.prototype.write = function(data) { return this.$val.write(data); };
Conn.ptr.prototype.flush = function() {
var $ptr, _r, _tuple, c, err, n, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
c = this;
if (c.sendBuf.$length === 0) {
$s = -1; return [0, $ifaceNil];
}
_r = c.conn.Write(c.sendBuf); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
c.bytesSent = (x = c.bytesSent, x$1 = (new $Int64(0, n)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
c.sendBuf = sliceType$8.nil;
c.buffering = false;
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.flush }; } $f.$ptr = $ptr; $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;
};
Conn.prototype.flush = function() { return this.$val.flush(); };
Conn.ptr.prototype.writeRecordLocked = function(typ, data) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
c = this;
b = c.out.newBlock();
$deferred.push([$methodVal(c.out, "freeBlock"), [b]]);
n = 0;
/* while (true) { */ case 1:
/* if (!(data.$length > 0)) { break; } */ if(!(data.$length > 0)) { $s = 2; continue; }
explicitIVLen = 0;
explicitIVIsSeq = false;
cbc = $ifaceNil;
/* */ if (c.out.version >= 770) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (c.out.version >= 770) { */ case 3:
ok = false;
_tuple = $assertType(c.out.cipher, cbcMode, true);
cbc = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (ok) { */ case 5:
_r = cbc.BlockSize(); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
explicitIVLen = _r;
/* } */ case 6:
/* } */ case 4:
/* */ if (explicitIVLen === 0) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (explicitIVLen === 0) { */ case 8:
_tuple$1 = $assertType(c.out.cipher, aead, true);
c$1 = _tuple$1[0];
ok$1 = _tuple$1[1];
/* */ if (ok$1) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (ok$1) { */ case 10:
_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; }
explicitIVLen = _r$1;
explicitIVIsSeq = explicitIVLen > 0;
/* } */ case 11:
/* } */ case 9:
m = data.$length;
_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; }
maxPayload = _r$2;
if (m > maxPayload) {
m = maxPayload;
}
b.resize((5 + explicitIVLen >> 0) + m >> 0);
(x = b.data, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = ((typ << 24 >>> 24))));
vers = c.vers;
if (vers === 0) {
vers = 769;
}
(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))));
(x$2 = b.data, (2 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 2] = ((vers << 24 >>> 24))));
(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))));
(x$4 = b.data, (4 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 4] = ((m << 24 >>> 24))));
/* */ if (explicitIVLen > 0) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if (explicitIVLen > 0) { */ case 14:
explicitIV = $subslice(b.data, 5, (5 + explicitIVLen >> 0));
/* */ if (explicitIVIsSeq) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (explicitIVIsSeq) { */ case 16:
$copySlice(explicitIV, new sliceType$8(c.out.seq));
$s = 18; continue;
/* } else { */ case 17:
_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; }
_tuple$2 = _r$3;
err = _tuple$2[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [n, err];
}
/* } */ case 18:
/* } */ case 15:
$copySlice($subslice(b.data, (5 + explicitIVLen >> 0)), data);
_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; }
_r$4;
_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; }
_tuple$3 = _r$5;
err$1 = _tuple$3[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return [n, err$1];
}
n = n + (m) >> 0;
data = $subslice(data, m);
/* } */ $s = 1; continue; case 2:
/* */ if (typ === 20) { $s = 22; continue; }
/* */ $s = 23; continue;
/* if (typ === 20) { */ case 22:
err$2 = c.out.changeCipherSpec();
/* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 24; continue; }
/* */ $s = 25; continue;
/* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 24:
_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; }
$s = -1; return [n, _r$6];
/* } */ case 25:
/* } */ case 23:
$s = -1; return [n, $ifaceNil];
/* */ } 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.$ptr = $ptr; $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; } }
};
Conn.prototype.writeRecordLocked = function(typ, data) { return this.$val.writeRecordLocked(typ, data); };
Conn.ptr.prototype.writeRecord = function(typ, data) {
var $ptr, _r, c, data, typ, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
c = this;
$r = c.out.Mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(c.out.Mutex, "Unlock"), []]);
_r = c.writeRecordLocked(typ, data); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } 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.$ptr = $ptr; $f._r = _r; $f.c = c; $f.data = data; $f.typ = typ; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Conn.prototype.writeRecord = function(typ, data) { return this.$val.writeRecord(typ, data); };
Conn.ptr.prototype.readHandshake = function() {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
c = this;
/* while (true) { */ case 1:
/* if (!(c.hand.Len() < 4)) { break; } */ if(!(c.hand.Len() < 4)) { $s = 2; continue; }
err = c.in$25.err;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [$ifaceNil, err];
}
_r = c.readRecord(22); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err$1 = _r;
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return [$ifaceNil, err$1];
}
/* } */ $s = 1; continue; case 2:
data = c.hand.Bytes();
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));
/* */ if (n > 65536) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (n > 65536) { */ case 4:
_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; }
_r$1;
_r$2 = fmt.Errorf("tls: handshake message of length %d bytes exceeds maximum of %d bytes", new sliceType$9([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; }
_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; }
$s = -1; return [$ifaceNil, _r$3];
/* } */ case 5:
/* while (true) { */ case 9:
/* if (!(c.hand.Len() < (4 + n >> 0))) { break; } */ if(!(c.hand.Len() < (4 + n >> 0))) { $s = 10; continue; }
err$2 = c.in$25.err;
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return [$ifaceNil, err$2];
}
_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; }
err$3 = _r$4;
if (!($interfaceIsEqual(err$3, $ifaceNil))) {
$s = -1; return [$ifaceNil, err$3];
}
/* } */ $s = 9; continue; case 10:
data = c.hand.Next(4 + n >> 0);
m = $ifaceNil;
_1 = (0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]);
/* */ if (_1 === (0)) { $s = 13; continue; }
/* */ if (_1 === (1)) { $s = 14; continue; }
/* */ if (_1 === (2)) { $s = 15; continue; }
/* */ if (_1 === (4)) { $s = 16; continue; }
/* */ if (_1 === (11)) { $s = 17; continue; }
/* */ if (_1 === (13)) { $s = 18; continue; }
/* */ if (_1 === (22)) { $s = 19; continue; }
/* */ if (_1 === (12)) { $s = 20; continue; }
/* */ if (_1 === (14)) { $s = 21; continue; }
/* */ if (_1 === (16)) { $s = 22; continue; }
/* */ if (_1 === (15)) { $s = 23; continue; }
/* */ if (_1 === (67)) { $s = 24; continue; }
/* */ if (_1 === (20)) { $s = 25; continue; }
/* */ $s = 26; continue;
/* if (_1 === (0)) { */ case 13:
m = new helloRequestMsg.ptr();
$s = 27; continue;
/* } else if (_1 === (1)) { */ case 14:
m = new clientHelloMsg.ptr(sliceType$8.nil, 0, sliceType$8.nil, sliceType$8.nil, sliceType$2.nil, sliceType$8.nil, false, "", false, false, sliceType$3.nil, sliceType$8.nil, false, sliceType$8.nil, sliceType$6.nil, sliceType$8.nil, false, sliceType$1.nil);
$s = 27; continue;
/* } else if (_1 === (2)) { */ case 15:
m = new serverHelloMsg.ptr(sliceType$8.nil, 0, sliceType$8.nil, sliceType$8.nil, 0, 0, false, sliceType$1.nil, false, sliceType$10.nil, false, sliceType$8.nil, false, "");
$s = 27; continue;
/* } else if (_1 === (4)) { */ case 16:
m = new newSessionTicketMsg.ptr(sliceType$8.nil, sliceType$8.nil);
$s = 27; continue;
/* } else if (_1 === (11)) { */ case 17:
m = new certificateMsg.ptr(sliceType$8.nil, sliceType$10.nil);
$s = 27; continue;
/* } else if (_1 === (13)) { */ case 18:
m = new certificateRequestMsg.ptr(sliceType$8.nil, c.vers >= 771, sliceType$8.nil, sliceType$6.nil, sliceType$10.nil);
$s = 27; continue;
/* } else if (_1 === (22)) { */ case 19:
m = new certificateStatusMsg.ptr(sliceType$8.nil, 0, sliceType$8.nil);
$s = 27; continue;
/* } else if (_1 === (12)) { */ case 20:
m = new serverKeyExchangeMsg.ptr(sliceType$8.nil, sliceType$8.nil);
$s = 27; continue;
/* } else if (_1 === (14)) { */ case 21:
m = new serverHelloDoneMsg.ptr();
$s = 27; continue;
/* } else if (_1 === (16)) { */ case 22:
m = new clientKeyExchangeMsg.ptr(sliceType$8.nil, sliceType$8.nil);
$s = 27; continue;
/* } else if (_1 === (15)) { */ case 23:
m = new certificateVerifyMsg.ptr(sliceType$8.nil, c.vers >= 771, new signatureAndHash.ptr(0, 0), sliceType$8.nil);
$s = 27; continue;
/* } else if (_1 === (67)) { */ case 24:
m = new nextProtoMsg.ptr(sliceType$8.nil, "");
$s = 27; continue;
/* } else if (_1 === (20)) { */ case 25:
m = new finishedMsg.ptr(sliceType$8.nil, sliceType$8.nil);
$s = 27; continue;
/* } else { */ case 26:
_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; }
_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; }
$s = -1; return [$ifaceNil, _r$6];
/* } */ case 27:
case 12:
data = $appendSlice((sliceType$8.nil), data);
_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; }
/* */ if (!_r$7) { $s = 30; continue; }
/* */ $s = 31; continue;
/* if (!_r$7) { */ case 30:
_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; }
_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; }
$s = -1; return [$ifaceNil, _r$9];
/* } */ case 31:
$s = -1; return [m, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.readHandshake }; } $f.$ptr = $ptr; $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;
};
Conn.prototype.readHandshake = function() { return this.$val.readHandshake(); };
Conn.ptr.prototype.Write = function(b) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
c = this;
while (true) {
x = atomic.LoadInt32((c.$ptr_activeCall || (c.$ptr_activeCall = new ptrType$10(function() { return this.$target.activeCall; }, function($v) { this.$target.activeCall = $v; }, c))));
if (!(((x & 1) === 0))) {
$s = -1; return [0, errClosed];
}
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)) {
$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]]);
break;
}
}
_r = c.Handshake(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [0, err];
}
$r = c.out.Mutex.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(c.out.Mutex, "Unlock"), []]);
err$1 = c.out.err;
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return [0, err$1];
}
if (!c.handshakeComplete) {
$s = -1; return [0, new alert(80)];
}
if (c.closeNotifySent) {
$s = -1; return [0, errShutdown];
}
m = 0;
/* */ if (b.$length > 1 && c.vers <= 769) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (b.$length > 1 && c.vers <= 769) { */ case 3:
_tuple = $assertType(c.out.cipher, cipher.BlockMode, true);
ok = _tuple[1];
/* */ if (ok) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (ok) { */ case 5:
_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; }
_tuple$1 = _r$1;
n = _tuple$1[0];
err$2 = _tuple$1[1];
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return [n, c.out.setErrorLocked(err$2)];
}
_tmp = 1;
_tmp$1 = $subslice(b, 1);
m = _tmp;
b = _tmp$1;
/* } */ case 6:
/* } */ case 4:
_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; }
_tuple$2 = _r$2;
n$1 = _tuple$2[0];
err$3 = _tuple$2[1];
$s = -1; return [n$1 + m >> 0, c.out.setErrorLocked(err$3)];
/* */ } 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.$ptr = $ptr; $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; } }
};
Conn.prototype.Write = function(b) { return this.$val.Write(b); };
Conn.ptr.prototype.handleRenegotiation = function() {
var $ptr, _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, c, err, msg, ok, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
c = this;
_r = c.readHandshake(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
msg = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
_tuple$1 = $assertType(msg, ptrType$11, true);
ok = _tuple$1[1];
/* */ if (!ok) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!ok) { */ case 2:
_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; }
_r$1;
$s = -1; return new alert(10);
/* } */ case 3:
/* */ if (!c.isClient) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (!c.isClient) { */ case 5:
_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; }
$s = -1; return _r$2;
/* } */ case 6:
_1 = c.config.Renegotiation;
/* */ if (_1 === (0)) { $s = 9; continue; }
/* */ if (_1 === (1)) { $s = 10; continue; }
/* */ if (_1 === (2)) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if (_1 === (0)) { */ case 9:
_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; }
$s = -1; return _r$3;
/* } else if (_1 === (1)) { */ case 10:
/* */ if (c.handshakes > 1) { $s = 15; continue; }
/* */ $s = 16; continue;
/* if (c.handshakes > 1) { */ case 15:
_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; }
$s = -1; return _r$4;
/* } */ case 16:
$s = 13; continue;
/* } else if (_1 === (2)) { */ case 11:
$s = 13; continue;
/* } else { */ case 12:
_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; }
_r$5;
$s = -1; return errors.New("tls: unknown Renegotiation value");
/* } */ case 13:
case 8:
$r = c.handshakeMutex.Lock(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(c.handshakeMutex, "Unlock"), []]);
c.handshakeComplete = false;
_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; }
c.handshakeErr = _r$6;
if ($interfaceIsEqual(c.handshakeErr, $ifaceNil)) {
c.handshakes = c.handshakes + (1) >> 0;
}
$s = -1; return c.handshakeErr;
/* */ } 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.$ptr = $ptr; $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; } }
};
Conn.prototype.handleRenegotiation = function() { return this.$val.handleRenegotiation(); };
Conn.ptr.prototype.Read = function(b) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
n = 0;
err = $ifaceNil;
c = this;
_r = c.Handshake(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [n, err];
}
if (b.$length === 0) {
$s = -1; return [n, err];
}
$r = c.in$25.Mutex.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(c.in$25.Mutex, "Unlock"), []]);
emptyRecordCount = 0;
/* while (true) { */ case 3:
/* if (!(emptyRecordCount <= 100)) { break; } */ if(!(emptyRecordCount <= 100)) { $s = 4; continue; }
/* while (true) { */ case 5:
/* 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; }
_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; }
err$1 = _r$1;
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
_tmp = 0;
_tmp$1 = err$1;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
/* */ if (c.hand.Len() > 0) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (c.hand.Len() > 0) { */ case 8:
_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; }
err$2 = _r$2;
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
_tmp$2 = 0;
_tmp$3 = err$2;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
}
/* } */ case 9:
/* } */ $s = 5; continue; case 6:
err$3 = c.in$25.err;
if (!($interfaceIsEqual(err$3, $ifaceNil))) {
_tmp$4 = 0;
_tmp$5 = err$3;
n = _tmp$4;
err = _tmp$5;
$s = -1; return [n, err];
}
_tuple = c.input.Read(b);
n = _tuple[0];
err = _tuple[1];
if (c.input.off >= c.input.data.$length) {
c.in$25.freeBlock(c.input);
c.input = ptrType$9.nil;
}
ri = c.rawInput;
/* */ 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; }
/* */ $s = 12; continue;
/* 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:
_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; }
recErr = _r$3;
if (!($interfaceIsEqual(recErr, $ifaceNil))) {
err = recErr;
}
/* } */ case 12:
if (!((n === 0)) || !($interfaceIsEqual(err, $ifaceNil))) {
_tmp$6 = n;
_tmp$7 = err;
n = _tmp$6;
err = _tmp$7;
$s = -1; return [n, err];
}
emptyRecordCount = emptyRecordCount + (1) >> 0;
/* } */ $s = 3; continue; case 4:
_tmp$8 = 0;
_tmp$9 = io.ErrNoProgress;
n = _tmp$8;
err = _tmp$9;
$s = -1; return [n, err];
/* */ } 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.$ptr = $ptr; $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; } }
};
Conn.prototype.Read = function(b) { return this.$val.Read(b); };
Conn.ptr.prototype.Close = function() {
var $ptr, _r, _r$1, _r$2, alertErr, c, err, x, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; $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);
c = this;
x = 0;
while (true) {
x = atomic.LoadInt32((c.$ptr_activeCall || (c.$ptr_activeCall = new ptrType$10(function() { return this.$target.activeCall; }, function($v) { this.$target.activeCall = $v; }, c))));
if (!(((x & 1) === 0))) {
$s = -1; return errClosed;
}
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)) {
break;
}
}
/* */ if (!((x === 0))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!((x === 0))) { */ case 1:
_r = c.conn.Close(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 2:
alertErr = $ifaceNil;
$r = c.handshakeMutex.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(c.handshakeMutex, "Unlock"), []]);
/* */ if (c.handshakeComplete) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (c.handshakeComplete) { */ case 5:
_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; }
alertErr = _r$1;
/* } */ case 6:
_r$2 = c.conn.Close(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
err = _r$2;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
$s = -1; return alertErr;
/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.Close }; } $f.$ptr = $ptr; $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.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Conn.prototype.Close = function() { return this.$val.Close(); };
Conn.ptr.prototype.CloseWrite = function() {
var $ptr, _r, c, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
c = this;
$r = c.handshakeMutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(c.handshakeMutex, "Unlock"), []]);
if (!c.handshakeComplete) {
$s = -1; return errEarlyCloseWrite;
}
_r = c.closeNotify(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } 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.$ptr = $ptr; $f._r = _r; $f.c = c; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Conn.prototype.CloseWrite = function() { return this.$val.CloseWrite(); };
Conn.ptr.prototype.closeNotify = function() {
var $ptr, _r, c, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
c = this;
$r = c.out.Mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(c.out.Mutex, "Unlock"), []]);
/* */ if (!c.closeNotifySent) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!c.closeNotifySent) { */ case 2:
_r = c.sendAlertLocked(0); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
c.closeNotifyErr = _r;
c.closeNotifySent = true;
/* } */ case 3:
$s = -1; return c.closeNotifyErr;
/* */ } 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.$ptr = $ptr; $f._r = _r; $f.c = c; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Conn.prototype.closeNotify = function() { return this.$val.closeNotify(); };
Conn.ptr.prototype.Handshake = function() {
var $ptr, _r, _r$1, _r$2, c, err, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
c = this;
$r = c.handshakeMutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(c.handshakeMutex, "Unlock"), []]);
/* while (true) { */ case 2:
err = c.handshakeErr;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
if (c.handshakeComplete) {
$s = -1; return $ifaceNil;
}
if (c.handshakeCond === ptrType$12.nil) {
/* break; */ $s = 3; continue;
}
$r = c.handshakeCond.Wait(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ $s = 2; continue; case 3:
c.handshakeCond = sync.NewCond(c.handshakeMutex);
$r = c.handshakeMutex.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = c.in$25.Mutex.Lock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(c.in$25.Mutex, "Unlock"), []]);
$r = c.handshakeMutex.Lock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (!($interfaceIsEqual(c.handshakeErr, $ifaceNil)) || c.handshakeComplete) {
$panic(new $String("handshake should not have been able to complete after handshakeCond was set"));
}
/* */ if (c.isClient) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (c.isClient) { */ case 8:
_r = c.clientHandshake(); /* */ $s = 11; case 11: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
c.handshakeErr = _r;
$s = 10; continue;
/* } else { */ case 9:
_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; }
c.handshakeErr = _r$1;
/* } */ case 10:
/* */ if ($interfaceIsEqual(c.handshakeErr, $ifaceNil)) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if ($interfaceIsEqual(c.handshakeErr, $ifaceNil)) { */ case 13:
c.handshakes = c.handshakes + (1) >> 0;
$s = 15; continue;
/* } else { */ case 14:
_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; }
_r$2;
/* } */ case 15:
if ($interfaceIsEqual(c.handshakeErr, $ifaceNil) && !c.handshakeComplete) {
$panic(new $String("handshake should have had a result."));
}
$r = c.handshakeCond.Broadcast(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
c.handshakeCond = ptrType$12.nil;
$s = -1; return c.handshakeErr;
/* */ } 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.$ptr = $ptr; $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; } }
};
Conn.prototype.Handshake = function() { return this.$val.Handshake(); };
Conn.ptr.prototype.ConnectionState = function() {
var $ptr, c, state, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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);
c = this;
$r = c.handshakeMutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(c.handshakeMutex, "Unlock"), []]);
state = new ConnectionState.ptr(0, false, false, 0, "", false, "", sliceType$11.nil, sliceType$12.nil, sliceType$10.nil, sliceType$8.nil, sliceType$8.nil);
state.HandshakeComplete = c.handshakeComplete;
state.ServerName = c.serverName;
if (c.handshakeComplete) {
state.Version = c.vers;
state.NegotiatedProtocol = c.clientProtocol;
state.DidResume = c.didResume;
state.NegotiatedProtocolIsMutual = !c.clientProtocolFallback;
state.CipherSuite = c.cipherSuite;
state.PeerCertificates = c.peerCertificates;
state.VerifiedChains = c.verifiedChains;
state.SignedCertificateTimestamps = c.scts;
state.OCSPResponse = c.ocspResponse;
if (!c.didResume) {
if (c.clientFinishedIsFirst) {
state.TLSUnique = new sliceType$8(c.clientFinished);
} else {
state.TLSUnique = new sliceType$8(c.serverFinished);
}
}
}
$s = -1; return state;
/* */ } return; } } catch(err) { $err = err; $s = -1; return new ConnectionState.ptr(0, false, false, 0, "", false, "", sliceType$11.nil, sliceType$12.nil, sliceType$10.nil, sliceType$8.nil, sliceType$8.nil); } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.ConnectionState }; } $f.$ptr = $ptr; $f.c = c; $f.state = state; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Conn.prototype.ConnectionState = function() { return this.$val.ConnectionState(); };
Conn.ptr.prototype.OCSPResponse = function() {
var $ptr, c, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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);
c = this;
$r = c.handshakeMutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(c.handshakeMutex, "Unlock"), []]);
$s = -1; return c.ocspResponse;
/* */ } return; } } catch(err) { $err = err; $s = -1; return sliceType$8.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.OCSPResponse }; } $f.$ptr = $ptr; $f.c = c; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Conn.prototype.OCSPResponse = function() { return this.$val.OCSPResponse(); };
Conn.ptr.prototype.VerifyHostname = function(host) {
var $ptr, c, host, x, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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);
c = this;
$r = c.handshakeMutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(c.handshakeMutex, "Unlock"), []]);
if (!c.isClient) {
$s = -1; return errors.New("tls: VerifyHostname called on TLS server connection");
}
if (!c.handshakeComplete) {
$s = -1; return errors.New("tls: handshake has not yet been performed");
}
if (c.verifiedChains.$length === 0) {
$s = -1; return errors.New("tls: handshake did not verify certificate chain");
}
$s = -1; return (x = c.peerCertificates, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).VerifyHostname(host);
/* */ } 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.$ptr = $ptr; $f.c = c; $f.host = host; $f.x = x; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Conn.prototype.VerifyHostname = function(host) { return this.$val.VerifyHostname(host); };
Conn.ptr.prototype.clientHandshake = function() {
var $ptr, _i, _i$1, _i$2, _i$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, _ref, _ref$1, _ref$2, _ref$3, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, c, cacheKey, candidateSession, cipherSuiteOk, err, err$1, err$10, err$11, err$12, err$13, err$2, err$3, err$4, err$5, err$6, err$7, err$8, err$9, hello, hs, id, isResume, l, msg, nextProtosLength, ok, ok$1, possibleCipherSuites, proto, serverHello, session, sessionCache, suite, suite$1, suiteId, vers, versOk, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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$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; _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; _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; cacheKey = $f.cacheKey; candidateSession = $f.candidateSession; cipherSuiteOk = $f.cipherSuiteOk; err = $f.err; err$1 = $f.err$1; err$10 = $f.err$10; err$11 = $f.err$11; err$12 = $f.err$12; err$13 = $f.err$13; 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; hello = $f.hello; hs = $f.hs; id = $f.id; isResume = $f.isResume; l = $f.l; msg = $f.msg; nextProtosLength = $f.nextProtosLength; ok = $f.ok; ok$1 = $f.ok$1; possibleCipherSuites = $f.possibleCipherSuites; proto = $f.proto; serverHello = $f.serverHello; session = $f.session; sessionCache = $f.sessionCache; suite = $f.suite; suite$1 = $f.suite$1; suiteId = $f.suiteId; vers = $f.vers; versOk = $f.versOk; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
if (c.config === ptrType$1.nil) {
c.config = defaultConfig();
}
c.didResume = false;
if ((c.config.ServerName.length === 0) && !c.config.InsecureSkipVerify) {
$s = -1; return errors.New("tls: either ServerName or InsecureSkipVerify must be specified in the tls.Config");
}
nextProtosLength = 0;
_ref = c.config.NextProtos;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
proto = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
l = proto.length;
if ((l === 0) || l > 255) {
$s = -1; return errors.New("tls: invalid NextProtos value");
} else {
nextProtosLength = nextProtosLength + ((1 + l >> 0)) >> 0;
}
_i++;
}
if (nextProtosLength > 65535) {
$s = -1; return errors.New("tls: NextProtos values too large");
}
hello = new clientHelloMsg.ptr(sliceType$8.nil, c.config.maxVersion(), $makeSlice(sliceType$8, 32), sliceType$8.nil, sliceType$2.nil, new sliceType$8([0]), c.config.NextProtos.$length > 0, hostnameInSNI(c.config.ServerName), true, true, c.config.curvePreferences(), new sliceType$8([0]), false, sliceType$8.nil, sliceType$6.nil, sliceType$8.nil, true, c.config.NextProtos);
if (c.handshakes > 0) {
hello.secureRenegotiation = new sliceType$8(c.clientFinished);
}
_r = c.config.cipherSuites(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
possibleCipherSuites = _r;
hello.cipherSuites = $makeSlice(sliceType$2, 0, possibleCipherSuites.$length);
_ref$1 = possibleCipherSuites;
_i$1 = 0;
/* while (true) { */ case 2:
/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 3; continue; }
suiteId = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
_ref$2 = cipherSuites;
_i$2 = 0;
while (true) {
if (!(_i$2 < _ref$2.$length)) { break; }
suite = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]);
if (!((suite.id === suiteId))) {
_i$2++;
continue;
}
if (hello.vers < 771 && !(((suite.flags & 4) === 0))) {
_i$2++;
continue;
}
hello.cipherSuites = $append(hello.cipherSuites, suiteId);
_i$1++;
/* continue NextCipherSuite; */ $s = 2; continue s;
}
_i$1++;
/* } */ $s = 2; continue; case 3:
_r$1 = io.ReadFull(c.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; }
_tuple = _r$1;
err = _tuple[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 5:
_r$2 = c.sendAlert(80); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
_r$3 = err.Error(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$4 = errors.New("tls: short read from Rand: " + _r$3); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
$s = -1; return _r$4;
/* } */ case 6:
if (hello.vers >= 771) {
hello.signatureAndHashes = supportedSignatureAlgorithms;
}
session = ptrType$8.nil;
cacheKey = "";
sessionCache = c.config.ClientSessionCache;
if (c.config.SessionTicketsDisabled) {
sessionCache = $ifaceNil;
}
if (!($interfaceIsEqual(sessionCache, $ifaceNil))) {
hello.ticketSupported = true;
}
/* */ if (!($interfaceIsEqual(sessionCache, $ifaceNil)) && (c.handshakes === 0)) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (!($interfaceIsEqual(sessionCache, $ifaceNil)) && (c.handshakes === 0)) { */ case 10:
_r$5 = c.conn.RemoteAddr(); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_r$6 = clientSessionCacheKey(_r$5, c.config); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
cacheKey = _r$6;
_r$7 = sessionCache.Get(cacheKey); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_tuple$1 = _r$7;
candidateSession = _tuple$1[0];
ok = _tuple$1[1];
if (ok) {
cipherSuiteOk = false;
_ref$3 = hello.cipherSuites;
_i$3 = 0;
while (true) {
if (!(_i$3 < _ref$3.$length)) { break; }
id = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]);
if (id === candidateSession.cipherSuite) {
cipherSuiteOk = true;
break;
}
_i$3++;
}
versOk = candidateSession.vers >= c.config.minVersion() && candidateSession.vers <= c.config.maxVersion();
if (versOk && cipherSuiteOk) {
session = candidateSession;
}
}
/* } */ case 11:
/* */ if (!(session === ptrType$8.nil)) { $s = 15; continue; }
/* */ $s = 16; continue;
/* if (!(session === ptrType$8.nil)) { */ case 15:
hello.sessionTicket = session.sessionTicket;
hello.sessionId = $makeSlice(sliceType$8, 16);
_r$8 = io.ReadFull(c.config.rand(), hello.sessionId); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_tuple$2 = _r$8;
err$1 = _tuple$2[1];
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 18; continue; }
/* */ $s = 19; continue;
/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 18:
_r$9 = c.sendAlert(80); /* */ $s = 20; case 20: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
_r$9;
_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; }
_r$11 = errors.New("tls: short read from Rand: " + _r$10); /* */ $s = 22; case 22: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
$s = -1; return _r$11;
/* } */ case 19:
/* } */ case 16:
_r$12 = c.writeRecord(22, hello.marshal()); /* */ $s = 23; case 23: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
_tuple$3 = _r$12;
err$2 = _tuple$3[1];
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return err$2;
}
_r$13 = c.readHandshake(); /* */ $s = 24; case 24: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
_tuple$4 = _r$13;
msg = _tuple$4[0];
err = _tuple$4[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
_tuple$5 = $assertType(msg, ptrType$14, true);
serverHello = _tuple$5[0];
ok$1 = _tuple$5[1];
/* */ if (!ok$1) { $s = 25; continue; }
/* */ $s = 26; continue;
/* if (!ok$1) { */ case 25:
_r$14 = c.sendAlert(10); /* */ $s = 27; case 27: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
_r$14;
_r$15 = unexpectedMessageError(serverHello, msg); /* */ $s = 28; case 28: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
$s = -1; return _r$15;
/* } */ case 26:
_tuple$6 = c.config.mutualVersion(serverHello.vers);
vers = _tuple$6[0];
ok$1 = _tuple$6[1];
/* */ if (!ok$1 || vers < 769) { $s = 29; continue; }
/* */ $s = 30; continue;
/* if (!ok$1 || vers < 769) { */ case 29:
_r$16 = c.sendAlert(70); /* */ $s = 31; case 31: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
_r$16;
_r$17 = fmt.Errorf("tls: server selected unsupported protocol version %x", new sliceType$9([new $Uint16(serverHello.vers)])); /* */ $s = 32; case 32: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
$s = -1; return _r$17;
/* } */ case 30:
c.vers = vers;
c.haveVers = true;
suite$1 = mutualCipherSuite(hello.cipherSuites, serverHello.cipherSuite);
/* */ if (suite$1 === ptrType$2.nil) { $s = 33; continue; }
/* */ $s = 34; continue;
/* if (suite$1 === ptrType$2.nil) { */ case 33:
_r$18 = c.sendAlert(40); /* */ $s = 35; case 35: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
_r$18;
$s = -1; return errors.New("tls: server chose an unconfigured cipher suite");
/* } */ case 34:
_r$19 = newFinishedHash(c.vers, suite$1); /* */ $s = 36; case 36: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
hs = new clientHandshakeState.ptr(c, serverHello, hello, suite$1, $clone(_r$19, finishedHash), sliceType$8.nil, session);
_r$20 = hs.processServerHello(); /* */ $s = 37; case 37: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
_tuple$7 = _r$20;
isResume = _tuple$7[0];
err = _tuple$7[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
if (isResume || ((c.config.Certificates.$length === 0) && c.config.GetClientCertificate === $throwNilPointerError)) {
hs.finishedHash.discardHandshakeBuffer();
}
_r$21 = hs.finishedHash.Write(hs.hello.marshal()); /* */ $s = 38; case 38: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
_r$21;
_r$22 = hs.finishedHash.Write(hs.serverHello.marshal()); /* */ $s = 39; case 39: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
_r$22;
c.buffering = true;
/* */ if (isResume) { $s = 40; continue; }
/* */ $s = 41; continue;
/* if (isResume) { */ case 40:
_r$23 = hs.establishKeys(); /* */ $s = 43; case 43: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
err$3 = _r$23;
if (!($interfaceIsEqual(err$3, $ifaceNil))) {
$s = -1; return err$3;
}
_r$24 = hs.readSessionTicket(); /* */ $s = 44; case 44: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
err$4 = _r$24;
if (!($interfaceIsEqual(err$4, $ifaceNil))) {
$s = -1; return err$4;
}
_r$25 = hs.readFinished(new sliceType$8(c.serverFinished)); /* */ $s = 45; case 45: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
err$5 = _r$25;
if (!($interfaceIsEqual(err$5, $ifaceNil))) {
$s = -1; return err$5;
}
c.clientFinishedIsFirst = false;
_r$26 = hs.sendFinished(new sliceType$8(c.clientFinished)); /* */ $s = 46; case 46: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
err$6 = _r$26;
if (!($interfaceIsEqual(err$6, $ifaceNil))) {
$s = -1; return err$6;
}
_r$27 = c.flush(); /* */ $s = 47; case 47: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
_tuple$8 = _r$27;
err$7 = _tuple$8[1];
if (!($interfaceIsEqual(err$7, $ifaceNil))) {
$s = -1; return err$7;
}
$s = 42; continue;
/* } else { */ case 41:
_r$28 = hs.doFullHandshake(); /* */ $s = 48; case 48: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; }
err$8 = _r$28;
if (!($interfaceIsEqual(err$8, $ifaceNil))) {
$s = -1; return err$8;
}
_r$29 = hs.establishKeys(); /* */ $s = 49; case 49: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; }
err$9 = _r$29;
if (!($interfaceIsEqual(err$9, $ifaceNil))) {
$s = -1; return err$9;
}
_r$30 = hs.sendFinished(new sliceType$8(c.clientFinished)); /* */ $s = 50; case 50: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; }
err$10 = _r$30;
if (!($interfaceIsEqual(err$10, $ifaceNil))) {
$s = -1; return err$10;
}
_r$31 = c.flush(); /* */ $s = 51; case 51: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; }
_tuple$9 = _r$31;
err$11 = _tuple$9[1];
if (!($interfaceIsEqual(err$11, $ifaceNil))) {
$s = -1; return err$11;
}
c.clientFinishedIsFirst = true;
_r$32 = hs.readSessionTicket(); /* */ $s = 52; case 52: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; }
err$12 = _r$32;
if (!($interfaceIsEqual(err$12, $ifaceNil))) {
$s = -1; return err$12;
}
_r$33 = hs.readFinished(new sliceType$8(c.serverFinished)); /* */ $s = 53; case 53: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; }
err$13 = _r$33;
if (!($interfaceIsEqual(err$13, $ifaceNil))) {
$s = -1; return err$13;
}
/* } */ case 42:
/* */ if (!($interfaceIsEqual(sessionCache, $ifaceNil)) && !(hs.session === ptrType$8.nil) && !(session === hs.session)) { $s = 54; continue; }
/* */ $s = 55; continue;
/* if (!($interfaceIsEqual(sessionCache, $ifaceNil)) && !(hs.session === ptrType$8.nil) && !(session === hs.session)) { */ case 54:
$r = sessionCache.Put(cacheKey, hs.session); /* */ $s = 56; case 56: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 55:
c.didResume = isResume;
c.handshakeComplete = true;
c.cipherSuite = suite$1.id;
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.clientHandshake }; } $f.$ptr = $ptr; $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$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._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._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.cacheKey = cacheKey; $f.candidateSession = candidateSession; $f.cipherSuiteOk = cipherSuiteOk; $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$13 = err$13; $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.hello = hello; $f.hs = hs; $f.id = id; $f.isResume = isResume; $f.l = l; $f.msg = msg; $f.nextProtosLength = nextProtosLength; $f.ok = ok; $f.ok$1 = ok$1; $f.possibleCipherSuites = possibleCipherSuites; $f.proto = proto; $f.serverHello = serverHello; $f.session = session; $f.sessionCache = sessionCache; $f.suite = suite; $f.suite$1 = suite$1; $f.suiteId = suiteId; $f.vers = vers; $f.versOk = versOk; $f.$s = $s; $f.$r = $r; return $f;
};
Conn.prototype.clientHandshake = function() { return this.$val.clientHandshake(); };
clientHandshakeState.ptr.prototype.doFullHandshake = function() {
var $ptr, _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$55, _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, ok$2, opts, preMasterSecret, shd, signatureType, skx, x, x$1, x$2, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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$55 = $f._r$55; _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; ok$2 = $f.ok$2; 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:
hs = this;
c = hs.c;
_r = c.readHandshake(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
msg = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
_tuple$1 = $assertType(msg, ptrType$17, true);
certMsg = _tuple$1[0];
ok = _tuple$1[1];
/* */ if (!ok || (certMsg.certificates.$length === 0)) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!ok || (certMsg.certificates.$length === 0)) { */ case 2:
_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; }
_r$1;
_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; }
$s = -1; return _r$2;
/* } */ case 3:
_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; }
_r$3;
/* */ if (c.handshakes === 0) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (c.handshakes === 0) { */ case 7:
certs = $makeSlice(sliceType$11, certMsg.certificates.$length);
_ref = certMsg.certificates;
_i = 0;
/* while (true) { */ case 10:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 11; continue; }
i = _i;
asn1Data = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_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; }
_tuple$2 = _r$4;
cert = _tuple$2[0];
err$1 = _tuple$2[1];
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 13:
_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; }
_r$5;
_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; }
_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; }
$s = -1; return _r$7;
/* } */ case 14:
((i < 0 || i >= certs.$length) ? ($throwRuntimeError("index out of range"), undefined) : certs.$array[certs.$offset + i] = cert);
_i++;
/* } */ $s = 10; continue; case 11:
/* */ if (!c.config.InsecureSkipVerify) { $s = 18; continue; }
/* */ $s = 19; continue;
/* if (!c.config.InsecureSkipVerify) { */ case 18:
_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; }
opts = new x509.VerifyOptions.ptr(c.config.ServerName, x509.NewCertPool(), c.config.RootCAs, $clone(_r$8, time.Time), sliceType$13.nil);
_ref$1 = certs;
_i$1 = 0;
/* while (true) { */ case 21:
/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 22; continue; }
i$1 = _i$1;
cert$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
if (i$1 === 0) {
_i$1++;
/* continue; */ $s = 21; continue;
}
opts.Intermediates.AddCert(cert$1);
_i$1++;
/* } */ $s = 21; continue; case 22:
_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; }
_tuple$3 = _r$9;
c.verifiedChains = _tuple$3[0];
err = _tuple$3[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 24; continue; }
/* */ $s = 25; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 24:
_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; }
_r$10;
$s = -1; return err;
/* } */ case 25:
/* } */ case 19:
/* */ if (!(c.config.VerifyPeerCertificate === $throwNilPointerError)) { $s = 27; continue; }
/* */ $s = 28; continue;
/* if (!(c.config.VerifyPeerCertificate === $throwNilPointerError)) { */ case 27:
_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; }
err$2 = _r$11;
/* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 30; continue; }
/* */ $s = 31; continue;
/* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 30:
_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; }
_r$12;
$s = -1; return err$2;
/* } */ case 31:
/* } */ case 28:
_ref$2 = (0 >= certs.$length ? ($throwRuntimeError("index out of range"), undefined) : certs.$array[certs.$offset + 0]).PublicKey;
/* */ if ($assertType(_ref$2, ptrType$19, true)[1] || $assertType(_ref$2, ptrType$20, true)[1]) { $s = 33; continue; }
/* */ $s = 34; continue;
/* switch (0) { default: if ($assertType(_ref$2, ptrType$19, true)[1] || $assertType(_ref$2, ptrType$20, true)[1]) { */ case 33:
/* break; */ $s = 35; continue;
$s = 35; continue;
/* } else { */ case 34:
_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; }
_r$13;
_r$14 = fmt.Errorf("tls: server's certificate contains an unsupported type of public key: %T", new sliceType$9([(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; }
$s = -1; return _r$14;
/* } } */ case 35:
c.peerCertificates = certs;
$s = 9; continue;
/* } else { */ case 8:
/* */ 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; }
/* */ $s = 39; continue;
/* 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:
_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; }
_r$15;
$s = -1; return errors.New("tls: server's identity changed during renegotiation");
/* } */ case 39:
/* } */ case 9:
/* */ if (hs.serverHello.ocspStapling) { $s = 41; continue; }
/* */ $s = 42; continue;
/* if (hs.serverHello.ocspStapling) { */ case 41:
_r$16 = c.readHandshake(); /* */ $s = 43; case 43: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
_tuple$4 = _r$16;
msg = _tuple$4[0];
err = _tuple$4[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
_tuple$5 = $assertType(msg, ptrType$21, true);
cs = _tuple$5[0];
ok$1 = _tuple$5[1];
/* */ if (!ok$1) { $s = 44; continue; }
/* */ $s = 45; continue;
/* if (!ok$1) { */ case 44:
_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; }
_r$17;
_r$18 = unexpectedMessageError(cs, msg); /* */ $s = 47; case 47: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
$s = -1; return _r$18;
/* } */ case 45:
_r$19 = hs.finishedHash.Write(cs.marshal()); /* */ $s = 48; case 48: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
_r$19;
if (cs.statusType === 1) {
c.ocspResponse = cs.response;
}
/* } */ case 42:
_r$20 = c.readHandshake(); /* */ $s = 49; case 49: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
_tuple$6 = _r$20;
msg = _tuple$6[0];
err = _tuple$6[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
_r$21 = hs.suite.ka(c.vers); /* */ $s = 50; case 50: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
keyAgreement$1 = _r$21;
_tuple$7 = $assertType(msg, ptrType$22, true);
skx = _tuple$7[0];
ok = _tuple$7[1];
/* */ if (ok) { $s = 51; continue; }
/* */ $s = 52; continue;
/* if (ok) { */ case 51:
_r$22 = hs.finishedHash.Write(skx.marshal()); /* */ $s = 53; case 53: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
_r$22;
_r$23 = 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 = 54; case 54: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
err = _r$23;
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 55; continue; }
/* */ $s = 56; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 55:
_r$24 = c.sendAlert(10); /* */ $s = 57; case 57: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
_r$24;
$s = -1; return err;
/* } */ case 56:
_r$25 = c.readHandshake(); /* */ $s = 58; case 58: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
_tuple$8 = _r$25;
msg = _tuple$8[0];
err = _tuple$8[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
/* } */ case 52:
chainToSend = ptrType$4.nil;
certRequested = false;
_tuple$9 = $assertType(msg, ptrType$23, true);
certReq = _tuple$9[0];
ok = _tuple$9[1];
/* */ if (ok) { $s = 59; continue; }
/* */ $s = 60; continue;
/* if (ok) { */ case 59:
certRequested = true;
_r$26 = hs.finishedHash.Write(certReq.marshal()); /* */ $s = 61; case 61: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
_r$26;
_r$27 = hs.getCertificate(certReq); /* */ $s = 62; case 62: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
_tuple$10 = _r$27;
chainToSend = _tuple$10[0];
err = _tuple$10[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 63; continue; }
/* */ $s = 64; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 63:
_r$28 = c.sendAlert(80); /* */ $s = 65; case 65: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; }
_r$28;
$s = -1; return err;
/* } */ case 64:
_r$29 = c.readHandshake(); /* */ $s = 66; case 66: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; }
_tuple$11 = _r$29;
msg = _tuple$11[0];
err = _tuple$11[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
/* } */ case 60:
_tuple$12 = $assertType(msg, ptrType$24, true);
shd = _tuple$12[0];
ok = _tuple$12[1];
/* */ if (!ok) { $s = 67; continue; }
/* */ $s = 68; continue;
/* if (!ok) { */ case 67:
_r$30 = c.sendAlert(10); /* */ $s = 69; case 69: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; }
_r$30;
_r$31 = unexpectedMessageError(shd, msg); /* */ $s = 70; case 70: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; }
$s = -1; return _r$31;
/* } */ case 68:
_r$32 = hs.finishedHash.Write(shd.marshal()); /* */ $s = 71; case 71: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; }
_r$32;
/* */ if (certRequested) { $s = 72; continue; }
/* */ $s = 73; continue;
/* if (certRequested) { */ case 72:
certMsg = new certificateMsg.ptr(sliceType$8.nil, sliceType$10.nil);
certMsg.certificates = chainToSend.Certificate;
_r$33 = hs.finishedHash.Write(certMsg.marshal()); /* */ $s = 74; case 74: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; }
_r$33;
_r$34 = c.writeRecord(22, certMsg.marshal()); /* */ $s = 75; case 75: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; }
_tuple$13 = _r$34;
err$3 = _tuple$13[1];
if (!($interfaceIsEqual(err$3, $ifaceNil))) {
$s = -1; return err$3;
}
/* } */ case 73:
_r$35 = 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 = 76; case 76: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; }
_tuple$14 = _r$35;
preMasterSecret = _tuple$14[0];
ckx = _tuple$14[1];
err = _tuple$14[2];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 77; continue; }
/* */ $s = 78; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 77:
_r$36 = c.sendAlert(80); /* */ $s = 79; case 79: if($c) { $c = false; _r$36 = _r$36.$blk(); } if (_r$36 && _r$36.$blk !== undefined) { break s; }
_r$36;
$s = -1; return err;
/* } */ case 78:
/* */ if (!(ckx === ptrType$25.nil)) { $s = 80; continue; }
/* */ $s = 81; continue;
/* if (!(ckx === ptrType$25.nil)) { */ case 80:
_r$37 = hs.finishedHash.Write(ckx.marshal()); /* */ $s = 82; case 82: if($c) { $c = false; _r$37 = _r$37.$blk(); } if (_r$37 && _r$37.$blk !== undefined) { break s; }
_r$37;
_r$38 = c.writeRecord(22, ckx.marshal()); /* */ $s = 83; case 83: if($c) { $c = false; _r$38 = _r$38.$blk(); } if (_r$38 && _r$38.$blk !== undefined) { break s; }
_tuple$15 = _r$38;
err$4 = _tuple$15[1];
if (!($interfaceIsEqual(err$4, $ifaceNil))) {
$s = -1; return err$4;
}
/* } */ case 81:
/* */ if (!(chainToSend === ptrType$4.nil) && chainToSend.Certificate.$length > 0) { $s = 84; continue; }
/* */ $s = 85; continue;
/* if (!(chainToSend === ptrType$4.nil) && chainToSend.Certificate.$length > 0) { */ case 84:
certVerify = new certificateVerifyMsg.ptr(sliceType$8.nil, c.vers >= 771, new signatureAndHash.ptr(0, 0), sliceType$8.nil);
_tuple$16 = $assertType(chainToSend.PrivateKey, crypto.Signer, true);
key = _tuple$16[0];
ok$2 = _tuple$16[1];
/* */ if (!ok$2) { $s = 86; continue; }
/* */ $s = 87; continue;
/* if (!ok$2) { */ case 86:
_r$39 = c.sendAlert(80); /* */ $s = 88; case 88: if($c) { $c = false; _r$39 = _r$39.$blk(); } if (_r$39 && _r$39.$blk !== undefined) { break s; }
_r$39;
_r$40 = fmt.Errorf("tls: client certificate private key of type %T does not implement crypto.Signer", new sliceType$9([chainToSend.PrivateKey])); /* */ $s = 89; case 89: if($c) { $c = false; _r$40 = _r$40.$blk(); } if (_r$40 && _r$40.$blk !== undefined) { break s; }
$s = -1; return _r$40;
/* } */ case 87:
signatureType = 0;
_r$41 = key.Public(); /* */ $s = 90; case 90: if($c) { $c = false; _r$41 = _r$41.$blk(); } if (_r$41 && _r$41.$blk !== undefined) { break s; }
_ref$3 = _r$41;
/* */ if ($assertType(_ref$3, ptrType$20, true)[1]) { $s = 91; continue; }
/* */ if ($assertType(_ref$3, ptrType$19, true)[1]) { $s = 92; continue; }
/* */ $s = 93; continue;
/* if ($assertType(_ref$3, ptrType$20, true)[1]) { */ case 91:
signatureType = 3;
$s = 94; continue;
/* } else if ($assertType(_ref$3, ptrType$19, true)[1]) { */ case 92:
signatureType = 1;
$s = 94; continue;
/* } else { */ case 93:
_r$42 = c.sendAlert(80); /* */ $s = 95; case 95: if($c) { $c = false; _r$42 = _r$42.$blk(); } if (_r$42 && _r$42.$blk !== undefined) { break s; }
_r$42;
_r$43 = fmt.Errorf("tls: failed to sign handshake with client certificate: unknown client certificate key type: %T", new sliceType$9([key])); /* */ $s = 96; case 96: if($c) { $c = false; _r$43 = _r$43.$blk(); } if (_r$43 && _r$43.$blk !== undefined) { break s; }
$s = -1; return _r$43;
/* } */ case 94:
_tuple$17 = $clone(hs.finishedHash, finishedHash).selectClientCertSignatureAlgorithm(certReq.signatureAndHashes, signatureType);
signatureAndHash.copy(certVerify.signatureAndHash, _tuple$17[0]);
err = _tuple$17[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 97; continue; }
/* */ $s = 98; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 97:
_r$44 = c.sendAlert(80); /* */ $s = 99; case 99: if($c) { $c = false; _r$44 = _r$44.$blk(); } if (_r$44 && _r$44.$blk !== undefined) { break s; }
_r$44;
$s = -1; return err;
/* } */ case 98:
_r$45 = $clone(hs.finishedHash, finishedHash).hashForClientCertificate($clone(certVerify.signatureAndHash, signatureAndHash), hs.masterSecret); /* */ $s = 100; case 100: if($c) { $c = false; _r$45 = _r$45.$blk(); } if (_r$45 && _r$45.$blk !== undefined) { break s; }
_tuple$18 = _r$45;
digest = _tuple$18[0];
hashFunc = _tuple$18[1];
err$5 = _tuple$18[2];
/* */ if (!($interfaceIsEqual(err$5, $ifaceNil))) { $s = 101; continue; }
/* */ $s = 102; continue;
/* if (!($interfaceIsEqual(err$5, $ifaceNil))) { */ case 101:
_r$46 = c.sendAlert(80); /* */ $s = 103; case 103: if($c) { $c = false; _r$46 = _r$46.$blk(); } if (_r$46 && _r$46.$blk !== undefined) { break s; }
_r$46;
$s = -1; return err$5;
/* } */ case 102:
_r$47 = key.Sign(c.config.rand(), digest, new crypto.Hash(hashFunc)); /* */ $s = 104; case 104: if($c) { $c = false; _r$47 = _r$47.$blk(); } if (_r$47 && _r$47.$blk !== undefined) { break s; }
_tuple$19 = _r$47;
certVerify.signature = _tuple$19[0];
err$5 = _tuple$19[1];
/* */ if (!($interfaceIsEqual(err$5, $ifaceNil))) { $s = 105; continue; }
/* */ $s = 106; continue;
/* if (!($interfaceIsEqual(err$5, $ifaceNil))) { */ case 105:
_r$48 = c.sendAlert(80); /* */ $s = 107; case 107: if($c) { $c = false; _r$48 = _r$48.$blk(); } if (_r$48 && _r$48.$blk !== undefined) { break s; }
_r$48;
$s = -1; return err$5;
/* } */ case 106:
_r$49 = hs.finishedHash.Write(certVerify.marshal()); /* */ $s = 108; case 108: if($c) { $c = false; _r$49 = _r$49.$blk(); } if (_r$49 && _r$49.$blk !== undefined) { break s; }
_r$49;
_r$50 = c.writeRecord(22, certVerify.marshal()); /* */ $s = 109; case 109: if($c) { $c = false; _r$50 = _r$50.$blk(); } if (_r$50 && _r$50.$blk !== undefined) { break s; }
_tuple$20 = _r$50;
err$6 = _tuple$20[1];
if (!($interfaceIsEqual(err$6, $ifaceNil))) {
$s = -1; return err$6;
}
/* } */ case 85:
_r$51 = masterFromPreMasterSecret(c.vers, hs.suite, preMasterSecret, hs.hello.random, hs.serverHello.random); /* */ $s = 110; case 110: if($c) { $c = false; _r$51 = _r$51.$blk(); } if (_r$51 && _r$51.$blk !== undefined) { break s; }
hs.masterSecret = _r$51;
_r$52 = c.config.writeKeyLog(hs.hello.random, hs.masterSecret); /* */ $s = 111; case 111: if($c) { $c = false; _r$52 = _r$52.$blk(); } if (_r$52 && _r$52.$blk !== undefined) { break s; }
err$7 = _r$52;
/* */ if (!($interfaceIsEqual(err$7, $ifaceNil))) { $s = 112; continue; }
/* */ $s = 113; continue;
/* if (!($interfaceIsEqual(err$7, $ifaceNil))) { */ case 112:
_r$53 = c.sendAlert(80); /* */ $s = 114; case 114: if($c) { $c = false; _r$53 = _r$53.$blk(); } if (_r$53 && _r$53.$blk !== undefined) { break s; }
_r$53;
_r$54 = err$7.Error(); /* */ $s = 115; case 115: if($c) { $c = false; _r$54 = _r$54.$blk(); } if (_r$54 && _r$54.$blk !== undefined) { break s; }
_r$55 = errors.New("tls: failed to write to key log: " + _r$54); /* */ $s = 116; case 116: if($c) { $c = false; _r$55 = _r$55.$blk(); } if (_r$55 && _r$55.$blk !== undefined) { break s; }
$s = -1; return _r$55;
/* } */ case 113:
hs.finishedHash.discardHandshakeBuffer();
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: clientHandshakeState.ptr.prototype.doFullHandshake }; } $f.$ptr = $ptr; $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$55 = _r$55; $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.ok$2 = ok$2; $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;
};
clientHandshakeState.prototype.doFullHandshake = function() { return this.$val.doFullHandshake(); };
clientHandshakeState.ptr.prototype.establishKeys = function() {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
hs = this;
c = hs.c;
_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; }
_tuple = _r;
clientMAC = _tuple[0];
serverMAC = _tuple[1];
clientKey = _tuple[2];
serverKey = _tuple[3];
clientIV = _tuple[4];
serverIV = _tuple[5];
_tmp = $ifaceNil;
_tmp$1 = $ifaceNil;
clientCipher = _tmp;
serverCipher = _tmp$1;
_tmp$2 = $ifaceNil;
_tmp$3 = $ifaceNil;
clientHash = _tmp$2;
serverHash = _tmp$3;
/* */ if (!(hs.suite.cipher === $throwNilPointerError)) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!(hs.suite.cipher === $throwNilPointerError)) { */ case 2:
_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; }
clientCipher = _r$1;
_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; }
clientHash = _r$2;
_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; }
serverCipher = _r$3;
_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; }
serverHash = _r$4;
$s = 4; continue;
/* } else { */ case 3:
_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; }
clientCipher = _r$5;
_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; }
serverCipher = _r$6;
/* } */ case 4:
c.in$25.prepareCipherSpec(c.vers, serverCipher, serverHash);
c.out.prepareCipherSpec(c.vers, clientCipher, clientHash);
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: clientHandshakeState.ptr.prototype.establishKeys }; } $f.$ptr = $ptr; $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;
};
clientHandshakeState.prototype.establishKeys = function() { return this.$val.establishKeys(); };
clientHandshakeState.ptr.prototype.serverResumedSession = function() {
var $ptr, hs;
hs = this;
return !(hs.session === ptrType$8.nil) && !(hs.hello.sessionId === sliceType$8.nil) && bytes.Equal(hs.serverHello.sessionId, hs.hello.sessionId);
};
clientHandshakeState.prototype.serverResumedSession = function() { return this.$val.serverResumedSession(); };
clientHandshakeState.ptr.prototype.processServerHello = function() {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, c, clientDidALPN, clientDidNPN, expectedSecureRenegotiation, hs, serverHasALPN, serverHasNPN, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
hs = this;
c = hs.c;
/* */ if (!((hs.serverHello.compressionMethod === 0))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!((hs.serverHello.compressionMethod === 0))) { */ case 1:
_r = c.sendAlert(10); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
$s = -1; return [false, errors.New("tls: server selected unsupported compression format")];
/* } */ case 2:
/* */ if ((c.handshakes === 0) && hs.serverHello.secureRenegotiationSupported) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if ((c.handshakes === 0) && hs.serverHello.secureRenegotiationSupported) { */ case 4:
c.secureRenegotiation = true;
/* */ if (!((hs.serverHello.secureRenegotiation.$length === 0))) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!((hs.serverHello.secureRenegotiation.$length === 0))) { */ case 6:
_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; }
_r$1;
$s = -1; return [false, errors.New("tls: initial handshake had non-empty renegotiation extension")];
/* } */ case 7:
/* } */ case 5:
/* */ if (c.handshakes > 0 && c.secureRenegotiation) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (c.handshakes > 0 && c.secureRenegotiation) { */ case 9:
expectedSecureRenegotiation = arrayType$5.zero();
$copySlice(new sliceType$8(expectedSecureRenegotiation), new sliceType$8(c.clientFinished));
$copySlice($subslice(new sliceType$8(expectedSecureRenegotiation), 12), new sliceType$8(c.serverFinished));
/* */ if (!bytes.Equal(hs.serverHello.secureRenegotiation, new sliceType$8(expectedSecureRenegotiation))) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if (!bytes.Equal(hs.serverHello.secureRenegotiation, new sliceType$8(expectedSecureRenegotiation))) { */ case 11:
_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; }
_r$2;
$s = -1; return [false, errors.New("tls: incorrect renegotiation extension contents")];
/* } */ case 12:
/* } */ case 10:
clientDidNPN = hs.hello.nextProtoNeg;
clientDidALPN = hs.hello.alpnProtocols.$length > 0;
serverHasNPN = hs.serverHello.nextProtoNeg;
serverHasALPN = hs.serverHello.alpnProtocol.length > 0;
/* */ if (!clientDidNPN && serverHasNPN) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if (!clientDidNPN && serverHasNPN) { */ case 14:
_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; }
_r$3;
$s = -1; return [false, errors.New("tls: server advertised unrequested NPN extension")];
/* } */ case 15:
/* */ if (!clientDidALPN && serverHasALPN) { $s = 17; continue; }
/* */ $s = 18; continue;
/* if (!clientDidALPN && serverHasALPN) { */ case 17:
_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; }
_r$4;
$s = -1; return [false, errors.New("tls: server advertised unrequested ALPN extension")];
/* } */ case 18:
/* */ if (serverHasNPN && serverHasALPN) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if (serverHasNPN && serverHasALPN) { */ case 20:
_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; }
_r$5;
$s = -1; return [false, errors.New("tls: server advertised both NPN and ALPN extensions")];
/* } */ case 21:
if (serverHasALPN) {
c.clientProtocol = hs.serverHello.alpnProtocol;
c.clientProtocolFallback = false;
}
c.scts = hs.serverHello.scts;
if (!hs.serverResumedSession()) {
$s = -1; return [false, $ifaceNil];
}
/* */ if (!((hs.session.vers === c.vers))) { $s = 23; continue; }
/* */ $s = 24; continue;
/* if (!((hs.session.vers === c.vers))) { */ case 23:
_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; }
_r$6;
$s = -1; return [false, errors.New("tls: server resumed a session with a different version")];
/* } */ case 24:
/* */ if (!((hs.session.cipherSuite === hs.suite.id))) { $s = 26; continue; }
/* */ $s = 27; continue;
/* if (!((hs.session.cipherSuite === hs.suite.id))) { */ case 26:
_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; }
_r$7;
$s = -1; return [false, errors.New("tls: server resumed a session with a different cipher suite")];
/* } */ case 27:
hs.masterSecret = hs.session.masterSecret;
c.peerCertificates = hs.session.serverCertificates;
c.verifiedChains = hs.session.verifiedChains;
$s = -1; return [true, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: clientHandshakeState.ptr.prototype.processServerHello }; } $f.$ptr = $ptr; $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;
};
clientHandshakeState.prototype.processServerHello = function() { return this.$val.processServerHello(); };
clientHandshakeState.ptr.prototype.readFinished = function(out) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
hs = this;
c = hs.c;
_r = c.readRecord(20); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
if (!($interfaceIsEqual(c.in$25.err, $ifaceNil))) {
$s = -1; return c.in$25.err;
}
_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; }
_tuple = _r$1;
msg = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
_tuple$1 = $assertType(msg, ptrType$26, true);
serverFinished = _tuple$1[0];
ok = _tuple$1[1];
/* */ if (!ok) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!ok) { */ case 3:
_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; }
_r$2;
_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; }
$s = -1; return _r$3;
/* } */ case 4:
_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; }
verify = _r$4;
/* */ if (!((verify.$length === serverFinished.verifyData.$length)) || !((subtle.ConstantTimeCompare(verify, serverFinished.verifyData) === 1))) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (!((verify.$length === serverFinished.verifyData.$length)) || !((subtle.ConstantTimeCompare(verify, serverFinished.verifyData) === 1))) { */ case 8:
_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; }
_r$5;
$s = -1; return errors.New("tls: server's Finished message was incorrect");
/* } */ case 9:
_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; }
_r$6;
$copySlice(out, verify);
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: clientHandshakeState.ptr.prototype.readFinished }; } $f.$ptr = $ptr; $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;
};
clientHandshakeState.prototype.readFinished = function(out) { return this.$val.readFinished(out); };
clientHandshakeState.ptr.prototype.readSessionTicket = function() {
var $ptr, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, c, err, hs, msg, ok, sessionTicketMsg, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
hs = this;
if (!hs.serverHello.ticketSupported) {
$s = -1; return $ifaceNil;
}
c = hs.c;
_r = c.readHandshake(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
msg = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
_tuple$1 = $assertType(msg, ptrType$27, true);
sessionTicketMsg = _tuple$1[0];
ok = _tuple$1[1];
/* */ if (!ok) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!ok) { */ case 2:
_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; }
_r$1;
_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; }
$s = -1; return _r$2;
/* } */ case 3:
_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; }
_r$3;
hs.session = new ClientSessionState.ptr(sessionTicketMsg.ticket, c.vers, hs.suite.id, hs.masterSecret, c.peerCertificates, c.verifiedChains);
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: clientHandshakeState.ptr.prototype.readSessionTicket }; } $f.$ptr = $ptr; $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;
};
clientHandshakeState.prototype.readSessionTicket = function() { return this.$val.readSessionTicket(); };
clientHandshakeState.ptr.prototype.sendFinished = function(out) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
hs = this;
c = hs.c;
_r = c.writeRecord(20, new sliceType$8([1])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
/* */ if (hs.serverHello.nextProtoNeg) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (hs.serverHello.nextProtoNeg) { */ case 2:
nextProto = new nextProtoMsg.ptr(sliceType$8.nil, "");
_tuple$1 = mutualProtocol(c.config.NextProtos, hs.serverHello.nextProtos);
proto = _tuple$1[0];
fallback = _tuple$1[1];
nextProto.proto = proto;
c.clientProtocol = proto;
c.clientProtocolFallback = fallback;
_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; }
_r$1;
_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; }
_tuple$2 = _r$2;
err$1 = _tuple$2[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return err$1;
}
/* } */ case 3:
finished = new finishedMsg.ptr(sliceType$8.nil, sliceType$8.nil);
_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; }
finished.verifyData = _r$3;
_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; }
_r$4;
_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; }
_tuple$3 = _r$5;
err$2 = _tuple$3[1];
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return err$2;
}
$copySlice(out, finished.verifyData);
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: clientHandshakeState.ptr.prototype.sendFinished }; } $f.$ptr = $ptr; $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;
};
clientHandshakeState.prototype.sendFinished = function(out) { return this.$val.sendFinished(out); };
clientHandshakeState.ptr.prototype.getCertificate = function(certReq) {
var $ptr, _1, _i, _i$1, _i$2, _i$3, _i$4, _r, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _tmp, _tmp$1, _tuple, c, ca, cert, certReq, certType, chain, ecdsaAvail, err, hs, i, j, rsaAvail, sah, signatureSchemes, x509Cert, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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; _ref$4 = $f._ref$4; _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; sah = $f.sah; signatureSchemes = $f.signatureSchemes; x509Cert = $f.x509Cert; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
chain = [chain];
hs = this;
c = hs.c;
_tmp = false;
_tmp$1 = false;
rsaAvail = _tmp;
ecdsaAvail = _tmp$1;
_ref = certReq.certificateTypes;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
certType = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_1 = certType;
if (_1 === (1)) {
rsaAvail = true;
} else if (_1 === (64)) {
ecdsaAvail = true;
}
_i++;
}
/* */ if (!(c.config.GetClientCertificate === $throwNilPointerError)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(c.config.GetClientCertificate === $throwNilPointerError)) { */ case 1:
signatureSchemes = sliceType$7.nil;
if (!certReq.hasSignatureAndHash) {
signatureSchemes = tls11SignatureSchemes;
if (!ecdsaAvail) {
signatureSchemes = $subslice(signatureSchemes, 3);
}
if (!rsaAvail) {
signatureSchemes = $subslice(signatureSchemes, 0, (signatureSchemes.$length - 4 >> 0));
}
} else {
signatureSchemes = $makeSlice(sliceType$7, 0, certReq.signatureAndHashes.$length);
_ref$1 = certReq.signatureAndHashes;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
sah = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), signatureAndHash);
signatureSchemes = $append(signatureSchemes, (((sah.hash << 16 >>> 16)) << 8 << 16 >>> 16) + ((sah.signature << 16 >>> 16)) << 16 >>> 16);
_i$1++;
}
}
_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; }
$s = -1; return _r;
/* } */ case 2:
_ref$2 = c.config.Certificates;
_i$2 = 0;
/* while (true) { */ case 4:
/* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 5; continue; }
i = _i$2;
chain[0] = $clone(((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]), Certificate);
/* */ if (!rsaAvail && !ecdsaAvail) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!rsaAvail && !ecdsaAvail) { */ case 6:
_i$2++;
/* continue; */ $s = 4; continue;
/* } */ case 7:
_ref$3 = chain[0].Certificate;
_i$3 = 0;
/* while (true) { */ case 8:
/* if (!(_i$3 < _ref$3.$length)) { break; } */ if(!(_i$3 < _ref$3.$length)) { $s = 9; continue; }
j = _i$3;
cert = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]);
x509Cert = chain[0].Leaf;
/* */ if (!((j === 0)) || x509Cert === ptrType$13.nil) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (!((j === 0)) || x509Cert === ptrType$13.nil) { */ case 10:
err = $ifaceNil;
_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; }
_tuple = _r$1;
x509Cert = _tuple[0];
err = _tuple[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 13:
_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; }
_r$2;
_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; }
_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; }
$s = -1; return [ptrType$4.nil, _r$4];
/* } */ case 14:
/* } */ case 11:
if (rsaAvail && (x509Cert.PublicKeyAlgorithm === 1)) {
} else if (ecdsaAvail && (x509Cert.PublicKeyAlgorithm === 3)) {
} else {
_i$2++;
/* continue findCert; */ $s = 4; continue s;
}
if (certReq.certificateAuthorities.$length === 0) {
$s = -1; return [chain[0], $ifaceNil];
}
_ref$4 = certReq.certificateAuthorities;
_i$4 = 0;
while (true) {
if (!(_i$4 < _ref$4.$length)) { break; }
ca = ((_i$4 < 0 || _i$4 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$4]);
if (bytes.Equal(x509Cert.RawIssuer, ca)) {
$s = -1; return [chain[0], $ifaceNil];
}
_i$4++;
}
_i$3++;
/* } */ $s = 8; continue; case 9:
_i$2++;
/* } */ $s = 4; continue; case 5:
$s = -1; return [new Certificate.ptr(sliceType$10.nil, $ifaceNil, sliceType$8.nil, sliceType$10.nil, ptrType$13.nil), $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: clientHandshakeState.ptr.prototype.getCertificate }; } $f.$ptr = $ptr; $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._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._ref$4 = _ref$4; $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.sah = sah; $f.signatureSchemes = signatureSchemes; $f.x509Cert = x509Cert; $f.$s = $s; $f.$r = $r; return $f;
};
clientHandshakeState.prototype.getCertificate = function(certReq) { return this.$val.getCertificate(certReq); };
clientSessionCacheKey = function(serverAddr, config) {
var $ptr, _r, config, serverAddr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; config = $f.config; serverAddr = $f.serverAddr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
if (config.ServerName.length > 0) {
$s = -1; return config.ServerName;
}
_r = serverAddr.String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: clientSessionCacheKey }; } $f.$ptr = $ptr; $f._r = _r; $f.config = config; $f.serverAddr = serverAddr; $f.$s = $s; $f.$r = $r; return $f;
};
mutualProtocol = function(protos, preferenceProtos) {
var $ptr, _i, _i$1, _ref, _ref$1, c, preferenceProtos, protos, s;
_ref = preferenceProtos;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_ref$1 = protos;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
c = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
if (s === c) {
return [s, false];
}
_i$1++;
}
_i++;
}
return [(0 >= protos.$length ? ($throwRuntimeError("index out of range"), undefined) : protos.$array[protos.$offset + 0]), true];
};
hostnameInSNI = function(name) {
var $ptr, host, i, name;
host = name;
if (host.length > 0 && (host.charCodeAt(0) === 91) && (host.charCodeAt((host.length - 1 >> 0)) === 93)) {
host = $substring(host, 1, (host.length - 1 >> 0));
}
i = strings.LastIndex(host, "%");
if (i > 0) {
host = $substring(host, 0, i);
}
if (!(net.ParseIP(host) === net.IP.nil)) {
return "";
}
if (name.length > 0 && (name.charCodeAt((name.length - 1 >> 0)) === 46)) {
name = $substring(name, 0, (name.length - 1 >> 0));
}
return name;
};
clientHelloMsg.ptr.prototype.marshal = function() {
var $ptr, _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, sigAndHash, stringsLength, suite, x, x$1, x$2, y, z;
m = this;
if (!(m.raw === sliceType$8.nil)) {
return m.raw;
}
length = ((((35 + m.sessionId.$length >> 0) + 2 >> 0) + ($imul(m.cipherSuites.$length, 2)) >> 0) + 1 >> 0) + m.compressionMethods.$length >> 0;
numExtensions = 0;
extensionsLength = 0;
if (m.nextProtoNeg) {
numExtensions = numExtensions + (1) >> 0;
}
if (m.ocspStapling) {
extensionsLength = extensionsLength + (5) >> 0;
numExtensions = numExtensions + (1) >> 0;
}
if (m.serverName.length > 0) {
extensionsLength = extensionsLength + ((5 + m.serverName.length >> 0)) >> 0;
numExtensions = numExtensions + (1) >> 0;
}
if (m.supportedCurves.$length > 0) {
extensionsLength = extensionsLength + ((2 + ($imul(2, m.supportedCurves.$length)) >> 0)) >> 0;
numExtensions = numExtensions + (1) >> 0;
}
if (m.supportedPoints.$length > 0) {
extensionsLength = extensionsLength + ((1 + m.supportedPoints.$length >> 0)) >> 0;
numExtensions = numExtensions + (1) >> 0;
}
if (m.ticketSupported) {
extensionsLength = extensionsLength + (m.sessionTicket.$length) >> 0;
numExtensions = numExtensions + (1) >> 0;
}
if (m.signatureAndHashes.$length > 0) {
extensionsLength = extensionsLength + ((2 + ($imul(2, m.signatureAndHashes.$length)) >> 0)) >> 0;
numExtensions = numExtensions + (1) >> 0;
}
if (m.secureRenegotiationSupported) {
extensionsLength = extensionsLength + ((1 + m.secureRenegotiation.$length >> 0)) >> 0;
numExtensions = numExtensions + (1) >> 0;
}
if (m.alpnProtocols.$length > 0) {
extensionsLength = extensionsLength + (2) >> 0;
_ref = m.alpnProtocols;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
l = s.length;
if ((l === 0) || l > 255) {
$panic(new $String("invalid ALPN protocol"));
}
extensionsLength = extensionsLength + (1) >> 0;
extensionsLength = extensionsLength + (s.length) >> 0;
_i++;
}
numExtensions = numExtensions + (1) >> 0;
}
if (m.scts) {
numExtensions = numExtensions + (1) >> 0;
}
if (numExtensions > 0) {
extensionsLength = extensionsLength + (($imul(4, numExtensions))) >> 0;
length = length + ((2 + extensionsLength >> 0)) >> 0;
}
x = $makeSlice(sliceType$8, (4 + length >> 0));
(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 1);
(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = (((length >> 16 >> 0) << 24 >>> 24)));
(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (((length >> 8 >> 0) << 24 >>> 24)));
(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((length << 24 >>> 24)));
(4 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 4] = (((m.vers >>> 8 << 16 >>> 16) << 24 >>> 24)));
(5 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 5] = ((m.vers << 24 >>> 24)));
$copySlice($subslice(x, 6, 38), m.random);
(38 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 38] = ((m.sessionId.$length << 24 >>> 24)));
$copySlice($subslice(x, 39, (39 + m.sessionId.$length >> 0)), m.sessionId);
y = $subslice(x, (39 + m.sessionId.$length >> 0));
(0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0] = (((m.cipherSuites.$length >> 7 >> 0) << 24 >>> 24)));
(1 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 1] = (((m.cipherSuites.$length << 1 >> 0) << 24 >>> 24)));
_ref$1 = m.cipherSuites;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
i = _i$1;
suite = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
(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))));
(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))));
_i$1++;
}
z = $subslice(y, (2 + ($imul(m.cipherSuites.$length, 2)) >> 0));
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = ((m.compressionMethods.$length << 24 >>> 24)));
$copySlice($subslice(z, 1), m.compressionMethods);
z = $subslice(z, (1 + m.compressionMethods.$length >> 0));
if (numExtensions > 0) {
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = (((extensionsLength >> 8 >> 0) << 24 >>> 24)));
(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = ((extensionsLength << 24 >>> 24)));
z = $subslice(z, 2);
}
if (m.nextProtoNeg) {
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 51);
(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 116);
z = $subslice(z, 4);
}
if (m.serverName.length > 0) {
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 0);
(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 0);
l$1 = m.serverName.length + 5 >> 0;
(2 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 2] = (((l$1 >> 8 >> 0) << 24 >>> 24)));
(3 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 3] = ((l$1 << 24 >>> 24)));
z = $subslice(z, 4);
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = (((((m.serverName.length + 3 >> 0)) >> 8 >> 0) << 24 >>> 24)));
(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = (((m.serverName.length + 3 >> 0) << 24 >>> 24)));
(3 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 3] = (((m.serverName.length >> 8 >> 0) << 24 >>> 24)));
(4 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 4] = ((m.serverName.length << 24 >>> 24)));
$copySlice($subslice(z, 5), (new sliceType$8($stringToBytes(m.serverName))));
z = $subslice(z, l$1);
}
if (m.ocspStapling) {
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 0);
(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 5);
(2 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 2] = 0);
(3 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 3] = 5);
(4 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 4] = 1);
z = $subslice(z, 9);
}
if (m.supportedCurves.$length > 0) {
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 0);
(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 10);
l$2 = 2 + ($imul(2, m.supportedCurves.$length)) >> 0;
(2 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 2] = (((l$2 >> 8 >> 0) << 24 >>> 24)));
(3 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 3] = ((l$2 << 24 >>> 24)));
l$2 = l$2 - (2) >> 0;
(4 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 4] = (((l$2 >> 8 >> 0) << 24 >>> 24)));
(5 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 5] = ((l$2 << 24 >>> 24)));
z = $subslice(z, 6);
_ref$2 = m.supportedCurves;
_i$2 = 0;
while (true) {
if (!(_i$2 < _ref$2.$length)) { break; }
curve = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]);
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = (((curve >>> 8 << 16 >>> 16) << 24 >>> 24)));
(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = ((curve << 24 >>> 24)));
z = $subslice(z, 2);
_i$2++;
}
}
if (m.supportedPoints.$length > 0) {
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 0);
(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 11);
l$3 = 1 + m.supportedPoints.$length >> 0;
(2 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 2] = (((l$3 >> 8 >> 0) << 24 >>> 24)));
(3 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 3] = ((l$3 << 24 >>> 24)));
l$3 = l$3 - (1) >> 0;
(4 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 4] = ((l$3 << 24 >>> 24)));
z = $subslice(z, 5);
_ref$3 = m.supportedPoints;
_i$3 = 0;
while (true) {
if (!(_i$3 < _ref$3.$length)) { break; }
pointFormat = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]);
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = pointFormat);
z = $subslice(z, 1);
_i$3++;
}
}
if (m.ticketSupported) {
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 0);
(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 35);
l$4 = m.sessionTicket.$length;
(2 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 2] = (((l$4 >> 8 >> 0) << 24 >>> 24)));
(3 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 3] = ((l$4 << 24 >>> 24)));
z = $subslice(z, 4);
$copySlice(z, m.sessionTicket);
z = $subslice(z, m.sessionTicket.$length);
}
if (m.signatureAndHashes.$length > 0) {
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 0);
(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 13);
l$5 = 2 + ($imul(2, m.signatureAndHashes.$length)) >> 0;
(2 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 2] = (((l$5 >> 8 >> 0) << 24 >>> 24)));
(3 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 3] = ((l$5 << 24 >>> 24)));
z = $subslice(z, 4);
l$5 = l$5 - (2) >> 0;
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = (((l$5 >> 8 >> 0) << 24 >>> 24)));
(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = ((l$5 << 24 >>> 24)));
z = $subslice(z, 2);
_ref$4 = m.signatureAndHashes;
_i$4 = 0;
while (true) {
if (!(_i$4 < _ref$4.$length)) { break; }
sigAndHash = $clone(((_i$4 < 0 || _i$4 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$4]), signatureAndHash);
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = sigAndHash.hash);
(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = sigAndHash.signature);
z = $subslice(z, 2);
_i$4++;
}
}
if (m.secureRenegotiationSupported) {
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 255);
(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 1);
(2 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 2] = 0);
(3 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 3] = (((m.secureRenegotiation.$length + 1 >> 0) << 24 >>> 24)));
(4 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 4] = ((m.secureRenegotiation.$length << 24 >>> 24)));
z = $subslice(z, 5);
$copySlice(z, m.secureRenegotiation);
z = $subslice(z, m.secureRenegotiation.$length);
}
if (m.alpnProtocols.$length > 0) {
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 0);
(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 16);
lengths = $subslice(z, 2);
z = $subslice(z, 6);
stringsLength = 0;
_ref$5 = m.alpnProtocols;
_i$5 = 0;
while (true) {
if (!(_i$5 < _ref$5.$length)) { break; }
s$1 = ((_i$5 < 0 || _i$5 >= _ref$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$5.$array[_ref$5.$offset + _i$5]);
l$6 = s$1.length;
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = ((l$6 << 24 >>> 24)));
$copyString($subslice(z, 1), s$1);
z = $subslice(z, (1 + l$6 >> 0));
stringsLength = stringsLength + ((1 + l$6 >> 0)) >> 0;
_i$5++;
}
(2 >= lengths.$length ? ($throwRuntimeError("index out of range"), undefined) : lengths.$array[lengths.$offset + 2] = (((stringsLength >> 8 >> 0) << 24 >>> 24)));
(3 >= lengths.$length ? ($throwRuntimeError("index out of range"), undefined) : lengths.$array[lengths.$offset + 3] = ((stringsLength << 24 >>> 24)));
stringsLength = stringsLength + (2) >> 0;
(0 >= lengths.$length ? ($throwRuntimeError("index out of range"), undefined) : lengths.$array[lengths.$offset + 0] = (((stringsLength >> 8 >> 0) << 24 >>> 24)));
(1 >= lengths.$length ? ($throwRuntimeError("index out of range"), undefined) : lengths.$array[lengths.$offset + 1] = ((stringsLength << 24 >>> 24)));
}
if (m.scts) {
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 0);
(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 18);
z = $subslice(z, 4);
}
m.raw = x;
return x;
};
clientHelloMsg.prototype.marshal = function() { return this.$val.marshal(); };
clientHelloMsg.ptr.prototype.unmarshal = function(data) {
var $ptr, _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, x$6;
m = this;
if (data.$length < 42) {
return false;
}
m.raw = data;
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;
m.random = $subslice(data, 6, 38);
sessionIdLen = (((38 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 38]) >> 0));
if (sessionIdLen > 32 || data.$length < (39 + sessionIdLen >> 0)) {
return false;
}
m.sessionId = $subslice(data, 39, (39 + sessionIdLen >> 0));
data = $subslice(data, (39 + sessionIdLen >> 0));
if (data.$length < 2) {
return false;
}
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));
if (((_r = cipherSuiteLen % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 1) || data.$length < (2 + cipherSuiteLen >> 0)) {
return false;
}
numCipherSuites = (_q = cipherSuiteLen / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
m.cipherSuites = $makeSlice(sliceType$2, numCipherSuites);
i = 0;
while (true) {
if (!(i < numCipherSuites)) { break; }
(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)));
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) {
m.secureRenegotiationSupported = true;
}
i = i + (1) >> 0;
}
data = $subslice(data, (2 + cipherSuiteLen >> 0));
if (data.$length < 1) {
return false;
}
compressionMethodsLen = (((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) >> 0));
if (data.$length < (1 + compressionMethodsLen >> 0)) {
return false;
}
m.compressionMethods = $subslice(data, 1, (1 + compressionMethodsLen >> 0));
data = $subslice(data, (1 + compressionMethodsLen >> 0));
m.nextProtoNeg = false;
m.serverName = "";
m.ocspStapling = false;
m.ticketSupported = false;
m.sessionTicket = sliceType$8.nil;
m.signatureAndHashes = sliceType$6.nil;
m.alpnProtocols = sliceType$1.nil;
m.scts = false;
if (data.$length === 0) {
return true;
}
if (data.$length < 2) {
return false;
}
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));
data = $subslice(data, 2);
if (!((extensionsLength === data.$length))) {
return false;
}
while (true) {
if (!(!((data.$length === 0)))) { break; }
if (data.$length < 4) {
return false;
}
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;
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));
data = $subslice(data, 4);
if (data.$length < length) {
return false;
}
_1 = extension;
if (_1 === (0)) {
d = $subslice(data, 0, length);
if (d.$length < 2) {
return false;
}
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));
d = $subslice(d, 2);
if (!((d.$length === namesLen))) {
return false;
}
while (true) {
if (!(d.$length > 0)) { break; }
if (d.$length < 3) {
return false;
}
nameType = (0 >= d.$length ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + 0]);
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));
d = $subslice(d, 3);
if (d.$length < nameLen) {
return false;
}
if (nameType === 0) {
m.serverName = ($bytesToString($subslice(d, 0, nameLen)));
break;
}
d = $subslice(d, nameLen);
}
} else if (_1 === (13172)) {
if (length > 0) {
return false;
}
m.nextProtoNeg = true;
} else if (_1 === (5)) {
m.ocspStapling = length > 0 && ((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) === 1);
} else if (_1 === (10)) {
if (length < 2) {
return false;
}
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));
if (((_r$1 = l % 2, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 1) || !((length === (l + 2 >> 0)))) {
return false;
}
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"));
m.supportedCurves = $makeSlice(sliceType$3, numCurves);
d$1 = $subslice(data, 2);
i$1 = 0;
while (true) {
if (!(i$1 < numCurves)) { break; }
(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)));
d$1 = $subslice(d$1, 2);
i$1 = i$1 + (1) >> 0;
}
} else if (_1 === (11)) {
if (length < 1) {
return false;
}
l$1 = (((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) >> 0));
if (!((length === (l$1 + 1 >> 0)))) {
return false;
}
m.supportedPoints = $makeSlice(sliceType$8, l$1);
$copySlice(m.supportedPoints, $subslice(data, 1));
} else if (_1 === (35)) {
m.ticketSupported = true;
m.sessionTicket = $subslice(data, 0, length);
} else if (_1 === (13)) {
if (length < 2 || !(((length & 1) === 0))) {
return false;
}
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));
if (!((l$2 === (length - 2 >> 0)))) {
return false;
}
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"));
d$2 = $subslice(data, 2);
m.signatureAndHashes = $makeSlice(sliceType$6, n);
_ref = m.signatureAndHashes;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i$2 = _i;
(x$5 = m.signatureAndHashes, ((i$2 < 0 || i$2 >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + i$2])).hash = (0 >= d$2.$length ? ($throwRuntimeError("index out of range"), undefined) : d$2.$array[d$2.$offset + 0]);
(x$6 = m.signatureAndHashes, ((i$2 < 0 || i$2 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + i$2])).signature = (1 >= d$2.$length ? ($throwRuntimeError("index out of range"), undefined) : d$2.$array[d$2.$offset + 1]);
d$2 = $subslice(d$2, 2);
_i++;
}
} else if (_1 === (65281)) {
if (length === 0) {
return false;
}
d$3 = $subslice(data, 0, length);
l$3 = (((0 >= d$3.$length ? ($throwRuntimeError("index out of range"), undefined) : d$3.$array[d$3.$offset + 0]) >> 0));
d$3 = $subslice(d$3, 1);
if (!((l$3 === d$3.$length))) {
return false;
}
m.secureRenegotiation = d$3;
m.secureRenegotiationSupported = true;
} else if (_1 === (16)) {
if (length < 2) {
return false;
}
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));
if (!((l$4 === (length - 2 >> 0)))) {
return false;
}
d$4 = $subslice(data, 2, length);
while (true) {
if (!(!((d$4.$length === 0)))) { break; }
stringLen = (((0 >= d$4.$length ? ($throwRuntimeError("index out of range"), undefined) : d$4.$array[d$4.$offset + 0]) >> 0));
d$4 = $subslice(d$4, 1);
if ((stringLen === 0) || stringLen > d$4.$length) {
return false;
}
m.alpnProtocols = $append(m.alpnProtocols, ($bytesToString($subslice(d$4, 0, stringLen))));
d$4 = $subslice(d$4, stringLen);
}
} else if (_1 === (18)) {
m.scts = true;
if (!((length === 0))) {
return false;
}
}
data = $subslice(data, length);
}
return true;
};
clientHelloMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
serverHelloMsg.ptr.prototype.marshal = function() {
var $ptr, _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;
m = this;
if (!(m.raw === sliceType$8.nil)) {
return m.raw;
}
length = 38 + m.sessionId.$length >> 0;
numExtensions = 0;
extensionsLength = 0;
nextProtoLen = 0;
if (m.nextProtoNeg) {
numExtensions = numExtensions + (1) >> 0;
_ref = m.nextProtos;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
nextProtoLen = nextProtoLen + (v.length) >> 0;
_i++;
}
nextProtoLen = nextProtoLen + (m.nextProtos.$length) >> 0;
extensionsLength = extensionsLength + (nextProtoLen) >> 0;
}
if (m.ocspStapling) {
numExtensions = numExtensions + (1) >> 0;
}
if (m.ticketSupported) {
numExtensions = numExtensions + (1) >> 0;
}
if (m.secureRenegotiationSupported) {
extensionsLength = extensionsLength + ((1 + m.secureRenegotiation.$length >> 0)) >> 0;
numExtensions = numExtensions + (1) >> 0;
}
alpnLen = m.alpnProtocol.length;
if (alpnLen > 0) {
if (alpnLen >= 256) {
$panic(new $String("invalid ALPN protocol"));
}
extensionsLength = extensionsLength + ((3 + alpnLen >> 0)) >> 0;
numExtensions = numExtensions + (1) >> 0;
}
sctLen = 0;
if (m.scts.$length > 0) {
_ref$1 = m.scts;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
sct = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
sctLen = sctLen + ((sct.$length + 2 >> 0)) >> 0;
_i$1++;
}
extensionsLength = extensionsLength + ((2 + sctLen >> 0)) >> 0;
numExtensions = numExtensions + (1) >> 0;
}
if (numExtensions > 0) {
extensionsLength = extensionsLength + (($imul(4, numExtensions))) >> 0;
length = length + ((2 + extensionsLength >> 0)) >> 0;
}
x = $makeSlice(sliceType$8, (4 + length >> 0));
(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 2);
(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = (((length >> 16 >> 0) << 24 >>> 24)));
(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (((length >> 8 >> 0) << 24 >>> 24)));
(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((length << 24 >>> 24)));
(4 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 4] = (((m.vers >>> 8 << 16 >>> 16) << 24 >>> 24)));
(5 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 5] = ((m.vers << 24 >>> 24)));
$copySlice($subslice(x, 6, 38), m.random);
(38 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 38] = ((m.sessionId.$length << 24 >>> 24)));
$copySlice($subslice(x, 39, (39 + m.sessionId.$length >> 0)), m.sessionId);
z = $subslice(x, (39 + m.sessionId.$length >> 0));
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = (((m.cipherSuite >>> 8 << 16 >>> 16) << 24 >>> 24)));
(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = ((m.cipherSuite << 24 >>> 24)));
(2 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 2] = m.compressionMethod);
z = $subslice(z, 3);
if (numExtensions > 0) {
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = (((extensionsLength >> 8 >> 0) << 24 >>> 24)));
(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = ((extensionsLength << 24 >>> 24)));
z = $subslice(z, 2);
}
if (m.nextProtoNeg) {
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 51);
(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 116);
(2 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 2] = (((nextProtoLen >> 8 >> 0) << 24 >>> 24)));
(3 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 3] = ((nextProtoLen << 24 >>> 24)));
z = $subslice(z, 4);
_ref$2 = m.nextProtos;
_i$2 = 0;
while (true) {
if (!(_i$2 < _ref$2.$length)) { break; }
v$1 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]);
l = v$1.length;
if (l > 255) {
l = 255;
}
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = ((l << 24 >>> 24)));
$copySlice($subslice(z, 1), (new sliceType$8($stringToBytes($substring(v$1, 0, l)))));
z = $subslice(z, (1 + l >> 0));
_i$2++;
}
}
if (m.ocspStapling) {
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 0);
(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 5);
z = $subslice(z, 4);
}
if (m.ticketSupported) {
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 0);
(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 35);
z = $subslice(z, 4);
}
if (m.secureRenegotiationSupported) {
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 255);
(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 1);
(2 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 2] = 0);
(3 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 3] = (((m.secureRenegotiation.$length + 1 >> 0) << 24 >>> 24)));
(4 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 4] = ((m.secureRenegotiation.$length << 24 >>> 24)));
z = $subslice(z, 5);
$copySlice(z, m.secureRenegotiation);
z = $subslice(z, m.secureRenegotiation.$length);
}
alpnLen$1 = m.alpnProtocol.length;
if (alpnLen$1 > 0) {
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 0);
(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 16);
l$1 = 3 + alpnLen$1 >> 0;
(2 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 2] = (((l$1 >> 8 >> 0) << 24 >>> 24)));
(3 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 3] = ((l$1 << 24 >>> 24)));
l$1 = l$1 - (2) >> 0;
(4 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 4] = (((l$1 >> 8 >> 0) << 24 >>> 24)));
(5 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 5] = ((l$1 << 24 >>> 24)));
l$1 = l$1 - (1) >> 0;
(6 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 6] = ((l$1 << 24 >>> 24)));
$copySlice($subslice(z, 7), (new sliceType$8($stringToBytes(m.alpnProtocol))));
z = $subslice(z, (7 + alpnLen$1 >> 0));
}
if (sctLen > 0) {
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 0);
(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 18);
l$2 = sctLen + 2 >> 0;
(2 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 2] = (((l$2 >> 8 >> 0) << 24 >>> 24)));
(3 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 3] = ((l$2 << 24 >>> 24)));
(4 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 4] = (((sctLen >> 8 >> 0) << 24 >>> 24)));
(5 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 5] = ((sctLen << 24 >>> 24)));
z = $subslice(z, 6);
_ref$3 = m.scts;
_i$3 = 0;
while (true) {
if (!(_i$3 < _ref$3.$length)) { break; }
sct$1 = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]);
(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = (((sct$1.$length >> 8 >> 0) << 24 >>> 24)));
(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = ((sct$1.$length << 24 >>> 24)));
$copySlice($subslice(z, 2), sct$1);
z = $subslice(z, (sct$1.$length + 2 >> 0));
_i$3++;
}
}
m.raw = x;
return x;
};
serverHelloMsg.prototype.marshal = function() { return this.$val.marshal(); };
serverHelloMsg.ptr.prototype.unmarshal = function(data) {
var $ptr, _1, d, d$1, d$2, d$3, data, extension, extensionsLength, l, l$1, l$2, l$3, length, m, sctLen, sessionIdLen;
m = this;
if (data.$length < 42) {
return false;
}
m.raw = data;
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;
m.random = $subslice(data, 6, 38);
sessionIdLen = (((38 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 38]) >> 0));
if (sessionIdLen > 32 || data.$length < (39 + sessionIdLen >> 0)) {
return false;
}
m.sessionId = $subslice(data, 39, (39 + sessionIdLen >> 0));
data = $subslice(data, (39 + sessionIdLen >> 0));
if (data.$length < 3) {
return false;
}
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;
m.compressionMethod = (2 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 2]);
data = $subslice(data, 3);
m.nextProtoNeg = false;
m.nextProtos = sliceType$1.nil;
m.ocspStapling = false;
m.scts = sliceType$10.nil;
m.ticketSupported = false;
m.alpnProtocol = "";
if (data.$length === 0) {
return true;
}
if (data.$length < 2) {
return false;
}
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));
data = $subslice(data, 2);
if (!((data.$length === extensionsLength))) {
return false;
}
while (true) {
if (!(!((data.$length === 0)))) { break; }
if (data.$length < 4) {
return false;
}
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;
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));
data = $subslice(data, 4);
if (data.$length < length) {
return false;
}
_1 = extension;
if (_1 === (13172)) {
m.nextProtoNeg = true;
d = $subslice(data, 0, length);
while (true) {
if (!(d.$length > 0)) { break; }
l = (((0 >= d.$length ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + 0]) >> 0));
d = $subslice(d, 1);
if ((l === 0) || l > d.$length) {
return false;
}
m.nextProtos = $append(m.nextProtos, ($bytesToString($subslice(d, 0, l))));
d = $subslice(d, l);
}
} else if (_1 === (5)) {
if (length > 0) {
return false;
}
m.ocspStapling = true;
} else if (_1 === (35)) {
if (length > 0) {
return false;
}
m.ticketSupported = true;
} else if (_1 === (65281)) {
if (length === 0) {
return false;
}
d$1 = $subslice(data, 0, length);
l$1 = (((0 >= d$1.$length ? ($throwRuntimeError("index out of range"), undefined) : d$1.$array[d$1.$offset + 0]) >> 0));
d$1 = $subslice(d$1, 1);
if (!((l$1 === d$1.$length))) {
return false;
}
m.secureRenegotiation = d$1;
m.secureRenegotiationSupported = true;
} else if (_1 === (16)) {
d$2 = $subslice(data, 0, length);
if (d$2.$length < 3) {
return false;
}
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));
if (!((l$2 === (d$2.$length - 2 >> 0)))) {
return false;
}
d$2 = $subslice(d$2, 2);
l$2 = (((0 >= d$2.$length ? ($throwRuntimeError("index out of range"), undefined) : d$2.$array[d$2.$offset + 0]) >> 0));
if (!((l$2 === (d$2.$length - 1 >> 0)))) {
return false;
}
d$2 = $subslice(d$2, 1);
if (d$2.$length === 0) {
return false;
}
m.alpnProtocol = ($bytesToString(d$2));
} else if (_1 === (18)) {
d$3 = $subslice(data, 0, length);
if (d$3.$length < 2) {
return false;
}
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));
d$3 = $subslice(d$3, 2);
if (!((d$3.$length === l$3)) || (l$3 === 0)) {
return false;
}
m.scts = $makeSlice(sliceType$10, 0, 3);
while (true) {
if (!(!((d$3.$length === 0)))) { break; }
if (d$3.$length < 2) {
return false;
}
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));
d$3 = $subslice(d$3, 2);
if ((sctLen === 0) || d$3.$length < sctLen) {
return false;
}
m.scts = $append(m.scts, $subslice(d$3, 0, sctLen));
d$3 = $subslice(d$3, sctLen);
}
}
data = $subslice(data, length);
}
return true;
};
serverHelloMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
certificateMsg.ptr.prototype.marshal = function() {
var $ptr, _i, _i$1, _ref, _ref$1, certificateOctets, i, length, m, slice, slice$1, x, y;
x = sliceType$8.nil;
m = this;
if (!(m.raw === sliceType$8.nil)) {
x = m.raw;
return x;
}
i = 0;
_ref = m.certificates;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
slice = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
i = i + (slice.$length) >> 0;
_i++;
}
length = (3 + ($imul(3, m.certificates.$length)) >> 0) + i >> 0;
x = $makeSlice(sliceType$8, (4 + length >> 0));
(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 11);
(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = (((length >> 16 >> 0) << 24 >>> 24)));
(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (((length >> 8 >> 0) << 24 >>> 24)));
(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((length << 24 >>> 24)));
certificateOctets = length - 3 >> 0;
(4 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 4] = (((certificateOctets >> 16 >> 0) << 24 >>> 24)));
(5 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 5] = (((certificateOctets >> 8 >> 0) << 24 >>> 24)));
(6 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 6] = ((certificateOctets << 24 >>> 24)));
y = $subslice(x, 7);
_ref$1 = m.certificates;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
slice$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
(0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0] = (((slice$1.$length >> 16 >> 0) << 24 >>> 24)));
(1 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 1] = (((slice$1.$length >> 8 >> 0) << 24 >>> 24)));
(2 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 2] = ((slice$1.$length << 24 >>> 24)));
$copySlice($subslice(y, 3), slice$1);
y = $subslice(y, (3 + slice$1.$length >> 0));
_i$1++;
}
m.raw = x;
return x;
};
certificateMsg.prototype.marshal = function() { return this.$val.marshal(); };
certificateMsg.ptr.prototype.unmarshal = function(data) {
var $ptr, certLen, certLen$1, certsLen, d, data, i, m, numCerts, x;
m = this;
if (data.$length < 7) {
return false;
}
m.raw = data;
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;
if (!((((data.$length >>> 0)) === (certsLen + 7 >>> 0)))) {
return false;
}
numCerts = 0;
d = $subslice(data, 7);
while (true) {
if (!(certsLen > 0)) { break; }
if (d.$length < 4) {
return false;
}
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;
if (((d.$length >>> 0)) < (3 + certLen >>> 0)) {
return false;
}
d = $subslice(d, (3 + certLen >>> 0));
certsLen = certsLen - ((3 + certLen >>> 0)) >>> 0;
numCerts = numCerts + (1) >> 0;
}
m.certificates = $makeSlice(sliceType$10, numCerts);
d = $subslice(data, 7);
i = 0;
while (true) {
if (!(i < numCerts)) { break; }
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;
(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))));
d = $subslice(d, (3 + certLen$1 >>> 0));
i = i + (1) >> 0;
}
return true;
};
certificateMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
serverKeyExchangeMsg.ptr.prototype.marshal = function() {
var $ptr, length, m, x;
m = this;
if (!(m.raw === sliceType$8.nil)) {
return m.raw;
}
length = m.key.$length;
x = $makeSlice(sliceType$8, (length + 4 >> 0));
(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 12);
(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = (((length >> 16 >> 0) << 24 >>> 24)));
(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (((length >> 8 >> 0) << 24 >>> 24)));
(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((length << 24 >>> 24)));
$copySlice($subslice(x, 4), m.key);
m.raw = x;
return x;
};
serverKeyExchangeMsg.prototype.marshal = function() { return this.$val.marshal(); };
serverKeyExchangeMsg.ptr.prototype.unmarshal = function(data) {
var $ptr, data, m;
m = this;
m.raw = data;
if (data.$length < 4) {
return false;
}
m.key = $subslice(data, 4);
return true;
};
serverKeyExchangeMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
certificateStatusMsg.ptr.prototype.marshal = function() {
var $ptr, l, m, x;
m = this;
if (!(m.raw === sliceType$8.nil)) {
return m.raw;
}
x = sliceType$8.nil;
if (m.statusType === 1) {
x = $makeSlice(sliceType$8, (8 + m.response.$length >> 0));
(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 22);
l = m.response.$length + 4 >> 0;
(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = (((l >> 16 >> 0) << 24 >>> 24)));
(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (((l >> 8 >> 0) << 24 >>> 24)));
(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((l << 24 >>> 24)));
(4 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 4] = 1);
l = l - (4) >> 0;
(5 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 5] = (((l >> 16 >> 0) << 24 >>> 24)));
(6 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 6] = (((l >> 8 >> 0) << 24 >>> 24)));
(7 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 7] = ((l << 24 >>> 24)));
$copySlice($subslice(x, 8), m.response);
} else {
x = new sliceType$8([22, 0, 0, 1, m.statusType]);
}
m.raw = x;
return x;
};
certificateStatusMsg.prototype.marshal = function() { return this.$val.marshal(); };
certificateStatusMsg.ptr.prototype.unmarshal = function(data) {
var $ptr, data, m, respLen;
m = this;
m.raw = data;
if (data.$length < 5) {
return false;
}
m.statusType = (4 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 4]);
m.response = sliceType$8.nil;
if (m.statusType === 1) {
if (data.$length < 8) {
return false;
}
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;
if (!((((data.$length >>> 0)) === (8 + respLen >>> 0)))) {
return false;
}
m.response = $subslice(data, 8);
}
return true;
};
certificateStatusMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
serverHelloDoneMsg.ptr.prototype.marshal = function() {
var $ptr, m, x;
m = this;
x = $makeSlice(sliceType$8, 4);
(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 14);
return x;
};
serverHelloDoneMsg.prototype.marshal = function() { return this.$val.marshal(); };
serverHelloDoneMsg.ptr.prototype.unmarshal = function(data) {
var $ptr, data, m;
m = this;
return data.$length === 4;
};
serverHelloDoneMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
clientKeyExchangeMsg.ptr.prototype.marshal = function() {
var $ptr, length, m, x;
m = this;
if (!(m.raw === sliceType$8.nil)) {
return m.raw;
}
length = m.ciphertext.$length;
x = $makeSlice(sliceType$8, (length + 4 >> 0));
(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 16);
(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = (((length >> 16 >> 0) << 24 >>> 24)));
(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (((length >> 8 >> 0) << 24 >>> 24)));
(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((length << 24 >>> 24)));
$copySlice($subslice(x, 4), m.ciphertext);
m.raw = x;
return x;
};
clientKeyExchangeMsg.prototype.marshal = function() { return this.$val.marshal(); };
clientKeyExchangeMsg.ptr.prototype.unmarshal = function(data) {
var $ptr, data, l, m;
m = this;
m.raw = data;
if (data.$length < 4) {
return false;
}
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));
if (!((l === (data.$length - 4 >> 0)))) {
return false;
}
m.ciphertext = $subslice(data, 4);
return true;
};
clientKeyExchangeMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
finishedMsg.ptr.prototype.marshal = function() {
var $ptr, m, x;
x = sliceType$8.nil;
m = this;
if (!(m.raw === sliceType$8.nil)) {
x = m.raw;
return x;
}
x = $makeSlice(sliceType$8, (4 + m.verifyData.$length >> 0));
(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 20);
(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((m.verifyData.$length << 24 >>> 24)));
$copySlice($subslice(x, 4), m.verifyData);
m.raw = x;
return x;
};
finishedMsg.prototype.marshal = function() { return this.$val.marshal(); };
finishedMsg.ptr.prototype.unmarshal = function(data) {
var $ptr, data, m;
m = this;
m.raw = data;
if (data.$length < 4) {
return false;
}
m.verifyData = $subslice(data, 4);
return true;
};
finishedMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
nextProtoMsg.ptr.prototype.marshal = function() {
var $ptr, _r, l, length, m, padding, x, y;
m = this;
if (!(m.raw === sliceType$8.nil)) {
return m.raw;
}
l = m.proto.length;
if (l > 255) {
l = 255;
}
padding = 32 - (_r = ((l + 2 >> 0)) % 32, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >> 0;
length = (l + padding >> 0) + 2 >> 0;
x = $makeSlice(sliceType$8, (length + 4 >> 0));
(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 67);
(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = (((length >> 16 >> 0) << 24 >>> 24)));
(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (((length >> 8 >> 0) << 24 >>> 24)));
(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((length << 24 >>> 24)));
y = $subslice(x, 4);
(0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0] = ((l << 24 >>> 24)));
$copySlice($subslice(y, 1), (new sliceType$8($stringToBytes($substring(m.proto, 0, l)))));
y = $subslice(y, (1 + l >> 0));
(0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0] = ((padding << 24 >>> 24)));
m.raw = x;
return x;
};
nextProtoMsg.prototype.marshal = function() { return this.$val.marshal(); };
nextProtoMsg.ptr.prototype.unmarshal = function(data) {
var $ptr, data, m, paddingLen, protoLen;
m = this;
m.raw = data;
if (data.$length < 5) {
return false;
}
data = $subslice(data, 4);
protoLen = (((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) >> 0));
data = $subslice(data, 1);
if (data.$length < protoLen) {
return false;
}
m.proto = ($bytesToString($subslice(data, 0, protoLen)));
data = $subslice(data, protoLen);
if (data.$length < 1) {
return false;
}
paddingLen = (((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) >> 0));
data = $subslice(data, 1);
if (!((data.$length === paddingLen))) {
return false;
}
return true;
};
nextProtoMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
certificateRequestMsg.ptr.prototype.marshal = function() {
var $ptr, _i, _i$1, _i$2, _ref, _ref$1, _ref$2, ca, ca$1, casLength, length, m, n, sigAndHash, x, y;
x = sliceType$8.nil;
m = this;
if (!(m.raw === sliceType$8.nil)) {
x = m.raw;
return x;
}
length = (1 + m.certificateTypes.$length >> 0) + 2 >> 0;
casLength = 0;
_ref = m.certificateAuthorities;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
ca = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
casLength = casLength + ((2 + ca.$length >> 0)) >> 0;
_i++;
}
length = length + (casLength) >> 0;
if (m.hasSignatureAndHash) {
length = length + ((2 + ($imul(2, m.signatureAndHashes.$length)) >> 0)) >> 0;
}
x = $makeSlice(sliceType$8, (4 + length >> 0));
(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 13);
(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = (((length >> 16 >> 0) << 24 >>> 24)));
(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (((length >> 8 >> 0) << 24 >>> 24)));
(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((length << 24 >>> 24)));
(4 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 4] = ((m.certificateTypes.$length << 24 >>> 24)));
$copySlice($subslice(x, 5), m.certificateTypes);
y = $subslice(x, (5 + m.certificateTypes.$length >> 0));
if (m.hasSignatureAndHash) {
n = $imul(m.signatureAndHashes.$length, 2);
(0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0] = (((n >> 8 >> 0) << 24 >>> 24)));
(1 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 1] = ((n << 24 >>> 24)));
y = $subslice(y, 2);
_ref$1 = m.signatureAndHashes;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
sigAndHash = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), signatureAndHash);
(0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0] = sigAndHash.hash);
(1 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 1] = sigAndHash.signature);
y = $subslice(y, 2);
_i$1++;
}
}
(0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0] = (((casLength >> 8 >> 0) << 24 >>> 24)));
(1 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 1] = ((casLength << 24 >>> 24)));
y = $subslice(y, 2);
_ref$2 = m.certificateAuthorities;
_i$2 = 0;
while (true) {
if (!(_i$2 < _ref$2.$length)) { break; }
ca$1 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]);
(0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0] = (((ca$1.$length >> 8 >> 0) << 24 >>> 24)));
(1 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 1] = ((ca$1.$length << 24 >>> 24)));
y = $subslice(y, 2);
$copySlice(y, ca$1);
y = $subslice(y, ca$1.$length);
_i$2++;
}
m.raw = x;
return x;
};
certificateRequestMsg.prototype.marshal = function() { return this.$val.marshal(); };
certificateRequestMsg.ptr.prototype.unmarshal = function(data) {
var $ptr, _i, _q, _ref, caLen, cas, casLength, data, i, length, m, numCertTypes, numSigAndHash, sigAndHashLen, x, x$1;
m = this;
m.raw = data;
if (data.$length < 5) {
return false;
}
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;
if (!(((((data.$length >>> 0)) - 4 >>> 0) === length))) {
return false;
}
numCertTypes = (((4 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 4]) >> 0));
data = $subslice(data, 5);
if ((numCertTypes === 0) || data.$length <= numCertTypes) {
return false;
}
m.certificateTypes = $makeSlice(sliceType$8, numCertTypes);
if (!(($copySlice(m.certificateTypes, data) === numCertTypes))) {
return false;
}
data = $subslice(data, numCertTypes);
if (m.hasSignatureAndHash) {
if (data.$length < 2) {
return false;
}
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;
data = $subslice(data, 2);
if (!((((sigAndHashLen & 1) >>> 0) === 0))) {
return false;
}
if (data.$length < ((sigAndHashLen >> 0))) {
return false;
}
numSigAndHash = (_q = sigAndHashLen / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
m.signatureAndHashes = $makeSlice(sliceType$6, numSigAndHash);
_ref = m.signatureAndHashes;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
(x = m.signatureAndHashes, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])).hash = (0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]);
(x$1 = m.signatureAndHashes, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])).signature = (1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]);
data = $subslice(data, 2);
_i++;
}
}
if (data.$length < 2) {
return false;
}
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;
data = $subslice(data, 2);
if (data.$length < ((casLength >> 0))) {
return false;
}
cas = $makeSlice(sliceType$8, casLength);
$copySlice(cas, data);
data = $subslice(data, casLength);
m.certificateAuthorities = sliceType$10.nil;
while (true) {
if (!(cas.$length > 0)) { break; }
if (cas.$length < 2) {
return false;
}
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;
cas = $subslice(cas, 2);
if (cas.$length < ((caLen >> 0))) {
return false;
}
m.certificateAuthorities = $append(m.certificateAuthorities, $subslice(cas, 0, caLen));
cas = $subslice(cas, caLen);
}
return data.$length === 0;
};
certificateRequestMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
certificateVerifyMsg.ptr.prototype.marshal = function() {
var $ptr, length, m, siglength, x, y;
x = sliceType$8.nil;
m = this;
if (!(m.raw === sliceType$8.nil)) {
x = m.raw;
return x;
}
siglength = m.signature.$length;
length = 2 + siglength >> 0;
if (m.hasSignatureAndHash) {
length = length + (2) >> 0;
}
x = $makeSlice(sliceType$8, (4 + length >> 0));
(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 15);
(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = (((length >> 16 >> 0) << 24 >>> 24)));
(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (((length >> 8 >> 0) << 24 >>> 24)));
(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((length << 24 >>> 24)));
y = $subslice(x, 4);
if (m.hasSignatureAndHash) {
(0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0] = m.signatureAndHash.hash);
(1 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 1] = m.signatureAndHash.signature);
y = $subslice(y, 2);
}
(0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0] = (((siglength >> 8 >> 0) << 24 >>> 24)));
(1 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 1] = ((siglength << 24 >>> 24)));
$copySlice($subslice(y, 2), m.signature);
m.raw = x;
return x;
};
certificateVerifyMsg.prototype.marshal = function() { return this.$val.marshal(); };
certificateVerifyMsg.ptr.prototype.unmarshal = function(data) {
var $ptr, data, length, m, siglength;
m = this;
m.raw = data;
if (data.$length < 6) {
return false;
}
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;
if (!(((((data.$length >>> 0)) - 4 >>> 0) === length))) {
return false;
}
data = $subslice(data, 4);
if (m.hasSignatureAndHash) {
m.signatureAndHash.hash = (0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]);
m.signatureAndHash.signature = (1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]);
data = $subslice(data, 2);
}
if (data.$length < 2) {
return false;
}
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;
data = $subslice(data, 2);
if (!((data.$length === siglength))) {
return false;
}
m.signature = data;
return true;
};
certificateVerifyMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
newSessionTicketMsg.ptr.prototype.marshal = function() {
var $ptr, length, m, ticketLen, x;
x = sliceType$8.nil;
m = this;
if (!(m.raw === sliceType$8.nil)) {
x = m.raw;
return x;
}
ticketLen = m.ticket.$length;
length = 6 + ticketLen >> 0;
x = $makeSlice(sliceType$8, (4 + length >> 0));
(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 4);
(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = (((length >> 16 >> 0) << 24 >>> 24)));
(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (((length >> 8 >> 0) << 24 >>> 24)));
(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((length << 24 >>> 24)));
(8 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 8] = (((ticketLen >> 8 >> 0) << 24 >>> 24)));
(9 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 9] = ((ticketLen << 24 >>> 24)));
$copySlice($subslice(x, 10), m.ticket);
m.raw = x;
return x;
};
newSessionTicketMsg.prototype.marshal = function() { return this.$val.marshal(); };
newSessionTicketMsg.ptr.prototype.unmarshal = function(data) {
var $ptr, data, length, m, ticketLen;
m = this;
m.raw = data;
if (data.$length < 10) {
return false;
}
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;
if (!(((((data.$length >>> 0)) - 4 >>> 0) === length))) {
return false;
}
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;
if (!(((data.$length - 10 >> 0) === ticketLen))) {
return false;
}
m.ticket = $subslice(data, 10);
return true;
};
newSessionTicketMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
helloRequestMsg.ptr.prototype.marshal = function() {
var $ptr;
return new sliceType$8([0, 0, 0, 0]);
};
helloRequestMsg.prototype.marshal = function() { return this.$val.marshal(); };
helloRequestMsg.ptr.prototype.unmarshal = function(data) {
var $ptr, data;
return data.$length === 4;
};
helloRequestMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
Conn.ptr.prototype.serverHandshake = function() {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
c = this;
$r = c.config.serverInitOnce.Do($methodVal(c.config, "serverInit")); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
hs = new serverHandshakeState.ptr(c, ptrType$16.nil, ptrType$14.nil, ptrType$2.nil, false, false, false, false, ptrType$30.nil, new finishedHash.ptr($ifaceNil, $ifaceNil, $ifaceNil, $ifaceNil, sliceType$8.nil, 0, $throwNilPointerError), sliceType$8.nil, sliceType$10.nil, ptrType$4.nil, ptrType$31.nil);
_r = hs.readClientHello(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
isResume = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
c.buffering = true;
/* */ if (isResume) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (isResume) { */ case 3:
_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; }
err$1 = _r$1;
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return err$1;
}
_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; }
err$2 = _r$2;
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return err$2;
}
/* */ if (hs.hello.ticketSupported) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (hs.hello.ticketSupported) { */ case 8:
_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; }
err$3 = _r$3;
if (!($interfaceIsEqual(err$3, $ifaceNil))) {
$s = -1; return err$3;
}
/* } */ case 9:
_r$4 = hs.sendFinished(new sliceType$8(c.serverFinished)); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
err$4 = _r$4;
if (!($interfaceIsEqual(err$4, $ifaceNil))) {
$s = -1; return err$4;
}
_r$5 = c.flush(); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_tuple$1 = _r$5;
err$5 = _tuple$1[1];
if (!($interfaceIsEqual(err$5, $ifaceNil))) {
$s = -1; return err$5;
}
c.clientFinishedIsFirst = false;
_r$6 = hs.readFinished(sliceType$8.nil); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
err$6 = _r$6;
if (!($interfaceIsEqual(err$6, $ifaceNil))) {
$s = -1; return err$6;
}
c.didResume = true;
$s = 5; continue;
/* } else { */ case 4:
_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; }
err$7 = _r$7;
if (!($interfaceIsEqual(err$7, $ifaceNil))) {
$s = -1; return err$7;
}
_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; }
err$8 = _r$8;
if (!($interfaceIsEqual(err$8, $ifaceNil))) {
$s = -1; return err$8;
}
_r$9 = hs.readFinished(new sliceType$8(c.clientFinished)); /* */ $s = 16; case 16: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
err$9 = _r$9;
if (!($interfaceIsEqual(err$9, $ifaceNil))) {
$s = -1; return err$9;
}
c.clientFinishedIsFirst = true;
c.buffering = true;
_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; }
err$10 = _r$10;
if (!($interfaceIsEqual(err$10, $ifaceNil))) {
$s = -1; return err$10;
}
_r$11 = hs.sendFinished(sliceType$8.nil); /* */ $s = 18; case 18: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
err$11 = _r$11;
if (!($interfaceIsEqual(err$11, $ifaceNil))) {
$s = -1; return err$11;
}
_r$12 = c.flush(); /* */ $s = 19; case 19: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
_tuple$2 = _r$12;
err$12 = _tuple$2[1];
if (!($interfaceIsEqual(err$12, $ifaceNil))) {
$s = -1; return err$12;
}
/* } */ case 5:
c.handshakeComplete = true;
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.serverHandshake }; } $f.$ptr = $ptr; $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;
};
Conn.prototype.serverHandshake = function() { return this.$val.serverHandshake(); };
serverHandshakeState.ptr.prototype.readClientHello = function() {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
isResume = false;
err = $ifaceNil;
hs = this;
c = hs.c;
_r = c.readHandshake(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
msg = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = false;
_tmp$1 = err;
isResume = _tmp;
err = _tmp$1;
$s = -1; return [isResume, err];
}
ok = false;
_tuple$1 = $assertType(msg, ptrType$16, true);
hs.clientHello = _tuple$1[0];
ok = _tuple$1[1];
/* */ if (!ok) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!ok) { */ case 2:
_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; }
_r$1;
_tmp$2 = false;
_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; }
_tmp$3 = _r$2;
isResume = _tmp$2;
err = _tmp$3;
$s = -1; return [isResume, err];
/* } */ case 3:
/* */ if (!(c.config.GetConfigForClient === $throwNilPointerError)) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!(c.config.GetConfigForClient === $throwNilPointerError)) { */ case 6:
_r$3 = c.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; }
_tuple$2 = _r$3;
newConfig = _tuple$2[0];
err$1 = _tuple$2[1];
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 9; continue; }
/* */ if (!(newConfig === ptrType$1.nil)) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 9:
_r$4 = c.sendAlert(80); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_r$4;
_tmp$4 = false;
_tmp$5 = err$1;
isResume = _tmp$4;
err = _tmp$5;
$s = -1; return [isResume, err];
/* } else if (!(newConfig === ptrType$1.nil)) { */ case 10:
$r = newConfig.mutex.Lock(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
newConfig.originalConfig = c.config;
$r = newConfig.mutex.Unlock(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = newConfig.serverInitOnce.Do($methodVal(newConfig, "serverInit")); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
c.config = newConfig;
/* } */ case 11:
/* } */ case 7:
_tuple$3 = c.config.mutualVersion(hs.clientHello.vers);
c.vers = _tuple$3[0];
ok = _tuple$3[1];
/* */ if (!ok) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (!ok) { */ case 16:
_r$5 = c.sendAlert(70); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_r$5;
_tmp$6 = false;
_r$6 = fmt.Errorf("tls: client offered an unsupported, maximum protocol version of %x", new sliceType$9([new $Uint16(hs.clientHello.vers)])); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_tmp$7 = _r$6;
isResume = _tmp$6;
err = _tmp$7;
$s = -1; return [isResume, err];
/* } */ case 17:
c.haveVers = true;
hs.hello = new serverHelloMsg.ptr(sliceType$8.nil, 0, sliceType$8.nil, sliceType$8.nil, 0, 0, false, sliceType$1.nil, false, sliceType$10.nil, false, sliceType$8.nil, false, "");
supportedCurve = false;
preferredCurves = c.config.curvePreferences();
_ref = hs.clientHello.supportedCurves;
_i = 0;
Curves:
while (true) {
if (!(_i < _ref.$length)) { break; }
curve = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_ref$1 = preferredCurves;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
supported = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
if (supported === curve) {
supportedCurve = true;
break Curves;
}
_i$1++;
}
_i++;
}
supportedPointFormat = false;
_ref$2 = hs.clientHello.supportedPoints;
_i$2 = 0;
while (true) {
if (!(_i$2 < _ref$2.$length)) { break; }
pointFormat = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]);
if (pointFormat === 0) {
supportedPointFormat = true;
break;
}
_i$2++;
}
hs.ellipticOk = supportedCurve && supportedPointFormat;
foundCompression = false;
_ref$3 = hs.clientHello.compressionMethods;
_i$3 = 0;
while (true) {
if (!(_i$3 < _ref$3.$length)) { break; }
compression = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]);
if (compression === 0) {
foundCompression = true;
break;
}
_i$3++;
}
/* */ if (!foundCompression) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if (!foundCompression) { */ case 20:
_r$7 = c.sendAlert(40); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_r$7;
_tmp$8 = false;
_tmp$9 = errors.New("tls: client does not support uncompressed connections");
isResume = _tmp$8;
err = _tmp$9;
$s = -1; return [isResume, err];
/* } */ case 21:
hs.hello.vers = c.vers;
hs.hello.random = $makeSlice(sliceType$8, 32);
_r$8 = io.ReadFull(c.config.rand(), hs.hello.random); /* */ $s = 23; case 23: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_tuple$4 = _r$8;
err = _tuple$4[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 24; continue; }
/* */ $s = 25; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 24:
_r$9 = c.sendAlert(80); /* */ $s = 26; case 26: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
_r$9;
_tmp$10 = false;
_tmp$11 = err;
isResume = _tmp$10;
err = _tmp$11;
$s = -1; return [isResume, err];
/* } */ case 25:
/* */ if (!((hs.clientHello.secureRenegotiation.$length === 0))) { $s = 27; continue; }
/* */ $s = 28; continue;
/* if (!((hs.clientHello.secureRenegotiation.$length === 0))) { */ case 27:
_r$10 = c.sendAlert(40); /* */ $s = 29; case 29: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
_r$10;
_tmp$12 = false;
_tmp$13 = errors.New("tls: initial handshake had non-empty renegotiation extension");
isResume = _tmp$12;
err = _tmp$13;
$s = -1; return [isResume, err];
/* } */ case 28:
hs.hello.secureRenegotiationSupported = hs.clientHello.secureRenegotiationSupported;
hs.hello.compressionMethod = 0;
if (hs.clientHello.serverName.length > 0) {
c.serverName = hs.clientHello.serverName;
}
if (hs.clientHello.alpnProtocols.$length > 0) {
_tuple$5 = mutualProtocol(hs.clientHello.alpnProtocols, c.config.NextProtos);
selectedProto = _tuple$5[0];
fallback = _tuple$5[1];
if (!fallback) {
hs.hello.alpnProtocol = selectedProto;
c.clientProtocol = selectedProto;
}
} else {
if (hs.clientHello.nextProtoNeg && c.config.NextProtos.$length > 0) {
hs.hello.nextProtoNeg = true;
hs.hello.nextProtos = c.config.NextProtos;
}
}
_r$11 = c.config.getCertificate(hs.clientHelloInfo()); /* */ $s = 30; case 30: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
_tuple$6 = _r$11;
hs.cert = _tuple$6[0];
err = _tuple$6[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 31; continue; }
/* */ $s = 32; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 31:
_r$12 = c.sendAlert(80); /* */ $s = 33; case 33: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
_r$12;
_tmp$14 = false;
_tmp$15 = err;
isResume = _tmp$14;
err = _tmp$15;
$s = -1; return [isResume, err];
/* } */ case 32:
if (hs.clientHello.scts) {
hs.hello.scts = hs.cert.SignedCertificateTimestamps;
}
_tuple$7 = $assertType(hs.cert.PrivateKey, crypto.Signer, true);
priv = _tuple$7[0];
ok$1 = _tuple$7[1];
/* */ if (ok$1) { $s = 34; continue; }
/* */ $s = 35; continue;
/* if (ok$1) { */ case 34:
_r$13 = priv.Public(); /* */ $s = 36; case 36: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
_ref$4 = _r$13;
/* */ if ($assertType(_ref$4, ptrType$20, true)[1]) { $s = 37; continue; }
/* */ if ($assertType(_ref$4, ptrType$19, true)[1]) { $s = 38; continue; }
/* */ $s = 39; continue;
/* if ($assertType(_ref$4, ptrType$20, true)[1]) { */ case 37:
hs.ecdsaOk = true;
$s = 40; continue;
/* } else if ($assertType(_ref$4, ptrType$19, true)[1]) { */ case 38:
hs.rsaSignOk = true;
$s = 40; continue;
/* } else { */ case 39:
_r$14 = c.sendAlert(80); /* */ $s = 41; case 41: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
_r$14;
_tmp$16 = false;
_r$15 = priv.Public(); /* */ $s = 42; case 42: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
_arg = _r$15;
_r$16 = fmt.Errorf("tls: unsupported signing key type (%T)", new sliceType$9([_arg])); /* */ $s = 43; case 43: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
_tmp$17 = _r$16;
isResume = _tmp$16;
err = _tmp$17;
$s = -1; return [isResume, err];
/* } */ case 40:
/* } */ case 35:
_tuple$8 = $assertType(hs.cert.PrivateKey, crypto.Decrypter, true);
priv$1 = _tuple$8[0];
ok$2 = _tuple$8[1];
/* */ if (ok$2) { $s = 44; continue; }
/* */ $s = 45; continue;
/* if (ok$2) { */ case 44:
_r$17 = priv$1.Public(); /* */ $s = 46; case 46: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
_ref$5 = _r$17;
/* */ if ($assertType(_ref$5, ptrType$19, true)[1]) { $s = 47; continue; }
/* */ $s = 48; continue;
/* if ($assertType(_ref$5, ptrType$19, true)[1]) { */ case 47:
hs.rsaDecryptOk = true;
$s = 49; continue;
/* } else { */ case 48:
_r$18 = c.sendAlert(80); /* */ $s = 50; case 50: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
_r$18;
_tmp$18 = false;
_r$19 = priv$1.Public(); /* */ $s = 51; case 51: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
_arg$1 = _r$19;
_r$20 = fmt.Errorf("tls: unsupported decryption key type (%T)", new sliceType$9([_arg$1])); /* */ $s = 52; case 52: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
_tmp$19 = _r$20;
isResume = _tmp$18;
err = _tmp$19;
$s = -1; return [isResume, err];
/* } */ case 49:
/* } */ case 45:
_r$21 = hs.checkForResumption(); /* */ $s = 55; case 55: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
/* */ if (_r$21) { $s = 53; continue; }
/* */ $s = 54; continue;
/* if (_r$21) { */ case 53:
_tmp$20 = true;
_tmp$21 = $ifaceNil;
isResume = _tmp$20;
err = _tmp$21;
$s = -1; return [isResume, err];
/* } */ case 54:
_tmp$22 = sliceType$2.nil;
_tmp$23 = sliceType$2.nil;
preferenceList = _tmp$22;
supportedList = _tmp$23;
/* */ if (c.config.PreferServerCipherSuites) { $s = 56; continue; }
/* */ $s = 57; continue;
/* if (c.config.PreferServerCipherSuites) { */ case 56:
_r$22 = c.config.cipherSuites(); /* */ $s = 59; case 59: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
preferenceList = _r$22;
supportedList = hs.clientHello.cipherSuites;
$s = 58; continue;
/* } else { */ case 57:
preferenceList = hs.clientHello.cipherSuites;
_r$23 = c.config.cipherSuites(); /* */ $s = 60; case 60: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
supportedList = _r$23;
/* } */ case 58:
_ref$6 = preferenceList;
_i$4 = 0;
while (true) {
if (!(_i$4 < _ref$6.$length)) { break; }
id = ((_i$4 < 0 || _i$4 >= _ref$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$6.$array[_ref$6.$offset + _i$4]);
if (hs.setCipherSuite(id, supportedList, c.vers)) {
break;
}
_i$4++;
}
/* */ if (hs.suite === ptrType$2.nil) { $s = 61; continue; }
/* */ $s = 62; continue;
/* if (hs.suite === ptrType$2.nil) { */ case 61:
_r$24 = c.sendAlert(40); /* */ $s = 63; case 63: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
_r$24;
_tmp$24 = false;
_tmp$25 = errors.New("tls: no cipher suite supported by both client and server");
isResume = _tmp$24;
err = _tmp$25;
$s = -1; return [isResume, err];
/* } */ case 62:
_ref$7 = hs.clientHello.cipherSuites;
_i$5 = 0;
/* while (true) { */ case 64:
/* if (!(_i$5 < _ref$7.$length)) { break; } */ if(!(_i$5 < _ref$7.$length)) { $s = 65; continue; }
id$1 = ((_i$5 < 0 || _i$5 >= _ref$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$7.$array[_ref$7.$offset + _i$5]);
/* */ if (id$1 === 22016) { $s = 66; continue; }
/* */ $s = 67; continue;
/* if (id$1 === 22016) { */ case 66:
/* */ if (hs.clientHello.vers < c.config.maxVersion()) { $s = 68; continue; }
/* */ $s = 69; continue;
/* if (hs.clientHello.vers < c.config.maxVersion()) { */ case 68:
_r$25 = c.sendAlert(86); /* */ $s = 70; case 70: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
_r$25;
_tmp$26 = false;
_tmp$27 = errors.New("tls: client using inappropriate protocol fallback");
isResume = _tmp$26;
err = _tmp$27;
$s = -1; return [isResume, err];
/* } */ case 69:
/* break; */ $s = 65; continue;
/* } */ case 67:
_i$5++;
/* } */ $s = 64; continue; case 65:
_tmp$28 = false;
_tmp$29 = $ifaceNil;
isResume = _tmp$28;
err = _tmp$29;
$s = -1; return [isResume, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.readClientHello }; } $f.$ptr = $ptr; $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;
};
serverHandshakeState.prototype.readClientHello = function() { return this.$val.readClientHello(); };
serverHandshakeState.ptr.prototype.checkForResumption = function() {
var $ptr, _arg, _arg$1, _arg$2, _i, _r, _r$1, _r$2, _ref, _tuple, c, cipherSuiteOk, hs, id, needClientCerts, ok, sessionHasClientCerts, sessionTicket, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
hs = this;
c = hs.c;
if (c.config.SessionTicketsDisabled) {
$s = -1; return false;
}
ok = false;
sessionTicket = $appendSlice(new sliceType$8([]), hs.clientHello.sessionTicket);
_r = c.decryptTicket(sessionTicket); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
hs.sessionState = _tuple[0];
ok = _tuple[1];
if (!ok) {
$s = -1; return false;
}
if (!((c.vers === hs.sessionState.vers))) {
$s = -1; return false;
}
cipherSuiteOk = false;
_ref = hs.clientHello.cipherSuites;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
id = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (id === hs.sessionState.cipherSuite) {
cipherSuiteOk = true;
break;
}
_i++;
}
if (!cipherSuiteOk) {
$s = -1; return false;
}
_arg = hs.sessionState.cipherSuite;
_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; }
_arg$1 = _r$1;
_arg$2 = hs.sessionState.vers;
_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; }
/* */ if (!_r$2) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!_r$2) { */ case 2:
$s = -1; return false;
/* } */ case 3:
sessionHasClientCerts = !((hs.sessionState.certificates.$length === 0));
needClientCerts = (c.config.ClientAuth === 2) || (c.config.ClientAuth === 4);
if (needClientCerts && !sessionHasClientCerts) {
$s = -1; return false;
}
if (sessionHasClientCerts && (c.config.ClientAuth === 0)) {
$s = -1; return false;
}
$s = -1; return true;
/* */ } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.checkForResumption }; } $f.$ptr = $ptr; $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;
};
serverHandshakeState.prototype.checkForResumption = function() { return this.$val.checkForResumption(); };
serverHandshakeState.ptr.prototype.doResumeHandshake = function() {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, c, err, err$1, hs, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
hs = this;
c = hs.c;
hs.hello.cipherSuite = hs.suite.id;
hs.hello.sessionId = hs.clientHello.sessionId;
hs.hello.ticketSupported = hs.sessionState.usedOldKey;
_r = newFinishedHash(c.vers, hs.suite); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
finishedHash.copy(hs.finishedHash, _r);
hs.finishedHash.discardHandshakeBuffer();
_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; }
_r$1;
_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; }
_r$2;
_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; }
_tuple = _r$3;
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
/* */ if (hs.sessionState.certificates.$length > 0) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (hs.sessionState.certificates.$length > 0) { */ case 5:
_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; }
_tuple$1 = _r$4;
err$1 = _tuple$1[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return err$1;
}
/* } */ case 6:
hs.masterSecret = hs.sessionState.masterSecret;
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.doResumeHandshake }; } $f.$ptr = $ptr; $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;
};
serverHandshakeState.prototype.doResumeHandshake = function() { return this.$val.doResumeHandshake(); };
serverHandshakeState.ptr.prototype.doFullHandshake = function() {
var $ptr, _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, signatureAndHash$1, skx, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; signatureAndHash$1 = $f.signatureAndHash$1; skx = $f.skx; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
hs = this;
c = hs.c;
if (hs.clientHello.ocspStapling && hs.cert.OCSPStaple.$length > 0) {
hs.hello.ocspStapling = true;
}
hs.hello.ticketSupported = hs.clientHello.ticketSupported && !c.config.SessionTicketsDisabled;
hs.hello.cipherSuite = hs.suite.id;
_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; }
finishedHash.copy(hs.finishedHash, _r);
if (c.config.ClientAuth === 0) {
hs.finishedHash.discardHandshakeBuffer();
}
_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; }
_r$1;
_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; }
_r$2;
_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; }
_tuple = _r$3;
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
certMsg = new certificateMsg.ptr(sliceType$8.nil, sliceType$10.nil);
certMsg.certificates = hs.cert.Certificate;
_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; }
_r$4;
_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; }
_tuple$1 = _r$5;
err$1 = _tuple$1[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return err$1;
}
/* */ if (hs.hello.ocspStapling) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (hs.hello.ocspStapling) { */ case 7:
certStatus = new certificateStatusMsg.ptr(sliceType$8.nil, 0, sliceType$8.nil);
certStatus.statusType = 1;
certStatus.response = hs.cert.OCSPStaple;
_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; }
_r$6;
_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; }
_tuple$2 = _r$7;
err$2 = _tuple$2[1];
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return err$2;
}
/* } */ case 8:
_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; }
keyAgreement$1 = _r$8;
_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; }
_tuple$3 = _r$9;
skx = _tuple$3[0];
err$3 = _tuple$3[1];
/* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 13:
_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; }
_r$10;
$s = -1; return err$3;
/* } */ case 14:
/* */ if (!(skx === ptrType$22.nil)) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (!(skx === ptrType$22.nil)) { */ case 16:
_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; }
_r$11;
_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; }
_tuple$4 = _r$12;
err$4 = _tuple$4[1];
if (!($interfaceIsEqual(err$4, $ifaceNil))) {
$s = -1; return err$4;
}
/* } */ case 17:
/* */ if (c.config.ClientAuth >= 1) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if (c.config.ClientAuth >= 1) { */ case 20:
certReq = new certificateRequestMsg.ptr(sliceType$8.nil, false, sliceType$8.nil, sliceType$6.nil, sliceType$10.nil);
certReq.certificateTypes = new sliceType$8([1, 64]);
if (c.vers >= 771) {
certReq.hasSignatureAndHash = true;
certReq.signatureAndHashes = supportedSignatureAlgorithms;
}
if (!(c.config.ClientCAs === ptrType.nil)) {
certReq.certificateAuthorities = c.config.ClientCAs.Subjects();
}
_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; }
_r$13;
_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; }
_tuple$5 = _r$14;
err$5 = _tuple$5[1];
if (!($interfaceIsEqual(err$5, $ifaceNil))) {
$s = -1; return err$5;
}
/* } */ case 21:
helloDone = new serverHelloDoneMsg.ptr();
_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; }
_r$15;
_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; }
_tuple$6 = _r$16;
err$6 = _tuple$6[1];
if (!($interfaceIsEqual(err$6, $ifaceNil))) {
$s = -1; return err$6;
}
_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; }
_tuple$7 = _r$17;
err$7 = _tuple$7[1];
if (!($interfaceIsEqual(err$7, $ifaceNil))) {
$s = -1; return err$7;
}
pub = $ifaceNil;
_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; }
_tuple$8 = _r$18;
msg = _tuple$8[0];
err$3 = _tuple$8[1];
if (!($interfaceIsEqual(err$3, $ifaceNil))) {
$s = -1; return err$3;
}
ok = false;
/* */ if (c.config.ClientAuth >= 1) { $s = 28; continue; }
/* */ $s = 29; continue;
/* if (c.config.ClientAuth >= 1) { */ case 28:
_tuple$9 = $assertType(msg, ptrType$17, true);
certMsg = _tuple$9[0];
ok = _tuple$9[1];
/* */ if (!ok) { $s = 30; continue; }
/* */ $s = 31; continue;
/* if (!ok) { */ case 30:
_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; }
_r$19;
_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; }
$s = -1; return _r$20;
/* } */ case 31:
_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; }
_r$21;
/* */ if (certMsg.certificates.$length === 0) { $s = 35; continue; }
/* */ $s = 36; continue;
/* if (certMsg.certificates.$length === 0) { */ case 35:
_1 = c.config.ClientAuth;
/* */ if ((_1 === (2)) || (_1 === (4))) { $s = 38; continue; }
/* */ $s = 39; continue;
/* if ((_1 === (2)) || (_1 === (4))) { */ case 38:
_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; }
_r$22;
$s = -1; return errors.New("tls: client didn't provide a certificate");
/* } */ case 39:
case 37:
/* } */ case 36:
_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; }
_tuple$10 = _r$23;
pub = _tuple$10[0];
err$3 = _tuple$10[1];
if (!($interfaceIsEqual(err$3, $ifaceNil))) {
$s = -1; return err$3;
}
_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; }
_tuple$11 = _r$24;
msg = _tuple$11[0];
err$3 = _tuple$11[1];
if (!($interfaceIsEqual(err$3, $ifaceNil))) {
$s = -1; return err$3;
}
/* } */ case 29:
_tuple$12 = $assertType(msg, ptrType$25, true);
ckx = _tuple$12[0];
ok = _tuple$12[1];
/* */ if (!ok) { $s = 43; continue; }
/* */ $s = 44; continue;
/* if (!ok) { */ case 43:
_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; }
_r$25;
_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; }
$s = -1; return _r$26;
/* } */ case 44:
_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; }
_r$27;
_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; }
_tuple$13 = _r$28;
preMasterSecret = _tuple$13[0];
err$3 = _tuple$13[1];
/* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 49; continue; }
/* */ $s = 50; continue;
/* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 49:
_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; }
_r$29;
$s = -1; return err$3;
/* } */ case 50:
_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; }
hs.masterSecret = _r$30;
_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; }
err$8 = _r$31;
/* */ if (!($interfaceIsEqual(err$8, $ifaceNil))) { $s = 54; continue; }
/* */ $s = 55; continue;
/* if (!($interfaceIsEqual(err$8, $ifaceNil))) { */ case 54:
_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; }
_r$32;
$s = -1; return err$8;
/* } */ case 55:
/* */ if (c.peerCertificates.$length > 0) { $s = 57; continue; }
/* */ $s = 58; continue;
/* if (c.peerCertificates.$length > 0) { */ case 57:
_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; }
_tuple$14 = _r$33;
msg = _tuple$14[0];
err$3 = _tuple$14[1];
if (!($interfaceIsEqual(err$3, $ifaceNil))) {
$s = -1; return err$3;
}
_tuple$15 = $assertType(msg, ptrType$29, true);
certVerify = _tuple$15[0];
ok$1 = _tuple$15[1];
/* */ if (!ok$1) { $s = 60; continue; }
/* */ $s = 61; continue;
/* if (!ok$1) { */ case 60:
_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; }
_r$34;
_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; }
$s = -1; return _r$35;
/* } */ case 61:
signatureAndHash$1 = new signatureAndHash.ptr(0, 0);
if (certVerify.hasSignatureAndHash) {
signatureAndHash.copy(signatureAndHash$1, certVerify.signatureAndHash);
if (!isSupportedSignatureAndHash($clone(signatureAndHash$1, signatureAndHash), supportedSignatureAlgorithms)) {
$s = -1; return errors.New("tls: unsupported hash function for client certificate");
}
} else {
_ref = pub;
if ($assertType(_ref, ptrType$20, true)[1]) {
signatureAndHash$1.signature = 3;
} else if ($assertType(_ref, ptrType$19, true)[1]) {
signatureAndHash$1.signature = 1;
}
}
_ref$1 = pub;
/* */ if ($assertType(_ref$1, ptrType$20, true)[1]) { $s = 64; continue; }
/* */ if ($assertType(_ref$1, ptrType$19, true)[1]) { $s = 65; continue; }
/* */ $s = 66; continue;
/* switch (0) { default: if ($assertType(_ref$1, ptrType$20, true)[1]) { */ case 64:
key = _ref$1.$val;
if (!((signatureAndHash$1.signature === 3))) {
err$3 = errors.New("tls: bad signature type for client's ECDSA certificate");
/* break; */ $s = 66; continue;
}
ecdsaSig = new ecdsaSignature.ptr(ptrType$3.nil, ptrType$3.nil);
_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; }
_tuple$16 = _r$36;
err$3 = _tuple$16[1];
if (!($interfaceIsEqual(err$3, $ifaceNil))) {
/* break; */ $s = 66; continue;
}
if (ecdsaSig.R.Sign() <= 0 || ecdsaSig.S.Sign() <= 0) {
err$3 = errors.New("tls: ECDSA signature contained zero or negative values");
/* break; */ $s = 66; continue;
}
digest = sliceType$8.nil;
_r$37 = $clone(hs.finishedHash, finishedHash).hashForClientCertificate($clone(signatureAndHash$1, signatureAndHash), hs.masterSecret); /* */ $s = 68; case 68: if($c) { $c = false; _r$37 = _r$37.$blk(); } if (_r$37 && _r$37.$blk !== undefined) { break s; }
_tuple$17 = _r$37;
digest = _tuple$17[0];
err$3 = _tuple$17[2];
if (!($interfaceIsEqual(err$3, $ifaceNil))) {
/* break; */ $s = 66; continue;
}
_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; }
/* */ if (!_r$38) { $s = 69; continue; }
/* */ $s = 70; continue;
/* if (!_r$38) { */ case 69:
err$3 = errors.New("tls: ECDSA verification failure");
/* } */ case 70:
$s = 66; continue;
/* } else if ($assertType(_ref$1, ptrType$19, true)[1]) { */ case 65:
key$1 = _ref$1.$val;
if (!((signatureAndHash$1.signature === 1))) {
err$3 = errors.New("tls: bad signature type for client's RSA certificate");
/* break; */ $s = 66; continue;
}
digest$1 = sliceType$8.nil;
hashFunc = 0;
_r$39 = $clone(hs.finishedHash, finishedHash).hashForClientCertificate($clone(signatureAndHash$1, signatureAndHash), hs.masterSecret); /* */ $s = 72; case 72: if($c) { $c = false; _r$39 = _r$39.$blk(); } if (_r$39 && _r$39.$blk !== undefined) { break s; }
_tuple$18 = _r$39;
digest$1 = _tuple$18[0];
hashFunc = _tuple$18[1];
err$3 = _tuple$18[2];
if (!($interfaceIsEqual(err$3, $ifaceNil))) {
/* break; */ $s = 66; continue;
}
_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; }
err$3 = _r$40;
/* } } */ case 66:
/* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 74; continue; }
/* */ $s = 75; continue;
/* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 74:
_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; }
_r$41;
_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; }
_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; }
$s = -1; return _r$43;
/* } */ case 75:
_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; }
_r$44;
/* } */ case 58:
hs.finishedHash.discardHandshakeBuffer();
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.doFullHandshake }; } $f.$ptr = $ptr; $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.signatureAndHash$1 = signatureAndHash$1; $f.skx = skx; $f.$s = $s; $f.$r = $r; return $f;
};
serverHandshakeState.prototype.doFullHandshake = function() { return this.$val.doFullHandshake(); };
serverHandshakeState.ptr.prototype.establishKeys = function() {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
hs = this;
c = hs.c;
_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; }
_tuple = _r;
clientMAC = _tuple[0];
serverMAC = _tuple[1];
clientKey = _tuple[2];
serverKey = _tuple[3];
clientIV = _tuple[4];
serverIV = _tuple[5];
_tmp = $ifaceNil;
_tmp$1 = $ifaceNil;
clientCipher = _tmp;
serverCipher = _tmp$1;
_tmp$2 = $ifaceNil;
_tmp$3 = $ifaceNil;
clientHash = _tmp$2;
serverHash = _tmp$3;
/* */ if (hs.suite.aead === $throwNilPointerError) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (hs.suite.aead === $throwNilPointerError) { */ case 2:
_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; }
clientCipher = _r$1;
_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; }
clientHash = _r$2;
_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; }
serverCipher = _r$3;
_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; }
serverHash = _r$4;
$s = 4; continue;
/* } else { */ case 3:
_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; }
clientCipher = _r$5;
_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; }
serverCipher = _r$6;
/* } */ case 4:
c.in$25.prepareCipherSpec(c.vers, clientCipher, clientHash);
c.out.prepareCipherSpec(c.vers, serverCipher, serverHash);
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.establishKeys }; } $f.$ptr = $ptr; $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;
};
serverHandshakeState.prototype.establishKeys = function() { return this.$val.establishKeys(); };
serverHandshakeState.ptr.prototype.readFinished = function(out) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
hs = this;
c = hs.c;
_r = c.readRecord(20); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
if (!($interfaceIsEqual(c.in$25.err, $ifaceNil))) {
$s = -1; return c.in$25.err;
}
/* */ if (hs.hello.nextProtoNeg) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (hs.hello.nextProtoNeg) { */ case 2:
_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; }
_tuple = _r$1;
msg = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
_tuple$1 = $assertType(msg, ptrType$28, true);
nextProto = _tuple$1[0];
ok = _tuple$1[1];
/* */ if (!ok) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (!ok) { */ case 5:
_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; }
_r$2;
_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; }
$s = -1; return _r$3;
/* } */ case 6:
_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; }
_r$4;
c.clientProtocol = nextProto.proto;
/* } */ case 3:
_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; }
_tuple$2 = _r$5;
msg$1 = _tuple$2[0];
err$1 = _tuple$2[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return err$1;
}
_tuple$3 = $assertType(msg$1, ptrType$26, true);
clientFinished = _tuple$3[0];
ok$1 = _tuple$3[1];
/* */ if (!ok$1) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if (!ok$1) { */ case 11:
_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; }
_r$6;
_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; }
$s = -1; return _r$7;
/* } */ case 12:
_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; }
verify = _r$8;
/* */ if (!((verify.$length === clientFinished.verifyData.$length)) || !((subtle.ConstantTimeCompare(verify, clientFinished.verifyData) === 1))) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (!((verify.$length === clientFinished.verifyData.$length)) || !((subtle.ConstantTimeCompare(verify, clientFinished.verifyData) === 1))) { */ case 16:
_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; }
_r$9;
$s = -1; return errors.New("tls: client's Finished message is incorrect");
/* } */ case 17:
_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; }
_r$10;
$copySlice(out, verify);
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.readFinished }; } $f.$ptr = $ptr; $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;
};
serverHandshakeState.prototype.readFinished = function(out) { return this.$val.readFinished(out); };
serverHandshakeState.ptr.prototype.sendSessionTicket = function() {
var $ptr, _r, _r$1, _r$2, _tuple, _tuple$1, c, err, err$1, hs, m, state, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
state = [state];
hs = this;
if (!hs.hello.ticketSupported) {
$s = -1; return $ifaceNil;
}
c = hs.c;
m = new newSessionTicketMsg.ptr(sliceType$8.nil, sliceType$8.nil);
err = $ifaceNil;
state[0] = new sessionState.ptr(c.vers, hs.suite.id, hs.masterSecret, hs.certsFromClient, false);
_r = c.encryptTicket(state[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
m.ticket = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
_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; }
_r$1;
_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; }
_tuple$1 = _r$2;
err$1 = _tuple$1[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return err$1;
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.sendSessionTicket }; } $f.$ptr = $ptr; $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;
};
serverHandshakeState.prototype.sendSessionTicket = function() { return this.$val.sendSessionTicket(); };
serverHandshakeState.ptr.prototype.sendFinished = function(out) {
var $ptr, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, c, err, err$1, finished, hs, out, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
hs = this;
c = hs.c;
_r = c.writeRecord(20, new sliceType$8([1])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
finished = new finishedMsg.ptr(sliceType$8.nil, sliceType$8.nil);
_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; }
finished.verifyData = _r$1;
_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; }
_r$2;
_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; }
_tuple$1 = _r$3;
err$1 = _tuple$1[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return err$1;
}
c.cipherSuite = hs.suite.id;
$copySlice(out, finished.verifyData);
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.sendFinished }; } $f.$ptr = $ptr; $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;
};
serverHandshakeState.prototype.sendFinished = function(out) { return this.$val.sendFinished(out); };
serverHandshakeState.ptr.prototype.processCertsFromClient = function(certificates) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
hs = this;
c = hs.c;
hs.certsFromClient = certificates;
certs = $makeSlice(sliceType$11, certificates.$length);
err = $ifaceNil;
_ref = certificates;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
i = _i;
asn1Data = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_r = x509.ParseCertificate(asn1Data); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
((i < 0 || i >= certs.$length) ? ($throwRuntimeError("index out of range"), undefined) : certs.$array[certs.$offset + i] = _tuple[0]);
err = _tuple[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
_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; }
_r$1;
_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; }
_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; }
$s = -1; return [$ifaceNil, _r$3];
/* } */ case 5:
_i++;
/* } */ $s = 1; continue; case 2:
/* */ if (c.config.ClientAuth >= 3 && certs.$length > 0) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (c.config.ClientAuth >= 3 && certs.$length > 0) { */ case 9:
_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; }
opts = new x509.VerifyOptions.ptr("", x509.NewCertPool(), c.config.ClientCAs, $clone(_r$4, time.Time), new sliceType$13([2]));
_ref$1 = $subslice(certs, 1);
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
cert = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
opts.Intermediates.AddCert(cert);
_i$1++;
}
_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; }
_tuple$1 = _r$5;
chains = _tuple$1[0];
err$1 = _tuple$1[1];
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 13:
_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; }
_r$6;
_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; }
_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; }
$s = -1; return [$ifaceNil, _r$8];
/* } */ case 14:
c.verifiedChains = chains;
/* } */ case 10:
/* */ if (!(c.config.VerifyPeerCertificate === $throwNilPointerError)) { $s = 18; continue; }
/* */ $s = 19; continue;
/* if (!(c.config.VerifyPeerCertificate === $throwNilPointerError)) { */ case 18:
_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; }
err$2 = _r$9;
/* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 21; continue; }
/* */ $s = 22; continue;
/* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 21:
_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; }
_r$10;
$s = -1; return [$ifaceNil, err$2];
/* } */ case 22:
/* } */ case 19:
if (certs.$length === 0) {
$s = -1; return [$ifaceNil, $ifaceNil];
}
pub = $ifaceNil;
_ref$2 = (0 >= certs.$length ? ($throwRuntimeError("index out of range"), undefined) : certs.$array[certs.$offset + 0]).PublicKey;
/* */ if ($assertType(_ref$2, ptrType$20, true)[1] || $assertType(_ref$2, ptrType$19, true)[1]) { $s = 24; continue; }
/* */ $s = 25; continue;
/* if ($assertType(_ref$2, ptrType$20, true)[1] || $assertType(_ref$2, ptrType$19, true)[1]) { */ case 24:
key = _ref$2;
pub = key;
$s = 26; continue;
/* } else { */ case 25:
key$1 = _ref$2;
_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; }
_r$11;
_r$12 = fmt.Errorf("tls: client's certificate contains an unsupported public key of type %T", new sliceType$9([(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; }
$s = -1; return [$ifaceNil, _r$12];
/* } */ case 26:
c.peerCertificates = certs;
$s = -1; return [pub, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.processCertsFromClient }; } $f.$ptr = $ptr; $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;
};
serverHandshakeState.prototype.processCertsFromClient = function(certificates) { return this.$val.processCertsFromClient(certificates); };
serverHandshakeState.ptr.prototype.setCipherSuite = function(id, supportedCipherSuites, version) {
var $ptr, _i, _i$1, _ref, _ref$1, candidate, hs, id, s, supported, supportedCipherSuites, version;
hs = this;
_ref = supportedCipherSuites;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
supported = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (id === supported) {
candidate = ptrType$2.nil;
_ref$1 = cipherSuites;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
s = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
if (s.id === id) {
candidate = s;
break;
}
_i$1++;
}
if (candidate === ptrType$2.nil) {
_i++;
continue;
}
if (!(((candidate.flags & 1) === 0))) {
if (!hs.ellipticOk) {
_i++;
continue;
}
if (!(((candidate.flags & 2) === 0))) {
if (!hs.ecdsaOk) {
_i++;
continue;
}
} else if (!hs.rsaSignOk) {
_i++;
continue;
}
} else if (!hs.rsaDecryptOk) {
_i++;
continue;
}
if (version < 771 && !(((candidate.flags & 4) === 0))) {
_i++;
continue;
}
hs.suite = candidate;
return true;
}
_i++;
}
return false;
};
serverHandshakeState.prototype.setCipherSuite = function(id, supportedCipherSuites, version) { return this.$val.setCipherSuite(id, supportedCipherSuites, version); };
serverHandshakeState.ptr.prototype.clientHelloInfo = function() {
var $ptr, _i, _ref, hs, sah, signatureSchemes, supportedVersions;
hs = this;
if (!(hs.cachedClientHelloInfo === ptrType$31.nil)) {
return hs.cachedClientHelloInfo;
}
supportedVersions = sliceType$2.nil;
if (hs.clientHello.vers > 771) {
supportedVersions = new sliceType$2(suppVersArray);
} else if (hs.clientHello.vers >= 768) {
supportedVersions = $subslice(new sliceType$2(suppVersArray), (771 - hs.clientHello.vers << 16 >>> 16));
}
signatureSchemes = $makeSlice(sliceType$7, 0, hs.clientHello.signatureAndHashes.$length);
_ref = hs.clientHello.signatureAndHashes;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
sah = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), signatureAndHash);
signatureSchemes = $append(signatureSchemes, (((sah.hash << 16 >>> 16)) << 8 << 16 >>> 16) + ((sah.signature << 16 >>> 16)) << 16 >>> 16);
_i++;
}
hs.cachedClientHelloInfo = new ClientHelloInfo.ptr(hs.clientHello.cipherSuites, hs.clientHello.serverName, hs.clientHello.supportedCurves, hs.clientHello.supportedPoints, signatureSchemes, hs.clientHello.alpnProtocols, supportedVersions, hs.c.conn);
return hs.cachedClientHelloInfo;
};
serverHandshakeState.prototype.clientHelloInfo = function() { return this.$val.clientHelloInfo(); };
rsaKeyAgreement.ptr.prototype.generateServerKeyExchange = function(config, cert, clientHello, hello) {
var $ptr, cert, clientHello, config, hello, ka;
ka = this;
return [ptrType$22.nil, $ifaceNil];
};
rsaKeyAgreement.prototype.generateServerKeyExchange = function(config, cert, clientHello, hello) { return this.$val.generateServerKeyExchange(config, cert, clientHello, hello); };
rsaKeyAgreement.ptr.prototype.processClientKeyExchange = function(config, cert, ckx, version) {
var $ptr, _r, _tuple, _tuple$1, cert, ciphertext, ciphertextLen, ckx, config, err, ka, ok, preMasterSecret, priv, version, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
ka = this;
if (ckx.ciphertext.$length < 2) {
$s = -1; return [sliceType$8.nil, errClientKeyExchange];
}
ciphertext = ckx.ciphertext;
if (!((version === 768))) {
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));
if (!((ciphertextLen === (ckx.ciphertext.$length - 2 >> 0)))) {
$s = -1; return [sliceType$8.nil, errClientKeyExchange];
}
ciphertext = $subslice(ckx.ciphertext, 2);
}
_tuple = $assertType(cert.PrivateKey, crypto.Decrypter, true);
priv = _tuple[0];
ok = _tuple[1];
if (!ok) {
$s = -1; return [sliceType$8.nil, errors.New("tls: certificate private key does not implement crypto.Decrypter")];
}
_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; }
_tuple$1 = _r;
preMasterSecret = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [sliceType$8.nil, err];
}
$s = -1; return [preMasterSecret, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: rsaKeyAgreement.ptr.prototype.processClientKeyExchange }; } $f.$ptr = $ptr; $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;
};
rsaKeyAgreement.prototype.processClientKeyExchange = function(config, cert, ckx, version) { return this.$val.processClientKeyExchange(config, cert, ckx, version); };
rsaKeyAgreement.ptr.prototype.processServerKeyExchange = function(config, clientHello, serverHello, cert, skx) {
var $ptr, cert, clientHello, config, ka, serverHello, skx;
ka = this;
return errors.New("tls: unexpected ServerKeyExchange");
};
rsaKeyAgreement.prototype.processServerKeyExchange = function(config, clientHello, serverHello, cert, skx) { return this.$val.processServerKeyExchange(config, clientHello, serverHello, cert, skx); };
rsaKeyAgreement.ptr.prototype.generateClientKeyExchange = function(config, clientHello, cert) {
var $ptr, _r, _r$1, _tuple, _tuple$1, cert, ckx, clientHello, config, encrypted, err, ka, preMasterSecret, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
ka = this;
preMasterSecret = $makeSlice(sliceType$8, 48);
(0 >= preMasterSecret.$length ? ($throwRuntimeError("index out of range"), undefined) : preMasterSecret.$array[preMasterSecret.$offset + 0] = (((clientHello.vers >>> 8 << 16 >>> 16) << 24 >>> 24)));
(1 >= preMasterSecret.$length ? ($throwRuntimeError("index out of range"), undefined) : preMasterSecret.$array[preMasterSecret.$offset + 1] = ((clientHello.vers << 24 >>> 24)));
_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; }
_tuple = _r;
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [sliceType$8.nil, ptrType$25.nil, err];
}
_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; }
_tuple$1 = _r$1;
encrypted = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [sliceType$8.nil, ptrType$25.nil, err];
}
ckx = new clientKeyExchangeMsg.ptr(sliceType$8.nil, sliceType$8.nil);
ckx.ciphertext = $makeSlice(sliceType$8, (encrypted.$length + 2 >> 0));
(x = ckx.ciphertext, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = (((encrypted.$length >> 8 >> 0) << 24 >>> 24))));
(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))));
$copySlice($subslice(ckx.ciphertext, 2), encrypted);
$s = -1; return [preMasterSecret, ckx, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: rsaKeyAgreement.ptr.prototype.generateClientKeyExchange }; } $f.$ptr = $ptr; $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;
};
rsaKeyAgreement.prototype.generateClientKeyExchange = function(config, clientHello, cert) { return this.$val.generateClientKeyExchange(config, clientHello, cert); };
sha1Hash = function(slices) {
var $ptr, _i, _r, _r$1, _ref, hsha1, slice, slices, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
hsha1 = sha1.New();
_ref = slices;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
slice = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_r = hsha1.Write(slice); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
_i++;
/* } */ $s = 1; continue; case 2:
_r$1 = hsha1.Sum(sliceType$8.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: sha1Hash }; } $f.$ptr = $ptr; $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;
};
md5SHA1Hash = function(slices) {
var $ptr, _i, _r, _r$1, _r$2, _ref, hmd5, md5sha1, slice, slices, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
md5sha1 = $makeSlice(sliceType$8, 36);
hmd5 = md5.New();
_ref = slices;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
slice = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_r = hmd5.Write(slice); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
_i++;
/* } */ $s = 1; continue; case 2:
_r$1 = hmd5.Sum(sliceType$8.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$copySlice(md5sha1, _r$1);
_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; }
$copySlice($subslice(md5sha1, 16), _r$2);
$s = -1; return md5sha1;
/* */ } return; } if ($f === undefined) { $f = { $blk: md5SHA1Hash }; } $f.$ptr = $ptr; $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;
};
hashForServerKeyExchange = function(sigAndHash, version, slices) {
var $ptr, _i, _r, _r$1, _r$2, _r$3, _r$4, _ref, _tuple, digest, err, h, hashFunc, sigAndHash, slice, slices, version, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; digest = $f.digest; err = $f.err; h = $f.h; hashFunc = $f.hashFunc; sigAndHash = $f.sigAndHash; slice = $f.slice; slices = $f.slices; version = $f.version; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
/* */ if (version >= 771) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (version >= 771) { */ case 1:
if (!isSupportedSignatureAndHash($clone(sigAndHash, signatureAndHash), supportedSignatureAlgorithms)) {
$s = -1; return [sliceType$8.nil, 0, errors.New("tls: unsupported hash function used by peer")];
}
_tuple = lookupTLSHash(sigAndHash.hash);
hashFunc = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [sliceType$8.nil, 0, err];
}
_r = new crypto.Hash(hashFunc).New(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
h = _r;
_ref = slices;
_i = 0;
/* while (true) { */ case 4:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; }
slice = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_r$1 = h.Write(slice); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
_i++;
/* } */ $s = 4; continue; case 5:
_r$2 = h.Sum(sliceType$8.nil); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
digest = _r$2;
$s = -1; return [digest, hashFunc, $ifaceNil];
/* } */ case 2:
/* */ if (sigAndHash.signature === 3) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (sigAndHash.signature === 3) { */ case 8:
_r$3 = sha1Hash(slices); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
$s = -1; return [_r$3, 3, $ifaceNil];
/* } */ case 9:
_r$4 = md5SHA1Hash(slices); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
$s = -1; return [_r$4, 8, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: hashForServerKeyExchange }; } $f.$ptr = $ptr; $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.digest = digest; $f.err = err; $f.h = h; $f.hashFunc = hashFunc; $f.sigAndHash = sigAndHash; $f.slice = slice; $f.slices = slices; $f.version = version; $f.$s = $s; $f.$r = $r; return $f;
};
pickTLS12HashForSignature = function(sigType, clientList) {
var $ptr, _i, _ref, clientList, sigAndHash, sigType;
if (clientList.$length === 0) {
return [2, $ifaceNil];
}
_ref = clientList;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
sigAndHash = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), signatureAndHash);
if (!((sigAndHash.signature === sigType))) {
_i++;
continue;
}
if (isSupportedSignatureAndHash($clone(sigAndHash, signatureAndHash), supportedSignatureAlgorithms)) {
return [sigAndHash.hash, $ifaceNil];
}
_i++;
}
return [0, errors.New("tls: client doesn't support any common hash functions")];
};
curveForCurveID = function(id) {
var $ptr, _1, _r, _r$1, _r$2, id, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_1 = id;
/* */ if (_1 === (23)) { $s = 2; continue; }
/* */ if (_1 === (24)) { $s = 3; continue; }
/* */ if (_1 === (25)) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (_1 === (23)) { */ case 2:
_r = elliptic.P256(); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return [_r, true];
/* } else if (_1 === (24)) { */ case 3:
_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; }
$s = -1; return [_r$1, true];
/* } else if (_1 === (25)) { */ case 4:
_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; }
$s = -1; return [_r$2, true];
/* } else { */ case 5:
$s = -1; return [$ifaceNil, false];
/* } */ case 6:
case 1:
$s = -1; return [$ifaceNil, false];
/* */ } return; } if ($f === undefined) { $f = { $blk: curveForCurveID }; } $f.$ptr = $ptr; $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;
};
ecdheKeyAgreement.ptr.prototype.generateServerKeyExchange = function(config, cert, clientHello, hello) {
var $ptr, _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, sigAndHash, sigAndHashLen, skx, x, y, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; sigAndHash = $f.sigAndHash; sigAndHashLen = $f.sigAndHashLen; skx = $f.skx; x = $f.x; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
public$1 = [public$1];
scalar = [scalar];
ka = this;
preferredCurves = config.curvePreferences();
_ref = preferredCurves;
_i = 0;
NextCandidate:
while (true) {
if (!(_i < _ref.$length)) { break; }
candidate = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_ref$1 = clientHello.supportedCurves;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
c = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
if (candidate === c) {
ka.curveid = c;
break NextCandidate;
}
_i$1++;
}
_i++;
}
if (ka.curveid === 0) {
$s = -1; return [ptrType$22.nil, errors.New("tls: no supported elliptic curves offered")];
}
ecdhePublic = sliceType$8.nil;
/* */ if (ka.curveid === 29) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (ka.curveid === 29) { */ case 1:
_tmp = arrayType.zero();
_tmp$1 = arrayType.zero();
scalar[0] = $clone(_tmp, arrayType);
public$1[0] = $clone(_tmp$1, arrayType);
_r = io.ReadFull(config.rand(), new sliceType$8(scalar[0])); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$22.nil, err];
}
curve25519.ScalarBaseMult(public$1[0], scalar[0]);
ka.privateKey = new sliceType$8(scalar[0]);
ecdhePublic = new sliceType$8(public$1[0]);
$s = 3; continue;
/* } else { */ case 2:
_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; }
_tuple$1 = _r$1;
curve = _tuple$1[0];
ok = _tuple$1[1];
if (!ok) {
$s = -1; return [ptrType$22.nil, errors.New("tls: preferredCurves includes unsupported curve")];
}
_tmp$2 = ptrType$3.nil;
_tmp$3 = ptrType$3.nil;
x = _tmp$2;
y = _tmp$3;
err$1 = $ifaceNil;
_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; }
_tuple$2 = _r$2;
ka.privateKey = _tuple$2[0];
x = _tuple$2[1];
y = _tuple$2[2];
err$1 = _tuple$2[3];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return [ptrType$22.nil, err$1];
}
_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; }
ecdhePublic = _r$3;
/* } */ case 3:
serverECDHParams = $makeSlice(sliceType$8, (4 + ecdhePublic.$length >> 0));
(0 >= serverECDHParams.$length ? ($throwRuntimeError("index out of range"), undefined) : serverECDHParams.$array[serverECDHParams.$offset + 0] = 3);
(1 >= serverECDHParams.$length ? ($throwRuntimeError("index out of range"), undefined) : serverECDHParams.$array[serverECDHParams.$offset + 1] = (((ka.curveid >>> 8 << 16 >>> 16) << 24 >>> 24)));
(2 >= serverECDHParams.$length ? ($throwRuntimeError("index out of range"), undefined) : serverECDHParams.$array[serverECDHParams.$offset + 2] = ((ka.curveid << 24 >>> 24)));
(3 >= serverECDHParams.$length ? ($throwRuntimeError("index out of range"), undefined) : serverECDHParams.$array[serverECDHParams.$offset + 3] = ((ecdhePublic.$length << 24 >>> 24)));
$copySlice($subslice(serverECDHParams, 4), ecdhePublic);
sigAndHash = new signatureAndHash.ptr(0, ka.sigType);
if (ka.version >= 771) {
err$2 = $ifaceNil;
_tuple$3 = pickTLS12HashForSignature(ka.sigType, clientHello.signatureAndHashes);
sigAndHash.hash = _tuple$3[0];
err$2 = _tuple$3[1];
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return [ptrType$22.nil, err$2];
}
}
_r$4 = hashForServerKeyExchange($clone(sigAndHash, signatureAndHash), ka.version, new sliceType$10([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; }
_tuple$4 = _r$4;
digest = _tuple$4[0];
hashFunc = _tuple$4[1];
err$3 = _tuple$4[2];
if (!($interfaceIsEqual(err$3, $ifaceNil))) {
$s = -1; return [ptrType$22.nil, err$3];
}
_tuple$5 = $assertType(cert.PrivateKey, crypto.Signer, true);
priv = _tuple$5[0];
ok$1 = _tuple$5[1];
if (!ok$1) {
$s = -1; return [ptrType$22.nil, errors.New("tls: certificate private key does not implement crypto.Signer")];
}
sig = sliceType$8.nil;
_1 = ka.sigType;
/* */ if (_1 === (3)) { $s = 10; continue; }
/* */ if (_1 === (1)) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if (_1 === (3)) { */ case 10:
_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; }
_tuple$6 = $assertType(_r$5, ptrType$20, true);
ok$2 = _tuple$6[1];
if (!ok$2) {
$s = -1; return [ptrType$22.nil, errors.New("tls: ECDHE ECDSA requires an ECDSA server key")];
}
$s = 13; continue;
/* } else if (_1 === (1)) { */ case 11:
_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; }
_tuple$7 = $assertType(_r$6, ptrType$19, true);
ok$3 = _tuple$7[1];
if (!ok$3) {
$s = -1; return [ptrType$22.nil, errors.New("tls: ECDHE RSA requires a RSA server key")];
}
$s = 13; continue;
/* } else { */ case 12:
$s = -1; return [ptrType$22.nil, errors.New("tls: unknown ECDHE signature algorithm")];
/* } */ case 13:
case 9:
_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; }
_tuple$8 = _r$7;
sig = _tuple$8[0];
err$3 = _tuple$8[1];
/* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 17; continue; }
/* */ $s = 18; continue;
/* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 17:
_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; }
_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; }
$s = -1; return [ptrType$22.nil, _r$9];
/* } */ case 18:
skx = new serverKeyExchangeMsg.ptr(sliceType$8.nil, sliceType$8.nil);
sigAndHashLen = 0;
if (ka.version >= 771) {
sigAndHashLen = 2;
}
skx.key = $makeSlice(sliceType$8, (((serverECDHParams.$length + sigAndHashLen >> 0) + 2 >> 0) + sig.$length >> 0));
$copySlice(skx.key, serverECDHParams);
k = $subslice(skx.key, serverECDHParams.$length);
if (ka.version >= 771) {
(0 >= k.$length ? ($throwRuntimeError("index out of range"), undefined) : k.$array[k.$offset + 0] = sigAndHash.hash);
(1 >= k.$length ? ($throwRuntimeError("index out of range"), undefined) : k.$array[k.$offset + 1] = sigAndHash.signature);
k = $subslice(k, 2);
}
(0 >= k.$length ? ($throwRuntimeError("index out of range"), undefined) : k.$array[k.$offset + 0] = (((sig.$length >> 8 >> 0) << 24 >>> 24)));
(1 >= k.$length ? ($throwRuntimeError("index out of range"), undefined) : k.$array[k.$offset + 1] = ((sig.$length << 24 >>> 24)));
$copySlice($subslice(k, 2), sig);
$s = -1; return [skx, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: ecdheKeyAgreement.ptr.prototype.generateServerKeyExchange }; } $f.$ptr = $ptr; $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.sigAndHash = sigAndHash; $f.sigAndHashLen = sigAndHashLen; $f.skx = skx; $f.x = x; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
};
ecdheKeyAgreement.prototype.generateServerKeyExchange = function(config, cert, clientHello, hello) { return this.$val.generateServerKeyExchange(config, cert, clientHello, hello); };
ecdheKeyAgreement.ptr.prototype.processClientKeyExchange = function(config, cert, ckx, version) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
scalar = [scalar];
sharedKey = [sharedKey];
theirPublic = [theirPublic];
ka = this;
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)))) {
$s = -1; return [sliceType$8.nil, errClientKeyExchange];
}
if (ka.curveid === 29) {
if (!((ckx.ciphertext.$length === 33))) {
$s = -1; return [sliceType$8.nil, errClientKeyExchange];
}
_tmp = arrayType.zero();
_tmp$1 = arrayType.zero();
_tmp$2 = arrayType.zero();
theirPublic[0] = $clone(_tmp, arrayType);
sharedKey[0] = $clone(_tmp$1, arrayType);
scalar[0] = $clone(_tmp$2, arrayType);
$copySlice(new sliceType$8(theirPublic[0]), $subslice(ckx.ciphertext, 1));
$copySlice(new sliceType$8(scalar[0]), ka.privateKey);
curve25519.ScalarMult(sharedKey[0], scalar[0], theirPublic[0]);
$s = -1; return [new sliceType$8(sharedKey[0]), $ifaceNil];
}
_r = curveForCurveID(ka.curveid); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
curve = _tuple[0];
ok = _tuple[1];
if (!ok) {
$panic(new $String("internal error"));
}
_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; }
_tuple$1 = _r$1;
x$1 = _tuple$1[0];
y = _tuple$1[1];
if (x$1 === ptrType$3.nil) {
$s = -1; return [sliceType$8.nil, errClientKeyExchange];
}
_r$2 = curve.IsOnCurve(x$1, y); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
/* */ if (!_r$2) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!_r$2) { */ case 3:
$s = -1; return [sliceType$8.nil, errClientKeyExchange];
/* } */ case 4:
_r$3 = curve.ScalarMult(x$1, y, ka.privateKey); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$2 = _r$3;
x$1 = _tuple$2[0];
_r$4 = curve.Params(); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
preMasterSecret = $makeSlice(sliceType$8, (((_r$4.BitSize + 7 >> 0)) >> 3 >> 0));
xBytes = x$1.Bytes();
$copySlice($subslice(preMasterSecret, (preMasterSecret.$length - xBytes.$length >> 0)), xBytes);
$s = -1; return [preMasterSecret, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: ecdheKeyAgreement.ptr.prototype.processClientKeyExchange }; } $f.$ptr = $ptr; $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._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;
};
ecdheKeyAgreement.prototype.processClientKeyExchange = function(config, cert, ckx, version) { return this.$val.processClientKeyExchange(config, cert, ckx, version); };
ecdheKeyAgreement.ptr.prototype.processServerKeyExchange = function(config, clientHello, serverHello, cert, skx) {
var $ptr, _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _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, sigAndHash, sigLen, skx, x, x$1, x$2, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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; sigAndHash = $f.sigAndHash; sigLen = $f.sigLen; 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:
ka = this;
if (skx.key.$length < 4) {
$s = -1; return errServerKeyExchange;
}
if (!(((x = skx.key, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) === 3))) {
$s = -1; return errors.New("tls: server selected unsupported curve");
}
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;
publicLen = (((x$3 = skx.key, (3 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 3])) >> 0));
if ((publicLen + 4 >> 0) > skx.key.$length) {
$s = -1; return errServerKeyExchange;
}
serverECDHParams = $subslice(skx.key, 0, (4 + publicLen >> 0));
publicKey = $subslice(serverECDHParams, 4);
sig = $subslice(skx.key, (4 + publicLen >> 0));
if (sig.$length < 2) {
$s = -1; return errServerKeyExchange;
}
/* */ if (ka.curveid === 29) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (ka.curveid === 29) { */ case 1:
if (!((publicKey.$length === 32))) {
$s = -1; return errors.New("tls: bad X25519 public value");
}
ka.publicKey = publicKey;
$s = 3; continue;
/* } else { */ case 2:
_r = curveForCurveID(ka.curveid); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
curve = _tuple[0];
ok = _tuple[1];
if (!ok) {
$s = -1; return errors.New("tls: server selected unsupported curve");
}
_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; }
_tuple$1 = _r$1;
ka.x = _tuple$1[0];
ka.y = _tuple$1[1];
if (ka.x === ptrType$3.nil) {
$s = -1; return errServerKeyExchange;
}
_r$2 = curve.IsOnCurve(ka.x, ka.y); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
/* */ if (!_r$2) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!_r$2) { */ case 6:
$s = -1; return errServerKeyExchange;
/* } */ case 7:
/* } */ case 3:
sigAndHash = new signatureAndHash.ptr(0, ka.sigType);
if (ka.version >= 771) {
signatureAndHash.copy(sigAndHash, new signatureAndHash.ptr((0 >= sig.$length ? ($throwRuntimeError("index out of range"), undefined) : sig.$array[sig.$offset + 0]), (1 >= sig.$length ? ($throwRuntimeError("index out of range"), undefined) : sig.$array[sig.$offset + 1])));
if (!((sigAndHash.signature === ka.sigType))) {
$s = -1; return errServerKeyExchange;
}
sig = $subslice(sig, 2);
if (sig.$length < 2) {
$s = -1; return errServerKeyExchange;
}
}
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));
if (!(((sigLen + 2 >> 0) === sig.$length))) {
$s = -1; return errServerKeyExchange;
}
sig = $subslice(sig, 2);
_r$3 = hashForServerKeyExchange($clone(sigAndHash, signatureAndHash), ka.version, new sliceType$10([clientHello.random, serverHello.random, serverECDHParams])); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$2 = _r$3;
digest = _tuple$2[0];
hashFunc = _tuple$2[1];
err = _tuple$2[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
_1 = ka.sigType;
/* */ if (_1 === (3)) { $s = 11; continue; }
/* */ if (_1 === (1)) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (_1 === (3)) { */ case 11:
_tuple$3 = $assertType(cert.PublicKey, ptrType$20, true);
pubKey = _tuple$3[0];
ok$1 = _tuple$3[1];
if (!ok$1) {
$s = -1; return errors.New("tls: ECDHE ECDSA requires a ECDSA server public key");
}
ecdsaSig = new ecdsaSignature.ptr(ptrType$3.nil, ptrType$3.nil);
_r$4 = asn1.Unmarshal(sig, ecdsaSig); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_tuple$4 = _r$4;
err$1 = _tuple$4[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return err$1;
}
if (ecdsaSig.R.Sign() <= 0 || ecdsaSig.S.Sign() <= 0) {
$s = -1; return errors.New("tls: ECDSA signature contained zero or negative values");
}
_r$5 = ecdsa.Verify(pubKey, digest, ecdsaSig.R, ecdsaSig.S); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
/* */ if (!_r$5) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (!_r$5) { */ case 16:
$s = -1; return errors.New("tls: ECDSA verification failure");
/* } */ case 17:
$s = 14; continue;
/* } else if (_1 === (1)) { */ case 12:
_tuple$5 = $assertType(cert.PublicKey, ptrType$19, true);
pubKey$1 = _tuple$5[0];
ok$2 = _tuple$5[1];
if (!ok$2) {
$s = -1; return errors.New("tls: ECDHE RSA requires a RSA server public key");
}
_r$6 = rsa.VerifyPKCS1v15(pubKey$1, hashFunc, digest, sig); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
err$2 = _r$6;
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return err$2;
}
$s = 14; continue;
/* } else { */ case 13:
$s = -1; return errors.New("tls: unknown ECDHE signature algorithm");
/* } */ case 14:
case 10:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: ecdheKeyAgreement.ptr.prototype.processServerKeyExchange }; } $f.$ptr = $ptr; $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._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.sigAndHash = sigAndHash; $f.sigLen = sigLen; $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;
};
ecdheKeyAgreement.prototype.processServerKeyExchange = function(config, clientHello, serverHello, cert, skx) { return this.$val.processServerKeyExchange(config, clientHello, serverHello, cert, skx); };
ecdheKeyAgreement.ptr.prototype.generateClientKeyExchange = function(config, clientHello, cert) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
ourPublic = [ourPublic];
scalar = [scalar];
sharedKey = [sharedKey];
theirPublic = [theirPublic];
ka = this;
if (ka.curveid === 0) {
$s = -1; return [sliceType$8.nil, ptrType$25.nil, errors.New("tls: missing ServerKeyExchange message")];
}
_tmp = sliceType$8.nil;
_tmp$1 = sliceType$8.nil;
serialized = _tmp;
preMasterSecret = _tmp$1;
/* */ if (ka.curveid === 29) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (ka.curveid === 29) { */ case 1:
_tmp$2 = arrayType.zero();
_tmp$3 = arrayType.zero();
_tmp$4 = arrayType.zero();
_tmp$5 = arrayType.zero();
ourPublic[0] = $clone(_tmp$2, arrayType);
theirPublic[0] = $clone(_tmp$3, arrayType);
sharedKey[0] = $clone(_tmp$4, arrayType);
scalar[0] = $clone(_tmp$5, arrayType);
_r = io.ReadFull(config.rand(), new sliceType$8(scalar[0])); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [sliceType$8.nil, ptrType$25.nil, err];
}
$copySlice(new sliceType$8(theirPublic[0]), ka.publicKey);
curve25519.ScalarBaseMult(ourPublic[0], scalar[0]);
curve25519.ScalarMult(sharedKey[0], scalar[0], theirPublic[0]);
serialized = new sliceType$8(ourPublic[0]);
preMasterSecret = new sliceType$8(sharedKey[0]);
$s = 3; continue;
/* } else { */ case 2:
_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; }
_tuple$1 = _r$1;
curve = _tuple$1[0];
ok = _tuple$1[1];
if (!ok) {
$panic(new $String("internal error"));
}
_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; }
_tuple$2 = _r$2;
priv = _tuple$2[0];
mx = _tuple$2[1];
my = _tuple$2[2];
err$1 = _tuple$2[3];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return [sliceType$8.nil, ptrType$25.nil, err$1];
}
_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; }
_tuple$3 = _r$3;
x = _tuple$3[0];
_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; }
preMasterSecret = $makeSlice(sliceType$8, (((_r$4.BitSize + 7 >> 0)) >> 3 >> 0));
xBytes = x.Bytes();
$copySlice($subslice(preMasterSecret, (preMasterSecret.$length - xBytes.$length >> 0)), xBytes);
_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; }
serialized = _r$5;
/* } */ case 3:
ckx = new clientKeyExchangeMsg.ptr(sliceType$8.nil, sliceType$8.nil);
ckx.ciphertext = $makeSlice(sliceType$8, (1 + serialized.$length >> 0));
(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))));
$copySlice($subslice(ckx.ciphertext, 1), serialized);
$s = -1; return [preMasterSecret, ckx, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: ecdheKeyAgreement.ptr.prototype.generateClientKeyExchange }; } $f.$ptr = $ptr; $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;
};
ecdheKeyAgreement.prototype.generateClientKeyExchange = function(config, clientHello, cert) { return this.$val.generateClientKeyExchange(config, clientHello, cert); };
splitPreMasterSecret = function(secret) {
var $ptr, _q, _q$1, s1, s2, secret;
s1 = sliceType$8.nil;
s2 = sliceType$8.nil;
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")));
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")));
return [s1, s2];
};
pHash = function(result, secret, seed, hash$1) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, a, b, h, hash$1, j, result, secret, seed, todo, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; todo = $f.todo; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = hmac.New(hash$1, secret); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
h = _r;
_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; }
_r$1;
_r$2 = h.Sum(sliceType$8.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
a = _r$2;
j = 0;
/* while (true) { */ case 4:
/* if (!(j < result.$length)) { break; } */ if(!(j < result.$length)) { $s = 5; continue; }
$r = h.Reset(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_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; }
_r$3;
_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; }
_r$4;
_r$5 = h.Sum(sliceType$8.nil); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
b = _r$5;
todo = b.$length;
if ((j + todo >> 0) > result.$length) {
todo = result.$length - j >> 0;
}
$copySlice($subslice(result, j, (j + todo >> 0)), b);
j = j + (todo) >> 0;
$r = h.Reset(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_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; }
_r$6;
_r$7 = h.Sum(sliceType$8.nil); /* */ $s = 12; case 12: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
a = _r$7;
/* } */ $s = 4; continue; case 5:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: pHash }; } $f.$ptr = $ptr; $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.todo = todo; $f.$s = $s; $f.$r = $r; return $f;
};
prf10 = function(result, secret, label, seed) {
var $ptr, _i, _ref, _tuple, b, hashMD5, hashSHA1, i, label, labelAndSeed, result, result2, s1, s2, secret, seed, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
hashSHA1 = sha1.New;
hashMD5 = md5.New;
labelAndSeed = $makeSlice(sliceType$8, (label.$length + seed.$length >> 0));
$copySlice(labelAndSeed, label);
$copySlice($subslice(labelAndSeed, label.$length), seed);
_tuple = splitPreMasterSecret(secret);
s1 = _tuple[0];
s2 = _tuple[1];
$r = pHash(result, s1, labelAndSeed, hashMD5); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
result2 = $makeSlice(sliceType$8, result.$length);
$r = pHash(result2, s2, labelAndSeed, hashSHA1); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_ref = result2;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
((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));
_i++;
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: prf10 }; } $f.$ptr = $ptr; $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;
};
prf12 = function(hashFunc) {
var $ptr, hashFunc;
return (function $b(result, secret, label, seed) {
var $ptr, label, labelAndSeed, result, secret, seed, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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:
labelAndSeed = $makeSlice(sliceType$8, (label.$length + seed.$length >> 0));
$copySlice(labelAndSeed, label);
$copySlice($subslice(labelAndSeed, label.$length), seed);
$r = pHash(result, secret, labelAndSeed, hashFunc); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.label = label; $f.labelAndSeed = labelAndSeed; $f.result = result; $f.secret = secret; $f.seed = seed; $f.$s = $s; $f.$r = $r; return $f;
});
};
prf30 = function(result, secret, label, seed) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
hashSHA1 = sha1.New();
hashMD5 = md5.New();
done = 0;
i = 0;
b = arrayType$6.zero();
/* while (true) { */ case 1:
/* if (!(done < result.$length)) { break; } */ if(!(done < result.$length)) { $s = 2; continue; }
j = 0;
while (true) {
if (!(j <= i)) { break; }
((j < 0 || j >= b.length) ? ($throwRuntimeError("index out of range"), undefined) : b[j] = (65 + ((i << 24 >>> 24)) << 24 >>> 24));
j = j + (1) >> 0;
}
$r = hashSHA1.Reset(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r = hashSHA1.Write($subslice(new sliceType$8(b), 0, (i + 1 >> 0))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
_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; }
_r$1;
_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; }
_r$2;
_r$3 = hashSHA1.Sum(sliceType$8.nil); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
digest = _r$3;
$r = hashMD5.Reset(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_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; }
_r$4;
_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; }
_r$5;
_r$6 = hashMD5.Sum(sliceType$8.nil); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
done = done + ($copySlice($subslice(result, done), _r$6)) >> 0;
i = i + (1) >> 0;
/* } */ $s = 1; continue; case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: prf30 }; } $f.$ptr = $ptr; $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;
};
prfAndHashForVersion = function(version, suite) {
var $ptr, _1, suite, version;
_1 = version;
if (_1 === (768)) {
return [prf30, 0];
} else if ((_1 === (769)) || (_1 === (770))) {
return [prf10, 0];
} else if (_1 === (771)) {
if (!(((suite.flags & 8) === 0))) {
return [prf12(sha512.New384), 6];
}
return [prf12(sha256.New), 5];
} else {
$panic(new $String("unknown version"));
}
};
prfForVersion = function(version, suite) {
var $ptr, _tuple, prf, suite, version;
_tuple = prfAndHashForVersion(version, suite);
prf = _tuple[0];
return prf;
};
masterFromPreMasterSecret = function(version, suite, preMasterSecret, clientRandom, serverRandom) {
var $ptr, clientRandom, masterSecret, preMasterSecret, seed, serverRandom, suite, version, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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:
seed = $makeSlice(sliceType$8, 0, (clientRandom.$length + serverRandom.$length >> 0));
seed = $appendSlice(seed, clientRandom);
seed = $appendSlice(seed, serverRandom);
masterSecret = $makeSlice(sliceType$8, 48);
$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; }
$s = -1; return masterSecret;
/* */ } return; } if ($f === undefined) { $f = { $blk: masterFromPreMasterSecret }; } $f.$ptr = $ptr; $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;
};
keysFromMasterSecret = function(version, suite, masterSecret, clientRandom, serverRandom, macLen, keyLen, ivLen) {
var $ptr, clientIV, clientKey, clientMAC, clientRandom, ivLen, keyLen, keyMaterial, macLen, masterSecret, n, seed, serverIV, serverKey, serverMAC, serverRandom, suite, version, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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:
clientMAC = sliceType$8.nil;
serverMAC = sliceType$8.nil;
clientKey = sliceType$8.nil;
serverKey = sliceType$8.nil;
clientIV = sliceType$8.nil;
serverIV = sliceType$8.nil;
seed = $makeSlice(sliceType$8, 0, (serverRandom.$length + clientRandom.$length >> 0));
seed = $appendSlice(seed, serverRandom);
seed = $appendSlice(seed, clientRandom);
n = (($imul(2, macLen)) + ($imul(2, keyLen)) >> 0) + ($imul(2, ivLen)) >> 0;
keyMaterial = $makeSlice(sliceType$8, n);
$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; }
clientMAC = $subslice(keyMaterial, 0, macLen);
keyMaterial = $subslice(keyMaterial, macLen);
serverMAC = $subslice(keyMaterial, 0, macLen);
keyMaterial = $subslice(keyMaterial, macLen);
clientKey = $subslice(keyMaterial, 0, keyLen);
keyMaterial = $subslice(keyMaterial, keyLen);
serverKey = $subslice(keyMaterial, 0, keyLen);
keyMaterial = $subslice(keyMaterial, keyLen);
clientIV = $subslice(keyMaterial, 0, ivLen);
keyMaterial = $subslice(keyMaterial, ivLen);
serverIV = $subslice(keyMaterial, 0, ivLen);
$s = -1; return [clientMAC, serverMAC, clientKey, serverKey, clientIV, serverIV];
/* */ } return; } if ($f === undefined) { $f = { $blk: keysFromMasterSecret }; } $f.$ptr = $ptr; $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;
};
lookupTLSHash = function(hash$1) {
var $ptr, _1, hash$1;
_1 = hash$1;
if (_1 === (2)) {
return [3, $ifaceNil];
} else if (_1 === (4)) {
return [5, $ifaceNil];
} else if (_1 === (5)) {
return [6, $ifaceNil];
} else {
return [0, errors.New("tls: unsupported hash algorithm")];
}
};
newFinishedHash = function(version, cipherSuite$1) {
var $ptr, _r, _r$1, _tuple, buffer, cipherSuite$1, hash$1, prf, version, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
buffer = sliceType$8.nil;
if ((version === 768) || version >= 771) {
buffer = new sliceType$8([]);
}
_tuple = prfAndHashForVersion(version, cipherSuite$1);
prf = _tuple[0];
hash$1 = _tuple[1];
/* */ if (!((hash$1 === 0))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!((hash$1 === 0))) { */ case 1:
_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; }
_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; }
$s = -1; return new finishedHash.ptr(_r, _r$1, $ifaceNil, $ifaceNil, buffer, version, prf);
/* } */ case 2:
$s = -1; return new finishedHash.ptr(sha1.New(), sha1.New(), md5.New(), md5.New(), buffer, version, prf);
/* */ } return; } if ($f === undefined) { $f = { $blk: newFinishedHash }; } $f.$ptr = $ptr; $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;
};
finishedHash.ptr.prototype.Write = function(msg) {
var $ptr, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, err, h, msg, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
h = this;
_r = h.client.Write(msg); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
_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; }
_r$1;
/* */ if (h.version < 771) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (h.version < 771) { */ case 3:
_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; }
_r$2;
_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; }
_r$3;
/* } */ case 4:
if (!(h.buffer === sliceType$8.nil)) {
h.buffer = $appendSlice(h.buffer, msg);
}
_tmp = msg.$length;
_tmp$1 = $ifaceNil;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: finishedHash.ptr.prototype.Write }; } $f.$ptr = $ptr; $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;
};
finishedHash.prototype.Write = function(msg) { return this.$val.Write(msg); };
finishedHash.ptr.prototype.Sum = function() {
var $ptr, _r, _r$1, _r$2, h, out, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
h = this;
/* */ if (h.version >= 771) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (h.version >= 771) { */ case 1:
_r = h.client.Sum(sliceType$8.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 2:
out = $makeSlice(sliceType$8, 0, 36);
_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; }
out = _r$1;
_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; }
$s = -1; return _r$2;
/* */ } return; } if ($f === undefined) { $f = { $blk: finishedHash.ptr.prototype.Sum }; } $f.$ptr = $ptr; $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;
};
finishedHash.prototype.Sum = function() { return this.$val.Sum(); };
finishedSum30 = function(md5$1, sha1$1, masterSecret, magic) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = md5$1.Write(magic); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
_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; }
_r$1;
_r$2 = md5$1.Write(new sliceType$8(ssl30Pad1)); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
_r$3 = md5$1.Sum(sliceType$8.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
md5Digest = _r$3;
$r = md5$1.Reset(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_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; }
_r$4;
_r$5 = md5$1.Write(new sliceType$8(ssl30Pad2)); /* */ $s = 7; case 7: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_r$5;
_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; }
_r$6;
_r$7 = md5$1.Sum(sliceType$8.nil); /* */ $s = 9; case 9: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
md5Digest = _r$7;
_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; }
_r$8;
_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; }
_r$9;
_r$10 = sha1$1.Write($subslice(new sliceType$8(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; }
_r$10;
_r$11 = sha1$1.Sum(sliceType$8.nil); /* */ $s = 13; case 13: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
sha1Digest = _r$11;
$r = sha1$1.Reset(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_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; }
_r$12;
_r$13 = sha1$1.Write($subslice(new sliceType$8(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; }
_r$13;
_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; }
_r$14;
_r$15 = sha1$1.Sum(sliceType$8.nil); /* */ $s = 18; case 18: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
sha1Digest = _r$15;
ret = $makeSlice(sliceType$8, (md5Digest.$length + sha1Digest.$length >> 0));
$copySlice(ret, md5Digest);
$copySlice($subslice(ret, md5Digest.$length), sha1Digest);
$s = -1; return ret;
/* */ } return; } if ($f === undefined) { $f = { $blk: finishedSum30 }; } $f.$ptr = $ptr; $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;
};
finishedHash.ptr.prototype.clientSum = function(masterSecret) {
var $ptr, _arg, _arg$1, _arg$2, _arg$3, _r, _r$1, h, masterSecret, out, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
h = this;
/* */ if (h.version === 768) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (h.version === 768) { */ case 1:
_r = finishedSum30(h.clientMD5, h.client, masterSecret, new sliceType$8(ssl3ClientFinishedMagic)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 2:
out = $makeSlice(sliceType$8, 12);
_arg = out;
_arg$1 = masterSecret;
_arg$2 = clientFinishedLabel;
_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; }
_arg$3 = _r$1;
$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; }
$s = -1; return out;
/* */ } return; } if ($f === undefined) { $f = { $blk: finishedHash.ptr.prototype.clientSum }; } $f.$ptr = $ptr; $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;
};
finishedHash.prototype.clientSum = function(masterSecret) { return this.$val.clientSum(masterSecret); };
finishedHash.ptr.prototype.serverSum = function(masterSecret) {
var $ptr, _arg, _arg$1, _arg$2, _arg$3, _r, _r$1, h, masterSecret, out, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
h = this;
/* */ if (h.version === 768) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (h.version === 768) { */ case 1:
_r = finishedSum30(h.serverMD5, h.server, masterSecret, new sliceType$8(ssl3ServerFinishedMagic)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 2:
out = $makeSlice(sliceType$8, 12);
_arg = out;
_arg$1 = masterSecret;
_arg$2 = serverFinishedLabel;
_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; }
_arg$3 = _r$1;
$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; }
$s = -1; return out;
/* */ } return; } if ($f === undefined) { $f = { $blk: finishedHash.ptr.prototype.serverSum }; } $f.$ptr = $ptr; $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;
};
finishedHash.prototype.serverSum = function(masterSecret) { return this.$val.serverSum(masterSecret); };
finishedHash.ptr.prototype.selectClientCertSignatureAlgorithm = function(serverList, sigType) {
var $ptr, _i, _ref, h, serverList, sigType, v;
h = this;
if (h.version < 771) {
return [new signatureAndHash.ptr(0, sigType), $ifaceNil];
}
_ref = serverList;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
v = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), signatureAndHash);
if ((v.signature === sigType) && isSupportedSignatureAndHash($clone(v, signatureAndHash), supportedSignatureAlgorithms)) {
return [v, $ifaceNil];
}
_i++;
}
return [new signatureAndHash.ptr(0, 0), errors.New("tls: no supported signature algorithm found for signing client certificate")];
};
finishedHash.prototype.selectClientCertSignatureAlgorithm = function(serverList, sigType) { return this.$val.selectClientCertSignatureAlgorithm(serverList, sigType); };
finishedHash.ptr.prototype.hashForClientCertificate = function(signatureAndHash$1, masterSecret) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, err, h, hash$1, hashAlg, masterSecret, md5Hash, sha1Hash$1, signatureAndHash$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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; signatureAndHash$1 = $f.signatureAndHash$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
h = this;
if (((h.version === 768) || h.version >= 771) && h.buffer === sliceType$8.nil) {
$panic(new $String("a handshake hash for a client-certificate was requested after discarding the handshake buffer"));
}
/* */ if (h.version === 768) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (h.version === 768) { */ case 1:
if (!((signatureAndHash$1.signature === 1))) {
$s = -1; return [sliceType$8.nil, 0, errors.New("tls: unsupported signature type for client certificate")];
}
md5Hash = md5.New();
_r = md5Hash.Write(h.buffer); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
sha1Hash$1 = sha1.New();
_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; }
_r$1;
_r$2 = finishedSum30(md5Hash, sha1Hash$1, masterSecret, sliceType$8.nil); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$s = -1; return [_r$2, 8, $ifaceNil];
/* } */ case 2:
/* */ if (h.version >= 771) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (h.version >= 771) { */ case 6:
_tuple = lookupTLSHash(signatureAndHash$1.hash);
hashAlg = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [sliceType$8.nil, 0, err];
}
_r$3 = new crypto.Hash(hashAlg).New(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
hash$1 = _r$3;
_r$4 = hash$1.Write(h.buffer); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_r$4;
_r$5 = hash$1.Sum(sliceType$8.nil); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
$s = -1; return [_r$5, hashAlg, $ifaceNil];
/* } */ case 7:
/* */ if (signatureAndHash$1.signature === 3) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if (signatureAndHash$1.signature === 3) { */ case 11:
_r$6 = h.server.Sum(sliceType$8.nil); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
$s = -1; return [_r$6, 3, $ifaceNil];
/* } */ case 12:
_r$7 = $clone(h, finishedHash).Sum(); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
$s = -1; return [_r$7, 8, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: finishedHash.ptr.prototype.hashForClientCertificate }; } $f.$ptr = $ptr; $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.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.signatureAndHash$1 = signatureAndHash$1; $f.$s = $s; $f.$r = $r; return $f;
};
finishedHash.prototype.hashForClientCertificate = function(signatureAndHash$1, masterSecret) { return this.$val.hashForClientCertificate(signatureAndHash$1, masterSecret); };
finishedHash.ptr.prototype.discardHandshakeBuffer = function() {
var $ptr, h;
h = this;
h.buffer = sliceType$8.nil;
};
finishedHash.prototype.discardHandshakeBuffer = function() { return this.$val.discardHandshakeBuffer(); };
sessionState.ptr.prototype.marshal = function() {
var $ptr, _i, _i$1, _ref, _ref$1, cert, cert$1, length, ret, s, x;
s = this;
length = (6 + s.masterSecret.$length >> 0) + 2 >> 0;
_ref = s.certificates;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
cert = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
length = length + ((4 + cert.$length >> 0)) >> 0;
_i++;
}
ret = $makeSlice(sliceType$8, length);
x = ret;
(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = (((s.vers >>> 8 << 16 >>> 16) << 24 >>> 24)));
(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = ((s.vers << 24 >>> 24)));
(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (((s.cipherSuite >>> 8 << 16 >>> 16) << 24 >>> 24)));
(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((s.cipherSuite << 24 >>> 24)));
(4 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 4] = (((s.masterSecret.$length >> 8 >> 0) << 24 >>> 24)));
(5 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 5] = ((s.masterSecret.$length << 24 >>> 24)));
x = $subslice(x, 6);
$copySlice(x, s.masterSecret);
x = $subslice(x, s.masterSecret.$length);
(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = (((s.certificates.$length >> 8 >> 0) << 24 >>> 24)));
(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = ((s.certificates.$length << 24 >>> 24)));
x = $subslice(x, 2);
_ref$1 = s.certificates;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
cert$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = (((cert$1.$length >> 24 >> 0) << 24 >>> 24)));
(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = (((cert$1.$length >> 16 >> 0) << 24 >>> 24)));
(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (((cert$1.$length >> 8 >> 0) << 24 >>> 24)));
(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((cert$1.$length << 24 >>> 24)));
$copySlice($subslice(x, 4), cert$1);
x = $subslice(x, (4 + cert$1.$length >> 0));
_i$1++;
}
return ret;
};
sessionState.prototype.marshal = function() { return this.$val.marshal(); };
sessionState.ptr.prototype.unmarshal = function(data) {
var $ptr, _i, _ref, certLen, data, i, masterSecretLen, numCerts, s, x;
s = this;
if (data.$length < 8) {
return false;
}
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;
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;
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));
data = $subslice(data, 6);
if (data.$length < masterSecretLen) {
return false;
}
s.masterSecret = $subslice(data, 0, masterSecretLen);
data = $subslice(data, masterSecretLen);
if (data.$length < 2) {
return false;
}
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));
data = $subslice(data, 2);
s.certificates = $makeSlice(sliceType$10, numCerts);
_ref = s.certificates;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
if (data.$length < 4) {
return false;
}
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));
data = $subslice(data, 4);
if (certLen < 0) {
return false;
}
if (data.$length < certLen) {
return false;
}
(x = s.certificates, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i] = $subslice(data, 0, certLen)));
data = $subslice(data, certLen);
_i++;
}
return data.$length === 0;
};
sessionState.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
Conn.ptr.prototype.encryptTicket = function(state) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
c = this;
serialized = state.marshal();
encrypted = $makeSlice(sliceType$8, ((32 + serialized.$length >> 0) + 32 >> 0));
keyName = $subslice(encrypted, 0, 16);
iv = $subslice(encrypted, 16, 32);
macBytes = $subslice(encrypted, (encrypted.$length - 32 >> 0));
_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; }
_tuple = _r;
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [sliceType$8.nil, err];
}
_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; }
key = $clone((x = _r$1, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])), ticketKey);
$copySlice(keyName, new sliceType$8(key.keyName));
_tuple$1 = aes.NewCipher(new sliceType$8(key.aesKey));
block$1 = _tuple$1[0];
err$1 = _tuple$1[1];
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 3:
_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; }
_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; }
$s = -1; return [sliceType$8.nil, _r$3];
/* } */ case 4:
_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; }
$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; }
_r$5 = hmac.New(sha256.New, new sliceType$8(key.hmacKey)); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
mac = _r$5;
_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; }
_r$6;
_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; }
_r$7;
$s = -1; return [encrypted, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.encryptTicket }; } $f.$ptr = $ptr; $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;
};
Conn.prototype.encryptTicket = function(state) { return this.$val.encryptTicket(state); };
Conn.ptr.prototype.decryptTicket = function(encrypted) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
c = this;
if (c.config.SessionTicketsDisabled || encrypted.$length < 64) {
$s = -1; return [ptrType$30.nil, false];
}
keyName = $subslice(encrypted, 0, 16);
iv = $subslice(encrypted, 16, 32);
macBytes = $subslice(encrypted, (encrypted.$length - 32 >> 0));
_r = c.config.ticketKeys(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
keys = _r;
keyIndex = -1;
_ref = keys;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
candidateKey = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), ticketKey);
if (bytes.Equal(keyName, new sliceType$8(candidateKey.keyName))) {
keyIndex = i;
break;
}
_i++;
}
if (keyIndex === -1) {
$s = -1; return [ptrType$30.nil, false];
}
key = ((keyIndex < 0 || keyIndex >= keys.$length) ? ($throwRuntimeError("index out of range"), undefined) : keys.$array[keys.$offset + keyIndex]);
_r$1 = hmac.New(sha256.New, new sliceType$8(key.hmacKey)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
mac = _r$1;
_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; }
_r$2;
_r$3 = mac.Sum(sliceType$8.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
expected = _r$3;
if (!((subtle.ConstantTimeCompare(macBytes, expected) === 1))) {
$s = -1; return [ptrType$30.nil, false];
}
_tuple = aes.NewCipher(new sliceType$8(key.aesKey));
block$1 = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$30.nil, false];
}
ciphertext = $subslice(encrypted, 32, (encrypted.$length - 32 >> 0));
plaintext = ciphertext;
_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; }
$r = _r$4.XORKeyStream(plaintext, ciphertext); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
state = new sessionState.ptr(0, 0, sliceType$8.nil, sliceType$10.nil, keyIndex > 0);
ok = state.unmarshal(plaintext);
$s = -1; return [state, ok];
/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.decryptTicket }; } $f.$ptr = $ptr; $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;
};
Conn.prototype.decryptTicket = function(encrypted) { return this.$val.decryptTicket(encrypted); };
Server = function(conn, config) {
var $ptr, config, conn;
return new Conn.ptr(conn, false, new sync.Mutex.ptr(0, 0), ptrType$12.nil, $ifaceNil, 0, false, config, false, 0, false, 0, sliceType$8.nil, sliceType$10.nil, sliceType$11.nil, sliceType$12.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$8.nil, sliceType$8.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$8.nil, sliceType$8.nil), ptrType$9.nil, ptrType$9.nil, new bytes.Buffer.ptr(sliceType$8.nil, 0, arrayType$3.zero(), 0), false, sliceType$8.nil, new $Int64(0, 0), new $Int64(0, 0), 0, arrayType$2.zero());
};
$pkg.Server = Server;
Client = function(conn, config) {
var $ptr, config, conn;
return new Conn.ptr(conn, true, new sync.Mutex.ptr(0, 0), ptrType$12.nil, $ifaceNil, 0, false, config, false, 0, false, 0, sliceType$8.nil, sliceType$10.nil, sliceType$11.nil, sliceType$12.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$8.nil, sliceType$8.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$8.nil, sliceType$8.nil), ptrType$9.nil, ptrType$9.nil, new bytes.Buffer.ptr(sliceType$8.nil, 0, arrayType$3.zero(), 0), false, sliceType$8.nil, new $Int64(0, 0), new $Int64(0, 0), 0, arrayType$2.zero());
};
$pkg.Client = Client;
listener.ptr.prototype.Accept = function() {
var $ptr, _r, _tuple, c, err, l, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
l = this;
_r = l.Listener.Accept(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
c = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [$ifaceNil, err];
}
$s = -1; return [Server(c, l.config), $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: listener.ptr.prototype.Accept }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.l = l; $f.$s = $s; $f.$r = $r; return $f;
};
listener.prototype.Accept = function() { return this.$val.Accept(); };
NewListener = function(inner, config) {
var $ptr, config, inner, l;
l = new listener.ptr($ifaceNil, ptrType$1.nil);
l.Listener = inner;
l.config = config;
return l;
};
$pkg.NewListener = NewListener;
timeoutError.ptr.prototype.Error = function() {
var $ptr;
return "tls: DialWithDialer timed out";
};
timeoutError.prototype.Error = function() { return this.$val.Error(); };
timeoutError.ptr.prototype.Timeout = function() {
var $ptr;
return true;
};
timeoutError.prototype.Timeout = function() { return this.$val.Timeout(); };
timeoutError.ptr.prototype.Temporary = function() {
var $ptr;
return true;
};
timeoutError.prototype.Temporary = function() { return this.$val.Temporary(); };
DialWithDialer = function(dialer, network, addr, config) {
var $ptr, _r, _r$1, _r$2, _r$3, _tuple, addr, c, colonPos, config, conn, deadlineTimeout, dialer, err, errChannel, hostname, network, rawConn, timeout, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
conn = [conn];
errChannel = [errChannel];
timeout = dialer.Timeout;
if (!$clone(dialer.Deadline, time.Time).IsZero()) {
deadlineTimeout = time.Until($clone(dialer.Deadline, time.Time));
if ((timeout.$high === 0 && timeout.$low === 0) || (deadlineTimeout.$high < timeout.$high || (deadlineTimeout.$high === timeout.$high && deadlineTimeout.$low < timeout.$low))) {
timeout = deadlineTimeout;
}
}
errChannel[0] = $chanNil;
/* */ if (!((timeout.$high === 0 && timeout.$low === 0))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!((timeout.$high === 0 && timeout.$low === 0))) { */ case 1:
errChannel[0] = new $Chan($error, 2);
time.AfterFunc(timeout, (function(conn, errChannel) { return function $b() {
var $ptr, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
}; })(conn, errChannel));
/* } */ case 2:
_tuple = dialer.Dial(network, addr);
rawConn = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$15.nil, err];
}
colonPos = strings.LastIndex(addr, ":");
if (colonPos === -1) {
colonPos = addr.length;
}
hostname = $substring(addr, 0, colonPos);
if (config === ptrType$1.nil) {
config = defaultConfig();
}
/* */ if (config.ServerName === "") { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (config.ServerName === "") { */ case 3:
_r = config.Clone(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
c = _r;
c.ServerName = hostname;
config = c;
/* } */ case 4:
conn[0] = Client(rawConn, config);
/* */ if ((timeout.$high === 0 && timeout.$low === 0)) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if ((timeout.$high === 0 && timeout.$low === 0)) { */ case 6:
_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; }
err = _r$1;
$s = 8; continue;
/* } else { */ case 7:
$go((function(conn, errChannel) { return function $b() {
var $ptr, _r$2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_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; }
$r = $send(errChannel[0], _r$2); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.$s = $s; $f.$r = $r; return $f;
}; })(conn, errChannel), []);
_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; }
err = _r$2[0];
/* } */ case 8:
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 11:
_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; }
_r$3;
$s = -1; return [ptrType$15.nil, err];
/* } */ case 12:
$s = -1; return [conn[0], $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: DialWithDialer }; } $f.$ptr = $ptr; $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;
};
$pkg.DialWithDialer = DialWithDialer;
Dial = function(network, addr, config) {
var $ptr, _r, addr, config, network, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = DialWithDialer(new net.Dialer.ptr(new time.Duration(0, 0), new time.Time.ptr(new $Int64(0, 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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Dial }; } $f.$ptr = $ptr; $f._r = _r; $f.addr = addr; $f.config = config; $f.network = network; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Dial = Dial;
LoadX509KeyPair = function(certFile, keyFile) {
var $ptr, _r, _r$1, _r$2, _tuple, _tuple$1, certFile, certPEMBlock, err, keyFile, keyPEMBlock, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = ioutil.ReadFile(certFile); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
certPEMBlock = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [new Certificate.ptr(sliceType$10.nil, $ifaceNil, sliceType$8.nil, sliceType$10.nil, ptrType$13.nil), err];
}
_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; }
_tuple$1 = _r$1;
keyPEMBlock = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [new Certificate.ptr(sliceType$10.nil, $ifaceNil, sliceType$8.nil, sliceType$10.nil, ptrType$13.nil), err];
}
_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; }
$s = -1; return _r$2;
/* */ } return; } if ($f === undefined) { $f = { $blk: LoadX509KeyPair }; } $f.$ptr = $ptr; $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;
};
$pkg.LoadX509KeyPair = LoadX509KeyPair;
X509KeyPair = function(certPEMBlock, keyPEMBlock) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
fail = (function(err) {
var $ptr, err;
return [new Certificate.ptr(sliceType$10.nil, $ifaceNil, sliceType$8.nil, sliceType$10.nil, ptrType$13.nil), err];
});
cert = new Certificate.ptr(sliceType$10.nil, $ifaceNil, sliceType$8.nil, sliceType$10.nil, ptrType$13.nil);
skippedBlockTypes = sliceType$1.nil;
/* while (true) { */ case 1:
certDERBlock = ptrType$33.nil;
_r = pem.Decode(certPEMBlock); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
certDERBlock = _tuple[0];
certPEMBlock = _tuple[1];
if (certDERBlock === ptrType$33.nil) {
/* break; */ $s = 2; continue;
}
if (certDERBlock.Type === "CERTIFICATE") {
cert.Certificate = $append(cert.Certificate, certDERBlock.Bytes);
} else {
skippedBlockTypes = $append(skippedBlockTypes, certDERBlock.Type);
}
/* } */ $s = 1; continue; case 2:
/* */ if (cert.Certificate.$length === 0) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (cert.Certificate.$length === 0) { */ case 4:
/* */ if (skippedBlockTypes.$length === 0) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (skippedBlockTypes.$length === 0) { */ case 6:
_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; }
$s = -1; return _r$1;
/* } */ case 7:
/* */ 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; }
/* */ $s = 10; continue;
/* if ((skippedBlockTypes.$length === 1) && strings.HasSuffix((0 >= skippedBlockTypes.$length ? ($throwRuntimeError("index out of range"), undefined) : skippedBlockTypes.$array[skippedBlockTypes.$offset + 0]), "PRIVATE KEY")) { */ case 9:
_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; }
$s = -1; return _r$2;
/* } */ case 10:
_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$9([skippedBlockTypes])); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_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; }
$s = -1; return _r$4;
/* } */ case 5:
skippedBlockTypes = $subslice(skippedBlockTypes, 0, 0);
keyDERBlock = ptrType$33.nil;
/* while (true) { */ case 14:
_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; }
_tuple$1 = _r$5;
keyDERBlock = _tuple$1[0];
keyPEMBlock = _tuple$1[1];
/* */ if (keyDERBlock === ptrType$33.nil) { $s = 17; continue; }
/* */ $s = 18; continue;
/* if (keyDERBlock === ptrType$33.nil) { */ case 17:
/* */ if (skippedBlockTypes.$length === 0) { $s = 19; continue; }
/* */ $s = 20; continue;
/* if (skippedBlockTypes.$length === 0) { */ case 19:
_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; }
$s = -1; return _r$6;
/* } */ case 20:
/* */ if ((skippedBlockTypes.$length === 1) && (0 >= skippedBlockTypes.$length ? ($throwRuntimeError("index out of range"), undefined) : skippedBlockTypes.$array[skippedBlockTypes.$offset + 0]) === "CERTIFICATE") { $s = 22; continue; }
/* */ $s = 23; continue;
/* if ((skippedBlockTypes.$length === 1) && (0 >= skippedBlockTypes.$length ? ($throwRuntimeError("index out of range"), undefined) : skippedBlockTypes.$array[skippedBlockTypes.$offset + 0]) === "CERTIFICATE") { */ case 22:
_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; }
$s = -1; return _r$7;
/* } */ case 23:
_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$9([skippedBlockTypes])); /* */ $s = 25; case 25: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_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; }
$s = -1; return _r$9;
/* } */ case 18:
if (keyDERBlock.Type === "PRIVATE KEY" || strings.HasSuffix(keyDERBlock.Type, " PRIVATE KEY")) {
/* break; */ $s = 15; continue;
}
skippedBlockTypes = $append(skippedBlockTypes, keyDERBlock.Type);
/* } */ $s = 14; continue; case 15:
err = $ifaceNil;
_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; }
_tuple$2 = _r$10;
cert.PrivateKey = _tuple$2[0];
err = _tuple$2[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 28; continue; }
/* */ $s = 29; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 28:
_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; }
$s = -1; return _r$11;
/* } */ case 29:
_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; }
_tuple$3 = _r$12;
x509Cert = _tuple$3[0];
err = _tuple$3[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 32; continue; }
/* */ $s = 33; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 32:
_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; }
$s = -1; return _r$13;
/* } */ case 33:
_ref = x509Cert.PublicKey;
/* */ if ($assertType(_ref, ptrType$19, true)[1]) { $s = 35; continue; }
/* */ if ($assertType(_ref, ptrType$20, true)[1]) { $s = 36; continue; }
/* */ $s = 37; continue;
/* if ($assertType(_ref, ptrType$19, true)[1]) { */ case 35:
pub = _ref.$val;
_tuple$4 = $assertType(cert.PrivateKey, ptrType$34, true);
priv = _tuple$4[0];
ok = _tuple$4[1];
/* */ if (!ok) { $s = 39; continue; }
/* */ $s = 40; continue;
/* if (!ok) { */ case 39:
_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; }
$s = -1; return _r$14;
/* } */ case 40:
/* */ if (!((pub.N.Cmp(priv.PublicKey.N) === 0))) { $s = 42; continue; }
/* */ $s = 43; continue;
/* if (!((pub.N.Cmp(priv.PublicKey.N) === 0))) { */ case 42:
_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; }
$s = -1; return _r$15;
/* } */ case 43:
$s = 38; continue;
/* } else if ($assertType(_ref, ptrType$20, true)[1]) { */ case 36:
pub$1 = _ref.$val;
_tuple$5 = $assertType(cert.PrivateKey, ptrType$35, true);
priv$1 = _tuple$5[0];
ok$1 = _tuple$5[1];
/* */ if (!ok$1) { $s = 45; continue; }
/* */ $s = 46; continue;
/* if (!ok$1) { */ case 45:
_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; }
$s = -1; return _r$16;
/* } */ case 46:
/* */ if (!((pub$1.X.Cmp(priv$1.PublicKey.X) === 0)) || !((pub$1.Y.Cmp(priv$1.PublicKey.Y) === 0))) { $s = 48; continue; }
/* */ $s = 49; continue;
/* if (!((pub$1.X.Cmp(priv$1.PublicKey.X) === 0)) || !((pub$1.Y.Cmp(priv$1.PublicKey.Y) === 0))) { */ case 48:
_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; }
$s = -1; return _r$17;
/* } */ case 49:
$s = 38; continue;
/* } else { */ case 37:
pub$2 = _ref;
_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; }
$s = -1; return _r$18;
/* } */ case 38:
$s = -1; return [cert, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: X509KeyPair }; } $f.$ptr = $ptr; $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;
};
$pkg.X509KeyPair = X509KeyPair;
parsePrivateKey = function(der) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = x509.ParsePKCS1PrivateKey(der); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
key = _tuple[0];
err = _tuple[1];
if ($interfaceIsEqual(err, $ifaceNil)) {
$s = -1; return [key, $ifaceNil];
}
_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; }
_tuple$1 = _r$1;
key$1 = _tuple$1[0];
err$1 = _tuple$1[1];
if ($interfaceIsEqual(err$1, $ifaceNil)) {
_ref = key$1;
if ($assertType(_ref, ptrType$34, true)[1] || $assertType(_ref, ptrType$35, true)[1]) {
key$2 = _ref;
$s = -1; return [key$2, $ifaceNil];
} else {
key$3 = _ref;
$s = -1; return [$ifaceNil, errors.New("tls: found unknown private key type in PKCS#8 wrapping")];
}
}
_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; }
_tuple$2 = _r$2;
key$4 = _tuple$2[0];
err$2 = _tuple$2[1];
if ($interfaceIsEqual(err$2, $ifaceNil)) {
$s = -1; return [key$4, $ifaceNil];
}
$s = -1; return [$ifaceNil, errors.New("tls: failed to parse private key")];
/* */ } return; } if ($f === undefined) { $f = { $blk: parsePrivateKey }; } $f.$ptr = $ptr; $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;
};
alert.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
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$8, sliceType$8, sliceType$8, sliceType$8], [sliceType$8], false)}, {prop: "Open", name: "Open", pkg: "", typ: $funcType([sliceType$8, sliceType$8, sliceType$8, sliceType$8], [sliceType$8, $error], false)}];
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$8, sliceType$8, sliceType$8, sliceType$8], [sliceType$8], false)}, {prop: "Open", name: "Open", pkg: "", typ: $funcType([sliceType$8, sliceType$8, sliceType$8, sliceType$8], [sliceType$8, $error], false)}];
ssl30MAC.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MAC", name: "MAC", pkg: "", typ: $funcType([sliceType$8, sliceType$8, sliceType$8, sliceType$8, sliceType$8], [sliceType$8], false)}];
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$8], [$Int, $error], false)}, {prop: "Sum", name: "Sum", pkg: "", typ: $funcType([sliceType$8], [sliceType$8], false)}];
tls10MAC.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MAC", name: "MAC", pkg: "", typ: $funcType([sliceType$8, sliceType$8, sliceType$8, sliceType$8, sliceType$8], [sliceType$8], false)}];
ptrType$1.methods = [{prop: "Clone", name: "Clone", pkg: "", typ: $funcType([], [ptrType$1], false)}, {prop: "serverInit", name: "serverInit", pkg: "crypto/tls", typ: $funcType([], [], false)}, {prop: "ticketKeys", name: "ticketKeys", pkg: "crypto/tls", typ: $funcType([], [sliceType$4], false)}, {prop: "SetSessionTicketKeys", name: "SetSessionTicketKeys", pkg: "", typ: $funcType([sliceType$14], [], 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$8, sliceType$8], [$error], false)}];
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$8], [$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$8], [$Int, $error], false)}, {prop: "writeRecord", name: "writeRecord", pkg: "crypto/tls", typ: $funcType([recordType, sliceType$8], [$Int, $error], false)}, {prop: "readHandshake", name: "readHandshake", pkg: "crypto/tls", typ: $funcType([], [$emptyInterface, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$8], [$Int, $error], false)}, {prop: "handleRenegotiation", name: "handleRenegotiation", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$8], [$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$8], 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$8, $error], false)}, {prop: "decryptTicket", name: "decryptTicket", pkg: "crypto/tls", typ: $funcType([sliceType$8], [ptrType$30, $Bool], false)}];
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)}];
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$8], [$Int, $error], false)}];
RecordHeaderError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
ptrType$42.methods = [{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$8], [$error], false)}, {prop: "readSessionTicket", name: "readSessionTicket", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "sendFinished", name: "sendFinished", pkg: "crypto/tls", typ: $funcType([sliceType$8], [$error], false)}, {prop: "getCertificate", name: "getCertificate", pkg: "crypto/tls", typ: $funcType([ptrType$23], [ptrType$4, $error], false)}];
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$8], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$8], [$Bool], false)}];
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$8], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$8], [$Bool], false)}];
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$8], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$8], [$Bool], false)}];
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$8], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$8], [$Bool], false)}];
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$8], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$8], [$Bool], false)}];
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$8], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$8], [$Bool], false)}];
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$8], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$8], [$Bool], false)}];
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$8], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$8], [$Bool], false)}];
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$8], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$8], [$Bool], false)}];
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$8], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$8], [$Bool], false)}];
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$8], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$8], [$Bool], false)}];
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$8], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$8], [$Bool], false)}];
ptrType$11.methods = [{prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$8], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$8], [$Bool], false)}];
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$8], [$error], false)}, {prop: "sendSessionTicket", name: "sendSessionTicket", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "sendFinished", name: "sendFinished", pkg: "crypto/tls", typ: $funcType([sliceType$8], [$error], false)}, {prop: "processCertsFromClient", name: "processCertsFromClient", pkg: "crypto/tls", typ: $funcType([sliceType$10], [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)}];
rsaKeyAgreement.methods = [{prop: "generateServerKeyExchange", name: "generateServerKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$1, ptrType$4, ptrType$16, ptrType$14], [ptrType$22, $error], false)}, {prop: "processClientKeyExchange", name: "processClientKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$1, ptrType$4, ptrType$25, $Uint16], [sliceType$8, $error], false)}, {prop: "processServerKeyExchange", name: "processServerKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$1, ptrType$16, ptrType$14, ptrType$13, ptrType$22], [$error], false)}, {prop: "generateClientKeyExchange", name: "generateClientKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$1, ptrType$16, ptrType$13], [sliceType$8, ptrType$25, $error], false)}];
ptrType$44.methods = [{prop: "generateServerKeyExchange", name: "generateServerKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$1, ptrType$4, ptrType$16, ptrType$14], [ptrType$22, $error], false)}, {prop: "processClientKeyExchange", name: "processClientKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$1, ptrType$4, ptrType$25, $Uint16], [sliceType$8, $error], false)}, {prop: "processServerKeyExchange", name: "processServerKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$1, ptrType$16, ptrType$14, ptrType$13, ptrType$22], [$error], false)}, {prop: "generateClientKeyExchange", name: "generateClientKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$1, ptrType$16, ptrType$13], [sliceType$8, ptrType$25, $error], false)}];
finishedHash.methods = [{prop: "Sum", name: "Sum", pkg: "", typ: $funcType([], [sliceType$8], false)}, {prop: "clientSum", name: "clientSum", pkg: "crypto/tls", typ: $funcType([sliceType$8], [sliceType$8], false)}, {prop: "serverSum", name: "serverSum", pkg: "crypto/tls", typ: $funcType([sliceType$8], [sliceType$8], false)}, {prop: "selectClientCertSignatureAlgorithm", name: "selectClientCertSignatureAlgorithm", pkg: "crypto/tls", typ: $funcType([sliceType$6, $Uint8], [signatureAndHash, $error], false)}, {prop: "hashForClientCertificate", name: "hashForClientCertificate", pkg: "crypto/tls", typ: $funcType([signatureAndHash, sliceType$8], [sliceType$8, crypto.Hash, $error], false)}];
ptrType$45.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$8], [$Int, $error], false)}, {prop: "discardHandshakeBuffer", name: "discardHandshakeBuffer", pkg: "crypto/tls", typ: $funcType([], [], false)}];
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$8], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$8], [$Bool], false)}];
ptrType$46.methods = [{prop: "Accept", name: "Accept", pkg: "", typ: $funcType([], [net.Conn, $error], false)}];
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)}];
keyAgreement.init([{prop: "generateClientKeyExchange", name: "generateClientKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$1, ptrType$16, ptrType$13], [sliceType$8, ptrType$25, $error], false)}, {prop: "generateServerKeyExchange", name: "generateServerKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$1, ptrType$4, ptrType$16, ptrType$14], [ptrType$22, $error], false)}, {prop: "processClientKeyExchange", name: "processClientKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$1, ptrType$4, ptrType$25, $Uint16], [sliceType$8, $error], false)}, {prop: "processServerKeyExchange", name: "processServerKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$1, ptrType$16, ptrType$14, ptrType$13, ptrType$22], [$error], false)}]);
cipherSuite.init("crypto/tls", [{prop: "id", name: "id", exported: false, typ: $Uint16, tag: ""}, {prop: "keyLen", name: "keyLen", exported: false, typ: $Int, tag: ""}, {prop: "macLen", name: "macLen", exported: false, typ: $Int, tag: ""}, {prop: "ivLen", name: "ivLen", exported: false, typ: $Int, tag: ""}, {prop: "ka", name: "ka", exported: false, typ: funcType, tag: ""}, {prop: "flags", name: "flags", exported: false, typ: $Int, tag: ""}, {prop: "cipher", name: "cipher", exported: false, typ: funcType$1, tag: ""}, {prop: "mac", name: "mac", exported: false, typ: funcType$2, tag: ""}, {prop: "aead", name: "aead", exported: false, typ: funcType$3, tag: ""}]);
macFunction.init([{prop: "MAC", name: "MAC", pkg: "", typ: $funcType([sliceType$8, sliceType$8, sliceType$8, sliceType$8, sliceType$8], [sliceType$8], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}]);
aead.init([{prop: "NonceSize", name: "NonceSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Open", name: "Open", pkg: "", typ: $funcType([sliceType$8, sliceType$8, sliceType$8, sliceType$8], [sliceType$8, $error], false)}, {prop: "Overhead", name: "Overhead", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Seal", name: "Seal", pkg: "", typ: $funcType([sliceType$8, sliceType$8, sliceType$8, sliceType$8], [sliceType$8], false)}, {prop: "explicitNonceLen", name: "explicitNonceLen", pkg: "crypto/tls", typ: $funcType([], [$Int], false)}]);
fixedNonceAEAD.init("crypto/tls", [{prop: "nonce", name: "nonce", exported: false, typ: arrayType$1, tag: ""}, {prop: "aead", name: "aead", exported: false, typ: cipher.AEAD, tag: ""}]);
xorNonceAEAD.init("crypto/tls", [{prop: "nonceMask", name: "nonceMask", exported: false, typ: arrayType$1, tag: ""}, {prop: "aead", name: "aead", exported: false, typ: cipher.AEAD, tag: ""}]);
ssl30MAC.init("crypto/tls", [{prop: "h", name: "h", exported: false, typ: hash.Hash, tag: ""}, {prop: "key", name: "key", exported: false, typ: sliceType$8, tag: ""}]);
constantTimeHash.init([{prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "ConstantTimeSum", name: "ConstantTimeSum", pkg: "", typ: $funcType([sliceType$8], [sliceType$8], 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$8], [sliceType$8], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$8], [$Int, $error], false)}]);
cthWrapper.init("crypto/tls", [{prop: "h", name: "h", exported: false, typ: constantTimeHash, tag: ""}]);
tls10MAC.init("crypto/tls", [{prop: "h", name: "h", exported: false, typ: hash.Hash, tag: ""}]);
signatureAndHash.init("crypto/tls", [{prop: "hash", name: "hash", exported: false, typ: $Uint8, tag: ""}, {prop: "signature", name: "signature", exported: false, typ: $Uint8, tag: ""}]);
ConnectionState.init("", [{prop: "Version", name: "Version", exported: true, typ: $Uint16, tag: ""}, {prop: "HandshakeComplete", name: "HandshakeComplete", exported: true, typ: $Bool, tag: ""}, {prop: "DidResume", name: "DidResume", exported: true, typ: $Bool, tag: ""}, {prop: "CipherSuite", name: "CipherSuite", exported: true, typ: $Uint16, tag: ""}, {prop: "NegotiatedProtocol", name: "NegotiatedProtocol", exported: true, typ: $String, tag: ""}, {prop: "NegotiatedProtocolIsMutual", name: "NegotiatedProtocolIsMutual", exported: true, typ: $Bool, tag: ""}, {prop: "ServerName", name: "ServerName", exported: true, typ: $String, tag: ""}, {prop: "PeerCertificates", name: "PeerCertificates", exported: true, typ: sliceType$11, tag: ""}, {prop: "VerifiedChains", name: "VerifiedChains", exported: true, typ: sliceType$12, tag: ""}, {prop: "SignedCertificateTimestamps", name: "SignedCertificateTimestamps", exported: true, typ: sliceType$10, tag: ""}, {prop: "OCSPResponse", name: "OCSPResponse", exported: true, typ: sliceType$8, tag: ""}, {prop: "TLSUnique", name: "TLSUnique", exported: true, typ: sliceType$8, tag: ""}]);
ClientSessionState.init("crypto/tls", [{prop: "sessionTicket", name: "sessionTicket", exported: false, typ: sliceType$8, tag: ""}, {prop: "vers", name: "vers", exported: false, typ: $Uint16, tag: ""}, {prop: "cipherSuite", name: "cipherSuite", exported: false, typ: $Uint16, tag: ""}, {prop: "masterSecret", name: "masterSecret", exported: false, typ: sliceType$8, tag: ""}, {prop: "serverCertificates", name: "serverCertificates", exported: false, typ: sliceType$11, tag: ""}, {prop: "verifiedChains", name: "verifiedChains", exported: false, typ: sliceType$12, tag: ""}]);
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)}]);
ClientHelloInfo.init("", [{prop: "CipherSuites", name: "CipherSuites", exported: true, typ: sliceType$2, tag: ""}, {prop: "ServerName", name: "ServerName", exported: true, typ: $String, tag: ""}, {prop: "SupportedCurves", name: "SupportedCurves", exported: true, typ: sliceType$3, tag: ""}, {prop: "SupportedPoints", name: "SupportedPoints", exported: true, typ: sliceType$8, tag: ""}, {prop: "SignatureSchemes", name: "SignatureSchemes", exported: true, typ: sliceType$7, tag: ""}, {prop: "SupportedProtos", name: "SupportedProtos", exported: true, typ: sliceType$1, tag: ""}, {prop: "SupportedVersions", name: "SupportedVersions", exported: true, typ: sliceType$2, tag: ""}, {prop: "Conn", name: "Conn", exported: true, typ: net.Conn, tag: ""}]);
CertificateRequestInfo.init("", [{prop: "AcceptableCAs", name: "AcceptableCAs", exported: true, typ: sliceType$10, tag: ""}, {prop: "SignatureSchemes", name: "SignatureSchemes", exported: true, typ: sliceType$7, tag: ""}]);
Config.init("crypto/tls", [{prop: "Rand", name: "Rand", exported: true, typ: io.Reader, tag: ""}, {prop: "Time", name: "Time", exported: true, typ: funcType$4, tag: ""}, {prop: "Certificates", name: "Certificates", exported: true, typ: sliceType, tag: ""}, {prop: "NameToCertificate", name: "NameToCertificate", exported: true, typ: mapType, tag: ""}, {prop: "GetCertificate", name: "GetCertificate", exported: true, typ: funcType$5, tag: ""}, {prop: "GetClientCertificate", name: "GetClientCertificate", exported: true, typ: funcType$6, tag: ""}, {prop: "GetConfigForClient", name: "GetConfigForClient", exported: true, typ: funcType$7, tag: ""}, {prop: "VerifyPeerCertificate", name: "VerifyPeerCertificate", exported: true, typ: funcType$8, tag: ""}, {prop: "RootCAs", name: "RootCAs", exported: true, typ: ptrType, tag: ""}, {prop: "NextProtos", name: "NextProtos", exported: true, typ: sliceType$1, tag: ""}, {prop: "ServerName", name: "ServerName", exported: true, typ: $String, tag: ""}, {prop: "ClientAuth", name: "ClientAuth", exported: true, typ: ClientAuthType, tag: ""}, {prop: "ClientCAs", name: "ClientCAs", exported: true, typ: ptrType, tag: ""}, {prop: "InsecureSkipVerify", name: "InsecureSkipVerify", exported: true, typ: $Bool, tag: ""}, {prop: "CipherSuites", name: "CipherSuites", exported: true, typ: sliceType$2, tag: ""}, {prop: "PreferServerCipherSuites", name: "PreferServerCipherSuites", exported: true, typ: $Bool, tag: ""}, {prop: "SessionTicketsDisabled", name: "SessionTicketsDisabled", exported: true, typ: $Bool, tag: ""}, {prop: "SessionTicketKey", name: "SessionTicketKey", exported: true, typ: arrayType, tag: ""}, {prop: "ClientSessionCache", name: "ClientSessionCache", exported: true, typ: ClientSessionCache, tag: ""}, {prop: "MinVersion", name: "MinVersion", exported: true, typ: $Uint16, tag: ""}, {prop: "MaxVersion", name: "MaxVersion", exported: true, typ: $Uint16, tag: ""}, {prop: "CurvePreferences", name: "CurvePreferences", exported: true, typ: sliceType$3, tag: ""}, {prop: "DynamicRecordSizingDisabled", name: "DynamicRecordSizingDisabled", exported: true, typ: $Bool, tag: ""}, {prop: "Renegotiation", name: "Renegotiation", exported: true, typ: RenegotiationSupport, tag: ""}, {prop: "KeyLogWriter", name: "KeyLogWriter", exported: true, typ: io.Writer, tag: ""}, {prop: "serverInitOnce", name: "serverInitOnce", exported: false, typ: sync.Once, tag: ""}, {prop: "mutex", name: "mutex", exported: false, typ: sync.RWMutex, tag: ""}, {prop: "sessionTicketKeys", name: "sessionTicketKeys", exported: false, typ: sliceType$4, tag: ""}, {prop: "originalConfig", name: "originalConfig", exported: false, typ: ptrType$1, tag: ""}]);
ticketKey.init("crypto/tls", [{prop: "keyName", name: "keyName", exported: false, typ: arrayType$2, tag: ""}, {prop: "aesKey", name: "aesKey", exported: false, typ: arrayType$2, tag: ""}, {prop: "hmacKey", name: "hmacKey", exported: false, typ: arrayType$2, tag: ""}]);
Certificate.init("", [{prop: "Certificate", name: "Certificate", exported: true, typ: sliceType$10, tag: ""}, {prop: "PrivateKey", name: "PrivateKey", exported: true, typ: crypto.PrivateKey, tag: ""}, {prop: "OCSPStaple", name: "OCSPStaple", exported: true, typ: sliceType$8, tag: ""}, {prop: "SignedCertificateTimestamps", name: "SignedCertificateTimestamps", exported: true, typ: sliceType$10, tag: ""}, {prop: "Leaf", name: "Leaf", exported: true, typ: ptrType$13, tag: ""}]);
ecdsaSignature.init("", [{prop: "R", name: "R", exported: true, typ: ptrType$3, tag: ""}, {prop: "S", name: "S", exported: true, typ: ptrType$3, tag: ""}]);
Conn.init("crypto/tls", [{prop: "conn", name: "conn", exported: false, typ: net.Conn, tag: ""}, {prop: "isClient", name: "isClient", exported: false, typ: $Bool, tag: ""}, {prop: "handshakeMutex", name: "handshakeMutex", exported: false, typ: sync.Mutex, tag: ""}, {prop: "handshakeCond", name: "handshakeCond", exported: false, typ: ptrType$12, tag: ""}, {prop: "handshakeErr", name: "handshakeErr", exported: false, typ: $error, tag: ""}, {prop: "vers", name: "vers", exported: false, typ: $Uint16, tag: ""}, {prop: "haveVers", name: "haveVers", exported: false, typ: $Bool, tag: ""}, {prop: "config", name: "config", exported: false, typ: ptrType$1, tag: ""}, {prop: "handshakeComplete", name: "handshakeComplete", exported: false, typ: $Bool, tag: ""}, {prop: "handshakes", name: "handshakes", exported: false, typ: $Int, tag: ""}, {prop: "didResume", name: "didResume", exported: false, typ: $Bool, tag: ""}, {prop: "cipherSuite", name: "cipherSuite", exported: false, typ: $Uint16, tag: ""}, {prop: "ocspResponse", name: "ocspResponse", exported: false, typ: sliceType$8, tag: ""}, {prop: "scts", name: "scts", exported: false, typ: sliceType$10, tag: ""}, {prop: "peerCertificates", name: "peerCertificates", exported: false, typ: sliceType$11, tag: ""}, {prop: "verifiedChains", name: "verifiedChains", exported: false, typ: sliceType$12, tag: ""}, {prop: "serverName", name: "serverName", exported: false, typ: $String, tag: ""}, {prop: "secureRenegotiation", name: "secureRenegotiation", exported: false, typ: $Bool, tag: ""}, {prop: "clientFinishedIsFirst", name: "clientFinishedIsFirst", exported: false, typ: $Bool, tag: ""}, {prop: "closeNotifyErr", name: "closeNotifyErr", exported: false, typ: $error, tag: ""}, {prop: "closeNotifySent", name: "closeNotifySent", exported: false, typ: $Bool, tag: ""}, {prop: "clientFinished", name: "clientFinished", exported: false, typ: arrayType$1, tag: ""}, {prop: "serverFinished", name: "serverFinished", exported: false, typ: arrayType$1, tag: ""}, {prop: "clientProtocol", name: "clientProtocol", exported: false, typ: $String, tag: ""}, {prop: "clientProtocolFallback", name: "clientProtocolFallback", exported: false, typ: $Bool, tag: ""}, {prop: "in$25", name: "in", exported: false, typ: halfConn, tag: ""}, {prop: "out", name: "out", exported: false, typ: halfConn, tag: ""}, {prop: "rawInput", name: "rawInput", exported: false, typ: ptrType$9, tag: ""}, {prop: "input", name: "input", exported: false, typ: ptrType$9, tag: ""}, {prop: "hand", name: "hand", exported: false, typ: bytes.Buffer, tag: ""}, {prop: "buffering", name: "buffering", exported: false, typ: $Bool, tag: ""}, {prop: "sendBuf", name: "sendBuf", exported: false, typ: sliceType$8, tag: ""}, {prop: "bytesSent", name: "bytesSent", exported: false, typ: $Int64, tag: ""}, {prop: "packetsSent", name: "packetsSent", exported: false, typ: $Int64, tag: ""}, {prop: "activeCall", name: "activeCall", exported: false, typ: $Int32, tag: ""}, {prop: "tmp", name: "tmp", exported: false, typ: arrayType$2, tag: ""}]);
halfConn.init("crypto/tls", [{prop: "Mutex", name: "", exported: true, typ: sync.Mutex, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}, {prop: "version", name: "version", exported: false, typ: $Uint16, tag: ""}, {prop: "cipher", name: "cipher", exported: false, typ: $emptyInterface, tag: ""}, {prop: "mac", name: "mac", exported: false, typ: macFunction, tag: ""}, {prop: "seq", name: "seq", exported: false, typ: arrayType$7, tag: ""}, {prop: "bfree", name: "bfree", exported: false, typ: ptrType$9, tag: ""}, {prop: "additionalData", name: "additionalData", exported: false, typ: arrayType$8, tag: ""}, {prop: "nextCipher", name: "nextCipher", exported: false, typ: $emptyInterface, tag: ""}, {prop: "nextMac", name: "nextMac", exported: false, typ: macFunction, tag: ""}, {prop: "inDigestBuf", name: "inDigestBuf", exported: false, typ: sliceType$8, tag: ""}, {prop: "outDigestBuf", name: "outDigestBuf", exported: false, typ: sliceType$8, tag: ""}]);
cbcMode.init([{prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "CryptBlocks", name: "CryptBlocks", pkg: "", typ: $funcType([sliceType$8, sliceType$8], [], false)}, {prop: "SetIV", name: "SetIV", pkg: "", typ: $funcType([sliceType$8], [], false)}]);
block.init("crypto/tls", [{prop: "data", name: "data", exported: false, typ: sliceType$8, tag: ""}, {prop: "off", name: "off", exported: false, typ: $Int, tag: ""}, {prop: "link", name: "link", exported: false, typ: ptrType$9, tag: ""}]);
RecordHeaderError.init("", [{prop: "Msg", name: "Msg", exported: true, typ: $String, tag: ""}, {prop: "RecordHeader", name: "RecordHeader", exported: true, typ: arrayType$4, tag: ""}]);
clientHandshakeState.init("crypto/tls", [{prop: "c", name: "c", exported: false, typ: ptrType$15, tag: ""}, {prop: "serverHello", name: "serverHello", exported: false, typ: ptrType$14, tag: ""}, {prop: "hello", name: "hello", exported: false, typ: ptrType$16, tag: ""}, {prop: "suite", name: "suite", exported: false, typ: ptrType$2, tag: ""}, {prop: "finishedHash", name: "finishedHash", exported: false, typ: finishedHash, tag: ""}, {prop: "masterSecret", name: "masterSecret", exported: false, typ: sliceType$8, tag: ""}, {prop: "session", name: "session", exported: false, typ: ptrType$8, tag: ""}]);
clientHelloMsg.init("crypto/tls", [{prop: "raw", name: "raw", exported: false, typ: sliceType$8, tag: ""}, {prop: "vers", name: "vers", exported: false, typ: $Uint16, tag: ""}, {prop: "random", name: "random", exported: false, typ: sliceType$8, tag: ""}, {prop: "sessionId", name: "sessionId", exported: false, typ: sliceType$8, tag: ""}, {prop: "cipherSuites", name: "cipherSuites", exported: false, typ: sliceType$2, tag: ""}, {prop: "compressionMethods", name: "compressionMethods", exported: false, typ: sliceType$8, tag: ""}, {prop: "nextProtoNeg", name: "nextProtoNeg", exported: false, typ: $Bool, tag: ""}, {prop: "serverName", name: "serverName", exported: false, typ: $String, tag: ""}, {prop: "ocspStapling", name: "ocspStapling", exported: false, typ: $Bool, tag: ""}, {prop: "scts", name: "scts", exported: false, typ: $Bool, tag: ""}, {prop: "supportedCurves", name: "supportedCurves", exported: false, typ: sliceType$3, tag: ""}, {prop: "supportedPoints", name: "supportedPoints", exported: false, typ: sliceType$8, tag: ""}, {prop: "ticketSupported", name: "ticketSupported", exported: false, typ: $Bool, tag: ""}, {prop: "sessionTicket", name: "sessionTicket", exported: false, typ: sliceType$8, tag: ""}, {prop: "signatureAndHashes", name: "signatureAndHashes", exported: false, typ: sliceType$6, tag: ""}, {prop: "secureRenegotiation", name: "secureRenegotiation", exported: false, typ: sliceType$8, tag: ""}, {prop: "secureRenegotiationSupported", name: "secureRenegotiationSupported", exported: false, typ: $Bool, tag: ""}, {prop: "alpnProtocols", name: "alpnProtocols", exported: false, typ: sliceType$1, tag: ""}]);
serverHelloMsg.init("crypto/tls", [{prop: "raw", name: "raw", exported: false, typ: sliceType$8, tag: ""}, {prop: "vers", name: "vers", exported: false, typ: $Uint16, tag: ""}, {prop: "random", name: "random", exported: false, typ: sliceType$8, tag: ""}, {prop: "sessionId", name: "sessionId", exported: false, typ: sliceType$8, tag: ""}, {prop: "cipherSuite", name: "cipherSuite", exported: false, typ: $Uint16, tag: ""}, {prop: "compressionMethod", name: "compressionMethod", exported: false, typ: $Uint8, tag: ""}, {prop: "nextProtoNeg", name: "nextProtoNeg", exported: false, typ: $Bool, tag: ""}, {prop: "nextProtos", name: "nextProtos", exported: false, typ: sliceType$1, tag: ""}, {prop: "ocspStapling", name: "ocspStapling", exported: false, typ: $Bool, tag: ""}, {prop: "scts", name: "scts", exported: false, typ: sliceType$10, tag: ""}, {prop: "ticketSupported", name: "ticketSupported", exported: false, typ: $Bool, tag: ""}, {prop: "secureRenegotiation", name: "secureRenegotiation", exported: false, typ: sliceType$8, tag: ""}, {prop: "secureRenegotiationSupported", name: "secureRenegotiationSupported", exported: false, typ: $Bool, tag: ""}, {prop: "alpnProtocol", name: "alpnProtocol", exported: false, typ: $String, tag: ""}]);
certificateMsg.init("crypto/tls", [{prop: "raw", name: "raw", exported: false, typ: sliceType$8, tag: ""}, {prop: "certificates", name: "certificates", exported: false, typ: sliceType$10, tag: ""}]);
serverKeyExchangeMsg.init("crypto/tls", [{prop: "raw", name: "raw", exported: false, typ: sliceType$8, tag: ""}, {prop: "key", name: "key", exported: false, typ: sliceType$8, tag: ""}]);
certificateStatusMsg.init("crypto/tls", [{prop: "raw", name: "raw", exported: false, typ: sliceType$8, tag: ""}, {prop: "statusType", name: "statusType", exported: false, typ: $Uint8, tag: ""}, {prop: "response", name: "response", exported: false, typ: sliceType$8, tag: ""}]);
serverHelloDoneMsg.init("", []);
clientKeyExchangeMsg.init("crypto/tls", [{prop: "raw", name: "raw", exported: false, typ: sliceType$8, tag: ""}, {prop: "ciphertext", name: "ciphertext", exported: false, typ: sliceType$8, tag: ""}]);
finishedMsg.init("crypto/tls", [{prop: "raw", name: "raw", exported: false, typ: sliceType$8, tag: ""}, {prop: "verifyData", name: "verifyData", exported: false, typ: sliceType$8, tag: ""}]);
nextProtoMsg.init("crypto/tls", [{prop: "raw", name: "raw", exported: false, typ: sliceType$8, tag: ""}, {prop: "proto", name: "proto", exported: false, typ: $String, tag: ""}]);
certificateRequestMsg.init("crypto/tls", [{prop: "raw", name: "raw", exported: false, typ: sliceType$8, tag: ""}, {prop: "hasSignatureAndHash", name: "hasSignatureAndHash", exported: false, typ: $Bool, tag: ""}, {prop: "certificateTypes", name: "certificateTypes", exported: false, typ: sliceType$8, tag: ""}, {prop: "signatureAndHashes", name: "signatureAndHashes", exported: false, typ: sliceType$6, tag: ""}, {prop: "certificateAuthorities", name: "certificateAuthorities", exported: false, typ: sliceType$10, tag: ""}]);
certificateVerifyMsg.init("crypto/tls", [{prop: "raw", name: "raw", exported: false, typ: sliceType$8, tag: ""}, {prop: "hasSignatureAndHash", name: "hasSignatureAndHash", exported: false, typ: $Bool, tag: ""}, {prop: "signatureAndHash", name: "signatureAndHash", exported: false, typ: signatureAndHash, tag: ""}, {prop: "signature", name: "signature", exported: false, typ: sliceType$8, tag: ""}]);
newSessionTicketMsg.init("crypto/tls", [{prop: "raw", name: "raw", exported: false, typ: sliceType$8, tag: ""}, {prop: "ticket", name: "ticket", exported: false, typ: sliceType$8, tag: ""}]);
helloRequestMsg.init("", []);
serverHandshakeState.init("crypto/tls", [{prop: "c", name: "c", exported: false, typ: ptrType$15, tag: ""}, {prop: "clientHello", name: "clientHello", exported: false, typ: ptrType$16, tag: ""}, {prop: "hello", name: "hello", exported: false, typ: ptrType$14, tag: ""}, {prop: "suite", name: "suite", exported: false, typ: ptrType$2, tag: ""}, {prop: "ellipticOk", name: "ellipticOk", exported: false, typ: $Bool, tag: ""}, {prop: "ecdsaOk", name: "ecdsaOk", exported: false, typ: $Bool, tag: ""}, {prop: "rsaDecryptOk", name: "rsaDecryptOk", exported: false, typ: $Bool, tag: ""}, {prop: "rsaSignOk", name: "rsaSignOk", exported: false, typ: $Bool, tag: ""}, {prop: "sessionState", name: "sessionState", exported: false, typ: ptrType$30, tag: ""}, {prop: "finishedHash", name: "finishedHash", exported: false, typ: finishedHash, tag: ""}, {prop: "masterSecret", name: "masterSecret", exported: false, typ: sliceType$8, tag: ""}, {prop: "certsFromClient", name: "certsFromClient", exported: false, typ: sliceType$10, tag: ""}, {prop: "cert", name: "cert", exported: false, typ: ptrType$4, tag: ""}, {prop: "cachedClientHelloInfo", name: "cachedClientHelloInfo", exported: false, typ: ptrType$31, tag: ""}]);
rsaKeyAgreement.init("", []);
ecdheKeyAgreement.init("crypto/tls", [{prop: "version", name: "version", exported: false, typ: $Uint16, tag: ""}, {prop: "sigType", name: "sigType", exported: false, typ: $Uint8, tag: ""}, {prop: "privateKey", name: "privateKey", exported: false, typ: sliceType$8, tag: ""}, {prop: "curveid", name: "curveid", exported: false, typ: CurveID, tag: ""}, {prop: "publicKey", name: "publicKey", exported: false, typ: sliceType$8, tag: ""}, {prop: "x", name: "x", exported: false, typ: ptrType$3, tag: ""}, {prop: "y", name: "y", exported: false, typ: ptrType$3, tag: ""}]);
finishedHash.init("crypto/tls", [{prop: "client", name: "client", exported: false, typ: hash.Hash, tag: ""}, {prop: "server", name: "server", exported: false, typ: hash.Hash, tag: ""}, {prop: "clientMD5", name: "clientMD5", exported: false, typ: hash.Hash, tag: ""}, {prop: "serverMD5", name: "serverMD5", exported: false, typ: hash.Hash, tag: ""}, {prop: "buffer", name: "buffer", exported: false, typ: sliceType$8, tag: ""}, {prop: "version", name: "version", exported: false, typ: $Uint16, tag: ""}, {prop: "prf", name: "prf", exported: false, typ: funcType$9, tag: ""}]);
sessionState.init("crypto/tls", [{prop: "vers", name: "vers", exported: false, typ: $Uint16, tag: ""}, {prop: "cipherSuite", name: "cipherSuite", exported: false, typ: $Uint16, tag: ""}, {prop: "masterSecret", name: "masterSecret", exported: false, typ: sliceType$8, tag: ""}, {prop: "certificates", name: "certificates", exported: false, typ: sliceType$10, tag: ""}, {prop: "usedOldKey", name: "usedOldKey", exported: false, typ: $Bool, tag: ""}]);
listener.init("crypto/tls", [{prop: "Listener", name: "", exported: true, typ: net.Listener, tag: ""}, {prop: "config", name: "config", exported: false, typ: ptrType$1, tag: ""}]);
timeoutError.init("", []);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = list.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = crypto.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = aes.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = cipher.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = des.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = ecdsa.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = elliptic.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = hmac.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = cipherhw.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = md5.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = rand.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = rc4.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = rsa.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sha1.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sha256.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sha512.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = subtle.$init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = x509.$init(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = asn1.$init(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = pem.$init(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = errors.$init(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = fmt.$init(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = hash.$init(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = ioutil.$init(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = big.$init(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = net.$init(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strconv.$init(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strings.$init(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sync.$init(); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = atomic.$init(); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = time.$init(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = chacha20poly1305.$init(); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = curve25519.$init(); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
writerMutex = new sync.Mutex.ptr(0, 0);
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, ptrType$1.nil);
once = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
varDefaultCipherSuites = sliceType$2.nil;
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" }]);
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]);
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]);
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)]);
supportedSignatureAlgorithms = new sliceType$6([new signatureAndHash.ptr(4, 1), new signatureAndHash.ptr(4, 3), new signatureAndHash.ptr(5, 1), new signatureAndHash.ptr(5, 3), new signatureAndHash.ptr(2, 1), new signatureAndHash.ptr(2, 3)]);
defaultCurvePreferences = new sliceType$3([29, 23, 24, 25]);
errClosed = errors.New("tls: use of closed connection");
errShutdown = errors.New("tls: protocol is shutdown");
errEarlyCloseWrite = errors.New("tls: CloseWrite called before handshake complete");
tls11SignatureSchemes = new sliceType$7([1027, 1283, 1539, 1025, 1281, 1537, 513]);
suppVersArray = $toNativeArray($kindUint16, [771, 770, 769, 768]);
errClientKeyExchange = errors.New("tls: invalid ClientKeyExchange message");
errServerKeyExchange = errors.New("tls: invalid ServerKeyExchange message");
masterSecretLabel = (new sliceType$8($stringToBytes("master secret")));
keyExpansionLabel = (new sliceType$8($stringToBytes("key expansion")));
clientFinishedLabel = (new sliceType$8($stringToBytes("client finished")));
serverFinishedLabel = (new sliceType$8($stringToBytes("server finished")));
ssl3ClientFinishedMagic = $toNativeArray($kindUint8, [67, 76, 78, 84]);
ssl3ServerFinishedMagic = $toNativeArray($kindUint8, [83, 82, 86, 82]);
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["log"] = (function() {
var $pkg = {}, $init, fmt, nosync, io, os, runtime, time, Logger, sliceType, arrayType, ptrType, sliceType$1, ptrType$1, std, New, itoa, Printf, Fatalf;
fmt = $packages["fmt"];
nosync = $packages["github.com/gopherjs/gopherjs/nosync"];
io = $packages["io"];
os = $packages["os"];
runtime = $packages["runtime"];
time = $packages["time"];
Logger = $pkg.Logger = $newType(0, $kindStruct, "log.Logger", true, "log", true, function(mu_, prefix_, flag_, out_, buf_) {
this.$val = this;
if (arguments.length === 0) {
this.mu = new nosync.Mutex.ptr(false);
this.prefix = "";
this.flag = 0;
this.out = $ifaceNil;
this.buf = sliceType.nil;
return;
}
this.mu = mu_;
this.prefix = prefix_;
this.flag = flag_;
this.out = out_;
this.buf = buf_;
});
sliceType = $sliceType($Uint8);
arrayType = $arrayType($Uint8, 20);
ptrType = $ptrType(sliceType);
sliceType$1 = $sliceType($emptyInterface);
ptrType$1 = $ptrType(Logger);
New = function(out, prefix, flag) {
var $ptr, flag, out, prefix;
return new Logger.ptr(new nosync.Mutex.ptr(false), prefix, flag, out, sliceType.nil);
};
$pkg.New = New;
Logger.ptr.prototype.SetOutput = function(w) {
var $ptr, l, w, $deferred;
/* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
l = this;
l.mu.Lock();
$deferred.push([$methodVal(l.mu, "Unlock"), []]);
l.out = w;
/* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); }
};
Logger.prototype.SetOutput = function(w) { return this.$val.SetOutput(w); };
itoa = function(buf, i, wid) {
var $ptr, _q, b, bp, buf, i, q, wid;
b = arrayType.zero();
bp = 19;
while (true) {
if (!(i >= 10 || wid > 1)) { break; }
wid = wid - (1) >> 0;
q = (_q = i / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
((bp < 0 || bp >= b.length) ? ($throwRuntimeError("index out of range"), undefined) : b[bp] = ((((48 + i >> 0) - ($imul(q, 10)) >> 0) << 24 >>> 24)));
bp = bp - (1) >> 0;
i = q;
}
((bp < 0 || bp >= b.length) ? ($throwRuntimeError("index out of range"), undefined) : b[bp] = (((48 + i >> 0) << 24 >>> 24)));
buf.$set($appendSlice(buf.$get(), $subslice(new sliceType(b), bp)));
};
Logger.ptr.prototype.formatHeader = function(buf, t, file, line) {
var $ptr, _q, _r, _r$1, _tuple, _tuple$1, buf, day, file, hour, i, l, line, min, month, sec, short$1, t, year, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
l = this;
buf.$set($appendSlice(buf.$get(), l.prefix));
if (!(((l.flag & 32) === 0))) {
time.Time.copy(t, $clone(t, time.Time).UTC());
}
/* */ if (!(((l.flag & 7) === 0))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(((l.flag & 7) === 0))) { */ case 1:
/* */ if (!(((l.flag & 1) === 0))) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!(((l.flag & 1) === 0))) { */ case 3:
_r = $clone(t, time.Time).Date(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
year = _tuple[0];
month = _tuple[1];
day = _tuple[2];
itoa(buf, year, 4);
buf.$set($append(buf.$get(), 47));
itoa(buf, ((month >> 0)), 2);
buf.$set($append(buf.$get(), 47));
itoa(buf, day, 2);
buf.$set($append(buf.$get(), 32));
/* } */ case 4:
/* */ if (!(((l.flag & 6) === 0))) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!(((l.flag & 6) === 0))) { */ case 6:
_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; }
_tuple$1 = _r$1;
hour = _tuple$1[0];
min = _tuple$1[1];
sec = _tuple$1[2];
itoa(buf, hour, 2);
buf.$set($append(buf.$get(), 58));
itoa(buf, min, 2);
buf.$set($append(buf.$get(), 58));
itoa(buf, sec, 2);
if (!(((l.flag & 4) === 0))) {
buf.$set($append(buf.$get(), 46));
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);
}
buf.$set($append(buf.$get(), 32));
/* } */ case 7:
/* } */ case 2:
if (!(((l.flag & 24) === 0))) {
if (!(((l.flag & 16) === 0))) {
short$1 = file;
i = file.length - 1 >> 0;
while (true) {
if (!(i > 0)) { break; }
if (file.charCodeAt(i) === 47) {
short$1 = $substring(file, (i + 1 >> 0));
break;
}
i = i - (1) >> 0;
}
file = short$1;
}
buf.$set($appendSlice(buf.$get(), file));
buf.$set($append(buf.$get(), 58));
itoa(buf, line, -1);
buf.$set($appendSlice(buf.$get(), ": "));
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.formatHeader }; } $f.$ptr = $ptr; $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;
};
Logger.prototype.formatHeader = function(buf, t, file, line) { return this.$val.formatHeader(buf, t, file, line); };
Logger.ptr.prototype.Output = function(calldepth, s) {
var $ptr, _r, _tuple, _tuple$1, calldepth, err, file, l, line, now, ok, s, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
l = this;
now = $clone(time.Now(), time.Time);
file = "";
line = 0;
l.mu.Lock();
$deferred.push([$methodVal(l.mu, "Unlock"), []]);
if (!(((l.flag & 24) === 0))) {
l.mu.Unlock();
ok = false;
_tuple = runtime.Caller(calldepth);
file = _tuple[1];
line = _tuple[2];
ok = _tuple[3];
if (!ok) {
file = "???";
line = 0;
}
l.mu.Lock();
}
l.buf = $subslice(l.buf, 0, 0);
$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; }
l.buf = $appendSlice(l.buf, s);
if ((s.length === 0) || !((s.charCodeAt((s.length - 1 >> 0)) === 10))) {
l.buf = $append(l.buf, 10);
}
_r = l.out.Write(l.buf); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
err = _tuple$1[1];
$s = -1; return err;
/* */ } 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.$ptr = $ptr; $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; } }
};
Logger.prototype.Output = function(calldepth, s) { return this.$val.Output(calldepth, s); };
Logger.ptr.prototype.Printf = function(format, v) {
var $ptr, _arg, _r, _r$1, format, l, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
l = this;
_r = fmt.Sprintf(format, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_arg = _r;
_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; }
_r$1;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Printf }; } $f.$ptr = $ptr; $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;
};
Logger.prototype.Printf = function(format, v) { return this.$val.Printf(format, v); };
Logger.ptr.prototype.Print = function(v) {
var $ptr, _arg, _r, _r$1, l, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
l = this;
_r = fmt.Sprint(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_arg = _r;
_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; }
_r$1;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Print }; } $f.$ptr = $ptr; $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;
};
Logger.prototype.Print = function(v) { return this.$val.Print(v); };
Logger.ptr.prototype.Println = function(v) {
var $ptr, _arg, _r, _r$1, l, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
l = this;
_r = fmt.Sprintln(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_arg = _r;
_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; }
_r$1;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Println }; } $f.$ptr = $ptr; $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;
};
Logger.prototype.Println = function(v) { return this.$val.Println(v); };
Logger.ptr.prototype.Fatal = function(v) {
var $ptr, _arg, _r, _r$1, l, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
l = this;
_r = fmt.Sprint(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_arg = _r;
_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; }
_r$1;
os.Exit(1);
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Fatal }; } $f.$ptr = $ptr; $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;
};
Logger.prototype.Fatal = function(v) { return this.$val.Fatal(v); };
Logger.ptr.prototype.Fatalf = function(format, v) {
var $ptr, _arg, _r, _r$1, format, l, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
l = this;
_r = fmt.Sprintf(format, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_arg = _r;
_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; }
_r$1;
os.Exit(1);
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Fatalf }; } $f.$ptr = $ptr; $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;
};
Logger.prototype.Fatalf = function(format, v) { return this.$val.Fatalf(format, v); };
Logger.ptr.prototype.Fatalln = function(v) {
var $ptr, _arg, _r, _r$1, l, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
l = this;
_r = fmt.Sprintln(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_arg = _r;
_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; }
_r$1;
os.Exit(1);
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Fatalln }; } $f.$ptr = $ptr; $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;
};
Logger.prototype.Fatalln = function(v) { return this.$val.Fatalln(v); };
Logger.ptr.prototype.Panic = function(v) {
var $ptr, _r, _r$1, l, s, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
l = this;
_r = fmt.Sprint(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
s = _r;
_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; }
_r$1;
$panic(new $String(s));
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Panic }; } $f.$ptr = $ptr; $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;
};
Logger.prototype.Panic = function(v) { return this.$val.Panic(v); };
Logger.ptr.prototype.Panicf = function(format, v) {
var $ptr, _r, _r$1, format, l, s, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
l = this;
_r = fmt.Sprintf(format, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
s = _r;
_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; }
_r$1;
$panic(new $String(s));
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Panicf }; } $f.$ptr = $ptr; $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;
};
Logger.prototype.Panicf = function(format, v) { return this.$val.Panicf(format, v); };
Logger.ptr.prototype.Panicln = function(v) {
var $ptr, _r, _r$1, l, s, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
l = this;
_r = fmt.Sprintln(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
s = _r;
_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; }
_r$1;
$panic(new $String(s));
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Panicln }; } $f.$ptr = $ptr; $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;
};
Logger.prototype.Panicln = function(v) { return this.$val.Panicln(v); };
Logger.ptr.prototype.Flags = function() {
var $ptr, l, $deferred;
/* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
l = this;
l.mu.Lock();
$deferred.push([$methodVal(l.mu, "Unlock"), []]);
return l.flag;
/* */ } catch(err) { $err = err; return 0; } finally { $callDeferred($deferred, $err); }
};
Logger.prototype.Flags = function() { return this.$val.Flags(); };
Logger.ptr.prototype.SetFlags = function(flag) {
var $ptr, flag, l, $deferred;
/* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
l = this;
l.mu.Lock();
$deferred.push([$methodVal(l.mu, "Unlock"), []]);
l.flag = flag;
/* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); }
};
Logger.prototype.SetFlags = function(flag) { return this.$val.SetFlags(flag); };
Logger.ptr.prototype.Prefix = function() {
var $ptr, l, $deferred;
/* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
l = this;
l.mu.Lock();
$deferred.push([$methodVal(l.mu, "Unlock"), []]);
return l.prefix;
/* */ } catch(err) { $err = err; return ""; } finally { $callDeferred($deferred, $err); }
};
Logger.prototype.Prefix = function() { return this.$val.Prefix(); };
Logger.ptr.prototype.SetPrefix = function(prefix) {
var $ptr, l, prefix, $deferred;
/* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
l = this;
l.mu.Lock();
$deferred.push([$methodVal(l.mu, "Unlock"), []]);
l.prefix = prefix;
/* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); }
};
Logger.prototype.SetPrefix = function(prefix) { return this.$val.SetPrefix(prefix); };
Printf = function(format, v) {
var $ptr, _arg, _r, _r$1, format, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = fmt.Sprintf(format, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_arg = _r;
_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; }
_r$1;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Printf }; } $f.$ptr = $ptr; $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;
};
$pkg.Printf = Printf;
Fatalf = function(format, v) {
var $ptr, _arg, _r, _r$1, format, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = fmt.Sprintf(format, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_arg = _r;
_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; }
_r$1;
os.Exit(1);
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Fatalf }; } $f.$ptr = $ptr; $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;
};
$pkg.Fatalf = Fatalf;
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)}];
Logger.init("log", [{prop: "mu", name: "mu", exported: false, typ: nosync.Mutex, tag: ""}, {prop: "prefix", name: "prefix", exported: false, typ: $String, tag: ""}, {prop: "flag", name: "flag", exported: false, typ: $Int, tag: ""}, {prop: "out", name: "out", exported: false, typ: io.Writer, tag: ""}, {prop: "buf", name: "buf", exported: false, typ: sliceType, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = nosync.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = os.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = runtime.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = time.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
std = New(os.Stderr, "", 3);
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["mime"] = (function() {
var $pkg = {}, $init, bytes, base64, errors, fmt, registry, io, sort, strings, sync, unicode, utf8, sliceType, sliceType$1, arrayType, sliceType$2, errInvalidWord, maxBase64Len, bufPool, mimeLock, mimeTypes, mimeTypesLower, extensions, osInitMime, isTSpecial, isTokenChar, isToken, FormatMediaType, checkMediaTypeDisposition, ParseMediaType, decode2231Enc, isNotTokenChar, consumeToken, consumeValue, consumeMediaParam, percentHexUnescape, ishex, unhex, setExtensionType, init, initMimeWindows;
bytes = $packages["bytes"];
base64 = $packages["encoding/base64"];
errors = $packages["errors"];
fmt = $packages["fmt"];
registry = $packages["internal/syscall/windows/registry"];
io = $packages["io"];
sort = $packages["sort"];
strings = $packages["strings"];
sync = $packages["sync"];
unicode = $packages["unicode"];
utf8 = $packages["unicode/utf8"];
sliceType = $sliceType($emptyInterface);
sliceType$1 = $sliceType($Uint8);
arrayType = $arrayType($Uint8, 64);
sliceType$2 = $sliceType($String);
isTSpecial = function(r) {
var $ptr, r;
return strings.ContainsRune("()<>@,;:\\\"/[]?=", r);
};
isTokenChar = function(r) {
var $ptr, r;
return r > 32 && r < 127 && !isTSpecial(r);
};
isToken = function(s) {
var $ptr, _r, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
if (s === "") {
$s = -1; return false;
}
_r = strings.IndexFunc(s, isNotTokenChar); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r < 0;
/* */ } return; } if ($f === undefined) { $f = { $blk: isToken }; } $f.$ptr = $ptr; $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
FormatMediaType = function(t, param) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
b = new bytes.Buffer.ptr(sliceType$1.nil, 0, arrayType.zero(), 0);
slash = strings.Index(t, "/");
/* */ if (slash === -1) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (slash === -1) { */ case 1:
_r = isToken(t); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (!_r) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!_r) { */ case 4:
$s = -1; return "";
/* } */ case 5:
_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; }
_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; }
_r$2;
$s = 3; continue;
/* } else { */ case 2:
_tmp = $substring(t, 0, slash);
_tmp$1 = $substring(t, (slash + 1 >> 0));
major = _tmp;
sub = _tmp$1;
_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; }
if (!_r$3) { _v = true; $s = 11; continue s; }
_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; }
_v = !_r$4; case 11:
/* */ if (_v) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (_v) { */ case 9:
$s = -1; return "";
/* } */ case 10:
_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; }
_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; }
_r$6;
b.WriteByte(47);
_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; }
_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; }
_r$8;
/* } */ case 3:
attrs = $makeSlice(sliceType$2, 0, $keys(param).length);
_ref = param;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
continue;
}
a = _entry.k;
attrs = $append(attrs, a);
_i++;
}
$r = sort.Strings(attrs); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_ref$1 = attrs;
_i$1 = 0;
/* while (true) { */ case 19:
/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 20; continue; }
attribute = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
value = (_entry$1 = param[$String.keyFor(attribute)], _entry$1 !== undefined ? _entry$1.v : "");
b.WriteByte(59);
b.WriteByte(32);
_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; }
/* */ if (!_r$9) { $s = 21; continue; }
/* */ $s = 22; continue;
/* if (!_r$9) { */ case 21:
$s = -1; return "";
/* } */ case 22:
_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; }
_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; }
_r$11;
b.WriteByte(61);
_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; }
/* */ if (_r$12) { $s = 26; continue; }
/* */ $s = 27; continue;
/* if (_r$12) { */ case 26:
b.WriteString(value);
_i$1++;
/* continue; */ $s = 19; continue;
/* } */ case 27:
b.WriteByte(34);
offset = 0;
_ref$2 = value;
_i$2 = 0;
while (true) {
if (!(_i$2 < _ref$2.length)) { break; }
_rune = $decodeRune(_ref$2, _i$2);
index = _i$2;
character = _rune[0];
if ((character === 34) || (character === 92)) {
b.WriteString($substring(value, offset, index));
offset = index;
b.WriteByte(92);
}
if (!(((character & 128) === 0))) {
$s = -1; return "";
}
_i$2 += _rune[1];
}
b.WriteString($substring(value, offset));
b.WriteByte(34);
_i$1++;
/* } */ $s = 19; continue; case 20:
$s = -1; return b.String();
/* */ } return; } if ($f === undefined) { $f = { $blk: FormatMediaType }; } $f.$ptr = $ptr; $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;
};
$pkg.FormatMediaType = FormatMediaType;
checkMediaTypeDisposition = function(s) {
var $ptr, _r, _r$1, _tuple, _tuple$1, rest, s, subtype, typ, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = consumeToken(s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
typ = _tuple[0];
rest = _tuple[1];
if (typ === "") {
$s = -1; return errors.New("mime: no media type");
}
if (rest === "") {
$s = -1; return $ifaceNil;
}
if (!strings.HasPrefix(rest, "/")) {
$s = -1; return errors.New("mime: expected slash after first token");
}
_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; }
_tuple$1 = _r$1;
subtype = _tuple$1[0];
rest = _tuple$1[1];
if (subtype === "") {
$s = -1; return errors.New("mime: expected token after slash");
}
if (!(rest === "")) {
$s = -1; return errors.New("mime: unexpected content after media subtype");
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: checkMediaTypeDisposition }; } $f.$ptr = $ptr; $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;
};
ParseMediaType = function(v) {
var $ptr, _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$10, _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, baseName, buf, continuation, decv, decv$1, encodedPart, err, exists, i, idx, key, key$1, mediatype, n, ok, ok$1, ok$2, ok$3, params, pieceMap, pmap, rest, simplePart, singlePartKey, v, v$1, v$2, v$3, valid, value, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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$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; _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; baseName = $f.baseName; buf = $f.buf; continuation = $f.continuation; decv = $f.decv; decv$1 = $f.decv$1; 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; 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:
mediatype = "";
params = false;
err = $ifaceNil;
i = strings.Index(v, ";");
if (i === -1) {
i = v.length;
}
_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; }
_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; }
mediatype = _r$1;
_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; }
err = _r$2;
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = "";
_tmp$1 = false;
_tmp$2 = err;
mediatype = _tmp;
params = _tmp$1;
err = _tmp$2;
$s = -1; return [mediatype, params, err];
}
params = {};
continuation = false;
v = $substring(v, i);
/* while (true) { */ case 4:
/* if (!(v.length > 0)) { break; } */ if(!(v.length > 0)) { $s = 5; continue; }
_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; }
v = _r$3;
if (v.length === 0) {
/* break; */ $s = 5; continue;
}
_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; }
_tuple = _r$4;
key = _tuple[0];
value = _tuple[1];
rest = _tuple[2];
/* */ if (key === "") { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (key === "") { */ case 8:
_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; }
/* */ if (_r$5 === ";") { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (_r$5 === ";") { */ case 10:
$s = -1; return [mediatype, params, err];
/* } */ case 11:
_tmp$3 = "";
_tmp$4 = false;
_tmp$5 = errors.New("mime: invalid media parameter");
mediatype = _tmp$3;
params = _tmp$4;
err = _tmp$5;
$s = -1; return [mediatype, params, err];
/* } */ case 9:
pmap = params;
idx = strings.Index(key, "*");
if (!((idx === -1))) {
baseName = $substring(key, 0, idx);
if (continuation === false) {
continuation = {};
}
ok = false;
_tuple$1 = (_entry = continuation[$String.keyFor(baseName)], _entry !== undefined ? [_entry.v, true] : [false, false]);
pmap = _tuple$1[0];
ok = _tuple$1[1];
if (!ok) {
_key = baseName; (continuation || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: {} };
pmap = (_entry$1 = continuation[$String.keyFor(baseName)], _entry$1 !== undefined ? _entry$1.v : false);
}
}
_tuple$2 = (_entry$2 = pmap[$String.keyFor(key)], _entry$2 !== undefined ? [_entry$2.v, true] : ["", false]);
exists = _tuple$2[1];
if (exists) {
_tmp$6 = "";
_tmp$7 = false;
_tmp$8 = errors.New("mime: duplicate parameter name");
mediatype = _tmp$6;
params = _tmp$7;
err = _tmp$8;
$s = -1; return [mediatype, params, err];
}
_key$1 = key; (pmap || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$1)] = { k: _key$1, v: value };
v = rest;
/* } */ $s = 4; continue; case 5:
buf = new bytes.Buffer.ptr(sliceType$1.nil, 0, arrayType.zero(), 0);
_ref = continuation;
_i = 0;
_keys = $keys(_ref);
/* while (true) { */ case 13:
/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 14; continue; }
_entry$3 = _ref[_keys[_i]];
if (_entry$3 === undefined) {
_i++;
/* continue; */ $s = 13; continue;
}
key$1 = _entry$3.k;
pieceMap = _entry$3.v;
singlePartKey = key$1 + "*";
_tuple$3 = (_entry$4 = pieceMap[$String.keyFor(singlePartKey)], _entry$4 !== undefined ? [_entry$4.v, true] : ["", false]);
v$1 = _tuple$3[0];
ok$1 = _tuple$3[1];
/* */ if (ok$1) { $s = 15; continue; }
/* */ $s = 16; continue;
/* if (ok$1) { */ case 15:
_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; }
decv = _r$6;
_key$2 = key$1; (params || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$2)] = { k: _key$2, v: decv };
_i++;
/* continue; */ $s = 13; continue;
/* } */ case 16:
buf.Reset();
valid = false;
n = 0;
/* while (true) { */ case 18:
_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; }
simplePart = _r$7;
_tuple$4 = (_entry$5 = pieceMap[$String.keyFor(simplePart)], _entry$5 !== undefined ? [_entry$5.v, true] : ["", false]);
v$2 = _tuple$4[0];
ok$2 = _tuple$4[1];
if (ok$2) {
valid = true;
buf.WriteString(v$2);
n = n + (1) >> 0;
/* continue; */ $s = 18; continue;
}
encodedPart = simplePart + "*";
_tuple$5 = (_entry$6 = pieceMap[$String.keyFor(encodedPart)], _entry$6 !== undefined ? [_entry$6.v, true] : ["", false]);
v$3 = _tuple$5[0];
ok$3 = _tuple$5[1];
/* */ if (ok$3) { $s = 21; continue; }
/* */ $s = 22; continue;
/* if (ok$3) { */ case 21:
valid = true;
/* */ if (n === 0) { $s = 24; continue; }
/* */ $s = 25; continue;
/* if (n === 0) { */ case 24:
_r$8 = decode2231Enc(v$3); /* */ $s = 27; case 27: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_r$9 = buf.WriteString(_r$8); /* */ $s = 28; case 28: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
_r$9;
$s = 26; continue;
/* } else { */ case 25:
_r$10 = percentHexUnescape(v$3); /* */ $s = 29; case 29: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
_tuple$6 = _r$10;
decv$1 = _tuple$6[0];
buf.WriteString(decv$1);
/* } */ case 26:
$s = 23; continue;
/* } else { */ case 22:
/* break; */ $s = 19; continue;
/* } */ case 23:
n = n + (1) >> 0;
/* } */ $s = 18; continue; case 19:
if (valid) {
_key$3 = key$1; (params || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$3)] = { k: _key$3, v: buf.String() };
}
_i++;
/* } */ $s = 13; continue; case 14:
$s = -1; return [mediatype, params, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: ParseMediaType }; } $f.$ptr = $ptr; $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$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._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.baseName = baseName; $f.buf = buf; $f.continuation = continuation; $f.decv = decv; $f.decv$1 = decv$1; $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.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;
};
$pkg.ParseMediaType = ParseMediaType;
decode2231Enc = function(v) {
var $ptr, _r, _r$1, _tuple, charset, encv, sv, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; charset = $f.charset; encv = $f.encv; sv = $f.sv; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sv = strings.SplitN(v, "'", 3);
if (!((sv.$length === 3))) {
$s = -1; return "";
}
_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; }
charset = _r;
if (!(charset === "us-ascii") && !(charset === "utf-8")) {
$s = -1; return "";
}
_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; }
_tuple = _r$1;
encv = _tuple[0];
$s = -1; return encv;
/* */ } return; } if ($f === undefined) { $f = { $blk: decode2231Enc }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.charset = charset; $f.encv = encv; $f.sv = sv; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
isNotTokenChar = function(r) {
var $ptr, r;
return !isTokenChar(r);
};
consumeToken = function(v) {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, notPos, rest, token, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
token = "";
rest = "";
_r = strings.IndexFunc(v, isNotTokenChar); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
notPos = _r;
if (notPos === -1) {
_tmp = v;
_tmp$1 = "";
token = _tmp;
rest = _tmp$1;
$s = -1; return [token, rest];
}
if (notPos === 0) {
_tmp$2 = "";
_tmp$3 = v;
token = _tmp$2;
rest = _tmp$3;
$s = -1; return [token, rest];
}
_tmp$4 = $substring(v, 0, notPos);
_tmp$5 = $substring(v, notPos);
token = _tmp$4;
rest = _tmp$5;
$s = -1; return [token, rest];
/* */ } return; } if ($f === undefined) { $f = { $blk: consumeToken }; } $f.$ptr = $ptr; $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;
};
consumeValue = function(v) {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, buffer, i, r, rest, v, value, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
value = "";
rest = "";
if (v === "") {
$s = -1; return [value, rest];
}
/* */ if (!((v.charCodeAt(0) === 34))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!((v.charCodeAt(0) === 34))) { */ case 1:
_r = consumeToken(v); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
value = _tuple[0];
rest = _tuple[1];
$s = -1; return [value, rest];
/* } */ case 2:
buffer = new bytes.Buffer.ptr(sliceType$1.nil, 0, arrayType.zero(), 0);
i = 1;
while (true) {
if (!(i < v.length)) { break; }
r = v.charCodeAt(i);
if (r === 34) {
_tmp = buffer.String();
_tmp$1 = $substring(v, (i + 1 >> 0));
value = _tmp;
rest = _tmp$1;
$s = -1; return [value, rest];
}
if ((r === 92) && (i + 1 >> 0) < v.length && !isTokenChar(((v.charCodeAt((i + 1 >> 0)) >> 0)))) {
buffer.WriteByte(v.charCodeAt((i + 1 >> 0)));
i = i + (1) >> 0;
i = i + (1) >> 0;
continue;
}
if ((r === 13) || (r === 10)) {
_tmp$2 = "";
_tmp$3 = v;
value = _tmp$2;
rest = _tmp$3;
$s = -1; return [value, rest];
}
buffer.WriteByte(v.charCodeAt(i));
i = i + (1) >> 0;
}
_tmp$4 = "";
_tmp$5 = v;
value = _tmp$4;
rest = _tmp$5;
$s = -1; return [value, rest];
/* */ } return; } if ($f === undefined) { $f = { $blk: consumeValue }; } $f.$ptr = $ptr; $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;
};
consumeMediaParam = function(v) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
param = "";
value = "";
rest = "";
_r = strings.TrimLeftFunc(v, unicode.IsSpace); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
rest = _r;
if (!strings.HasPrefix(rest, ";")) {
_tmp = "";
_tmp$1 = "";
_tmp$2 = v;
param = _tmp;
value = _tmp$1;
rest = _tmp$2;
$s = -1; return [param, value, rest];
}
rest = $substring(rest, 1);
_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; }
rest = _r$1;
_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; }
_tuple = _r$2;
param = _tuple[0];
rest = _tuple[1];
_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; }
param = _r$3;
if (param === "") {
_tmp$3 = "";
_tmp$4 = "";
_tmp$5 = v;
param = _tmp$3;
value = _tmp$4;
rest = _tmp$5;
$s = -1; return [param, value, rest];
}
_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; }
rest = _r$4;
if (!strings.HasPrefix(rest, "=")) {
_tmp$6 = "";
_tmp$7 = "";
_tmp$8 = v;
param = _tmp$6;
value = _tmp$7;
rest = _tmp$8;
$s = -1; return [param, value, rest];
}
rest = $substring(rest, 1);
_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; }
rest = _r$5;
_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; }
_tuple$1 = _r$6;
value = _tuple$1[0];
rest2 = _tuple$1[1];
if (value === "" && rest2 === rest) {
_tmp$9 = "";
_tmp$10 = "";
_tmp$11 = v;
param = _tmp$9;
value = _tmp$10;
rest = _tmp$11;
$s = -1; return [param, value, rest];
}
rest = rest2;
_tmp$12 = param;
_tmp$13 = value;
_tmp$14 = rest;
param = _tmp$12;
value = _tmp$13;
rest = _tmp$14;
$s = -1; return [param, value, rest];
/* */ } return; } if ($f === undefined) { $f = { $blk: consumeMediaParam }; } $f.$ptr = $ptr; $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;
};
percentHexUnescape = function(s) {
var $ptr, _1, _r, i, i$1, j, percents, s, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
percents = 0;
i = 0;
/* while (true) { */ case 1:
/* if (!(i < s.length)) { break; } */ if(!(i < s.length)) { $s = 2; continue; }
/* */ if (!((s.charCodeAt(i) === 37))) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!((s.charCodeAt(i) === 37))) { */ case 3:
i = i + (1) >> 0;
/* continue; */ $s = 1; continue;
/* } */ case 4:
percents = percents + (1) >> 0;
/* */ if ((i + 2 >> 0) >= s.length || !ishex(s.charCodeAt((i + 1 >> 0))) || !ishex(s.charCodeAt((i + 2 >> 0)))) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if ((i + 2 >> 0) >= s.length || !ishex(s.charCodeAt((i + 1 >> 0))) || !ishex(s.charCodeAt((i + 2 >> 0)))) { */ case 5:
s = $substring(s, i);
if (s.length > 3) {
s = $substring(s, 0, 3);
}
_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; }
$s = -1; return ["", _r];
/* } */ case 6:
i = i + (3) >> 0;
/* } */ $s = 1; continue; case 2:
if (percents === 0) {
$s = -1; return [s, $ifaceNil];
}
t = $makeSlice(sliceType$1, (s.length - ($imul(2, percents)) >> 0));
j = 0;
i$1 = 0;
while (true) {
if (!(i$1 < s.length)) { break; }
_1 = s.charCodeAt(i$1);
if (_1 === (37)) {
((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));
j = j + (1) >> 0;
i$1 = i$1 + (3) >> 0;
} else {
((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = s.charCodeAt(i$1));
j = j + (1) >> 0;
i$1 = i$1 + (1) >> 0;
}
}
$s = -1; return [($bytesToString(t)), $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: percentHexUnescape }; } $f.$ptr = $ptr; $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;
};
ishex = function(c) {
var $ptr, c;
if (48 <= c && c <= 57) {
return true;
} else if (97 <= c && c <= 102) {
return true;
} else if (65 <= c && c <= 70) {
return true;
}
return false;
};
unhex = function(c) {
var $ptr, c;
if (48 <= c && c <= 57) {
return c - 48 << 24 >>> 24;
} else if (97 <= c && c <= 102) {
return (c - 97 << 24 >>> 24) + 10 << 24 >>> 24;
} else if (65 <= c && c <= 70) {
return (c - 65 << 24 >>> 24) + 10 << 24 >>> 24;
}
return 0;
};
setExtensionType = function(extension, mimeType) {
var $ptr, _entry, _entry$1, _entry$2, _i, _key, _key$1, _key$2, _key$3, _r, _r$1, _r$2, _ref, _tuple, err, extLower, extension, justType, mimeType, param, v, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _i = $f._i; _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; _r$2 = $f._r$2; _ref = $f._ref; _tuple = $f._tuple; err = $f.err; extLower = $f.extLower; extension = $f.extension; justType = $f.justType; mimeType = $f.mimeType; 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);
_r = ParseMediaType(mimeType); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
justType = _tuple[0];
param = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
/* */ if (strings.HasPrefix(mimeType, "text/") && (_entry = param[$String.keyFor("charset")], _entry !== undefined ? _entry.v : "") === "") { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (strings.HasPrefix(mimeType, "text/") && (_entry = param[$String.keyFor("charset")], _entry !== undefined ? _entry.v : "") === "") { */ case 2:
_key = "charset"; (param || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: "utf-8" };
_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; }
mimeType = _r$1;
/* } */ case 3:
_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; }
extLower = _r$2;
$r = mimeLock.Lock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(mimeLock, "Unlock"), []]);
_key$1 = extension; (mimeTypes || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$1)] = { k: _key$1, v: mimeType };
_key$2 = extLower; (mimeTypesLower || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$2)] = { k: _key$2, v: mimeType };
_ref = (_entry$1 = extensions[$String.keyFor(justType)], _entry$1 !== undefined ? _entry$1.v : sliceType$2.nil);
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (v === extLower) {
$s = -1; return $ifaceNil;
}
_i++;
}
_key$3 = justType; (extensions || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$3)] = { k: _key$3, v: $append((_entry$2 = extensions[$String.keyFor(justType)], _entry$2 !== undefined ? _entry$2.v : sliceType$2.nil), extLower) };
$s = -1; return $ifaceNil;
/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: setExtensionType }; } $f.$ptr = $ptr; $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._key$2 = _key$2; $f._key$3 = _key$3; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._tuple = _tuple; $f.err = err; $f.extLower = extLower; $f.extension = extension; $f.justType = justType; $f.mimeType = mimeType; $f.param = param; $f.v = v; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
init = function() {
var $ptr;
osInitMime = initMimeWindows;
};
initMimeWindows = function() {
var $ptr, _i, _r, _ref, _tuple, _tuple$1, _tuple$2, err, err$1, k, name, names, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; err$1 = $f.err$1; k = $f.k; name = $f.name; names = $f.names; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_tuple = new registry.Key(2147483648).ReadSubKeyNames(-1);
names = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return;
}
_ref = names;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
name = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
/* */ if (name.length < 2 || !((name.charCodeAt(0) === 46))) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (name.length < 2 || !((name.charCodeAt(0) === 46))) { */ case 3:
_i++;
/* continue; */ $s = 1; continue;
/* } */ case 4:
_tuple$1 = registry.OpenKey(2147483648, name, 131097);
k = _tuple$1[0];
err$1 = _tuple$1[1];
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 5:
_i++;
/* continue; */ $s = 1; continue;
/* } */ case 6:
_tuple$2 = new registry.Key(k).GetStringValue("Content Type");
v = _tuple$2[0];
err$1 = _tuple$2[2];
new registry.Key(k).Close();
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 7:
_i++;
/* continue; */ $s = 1; continue;
/* } */ case 8:
_r = setExtensionType(name, v); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
_i++;
/* } */ $s = 1; continue; case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: initMimeWindows }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $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.k = k; $f.name = name; $f.names = names; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = base64.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = errors.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = fmt.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = registry.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sort.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strings.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sync.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = unicode.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = utf8.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
mimeLock = new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0);
mimeTypes = false;
mimeTypesLower = false;
extensions = false;
osInitMime = $throwNilPointerError;
errInvalidWord = errors.New("mime: invalid RFC 2047 encoded-word");
maxBase64Len = base64.StdEncoding.DecodedLen(63);
bufPool = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
var $ptr;
return new bytes.Buffer.ptr(sliceType$1.nil, 0, arrayType.zero(), 0);
}));
init();
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["mime/quotedprintable"] = (function() {
var $pkg = {}, $init, bufio, bytes, fmt, io, Reader, sliceType, ptrType, sliceType$1, ptrType$1, crlf, lf, softSuffix, NewReader, fromHex, readHexByte, isQPDiscardWhitespace;
bufio = $packages["bufio"];
bytes = $packages["bytes"];
fmt = $packages["fmt"];
io = $packages["io"];
Reader = $pkg.Reader = $newType(0, $kindStruct, "quotedprintable.Reader", true, "mime/quotedprintable", true, function(br_, rerr_, line_) {
this.$val = this;
if (arguments.length === 0) {
this.br = ptrType.nil;
this.rerr = $ifaceNil;
this.line = sliceType.nil;
return;
}
this.br = br_;
this.rerr = rerr_;
this.line = line_;
});
sliceType = $sliceType($Uint8);
ptrType = $ptrType(bufio.Reader);
sliceType$1 = $sliceType($emptyInterface);
ptrType$1 = $ptrType(Reader);
NewReader = function(r) {
var $ptr, r;
return new Reader.ptr(bufio.NewReader(r), $ifaceNil, sliceType.nil);
};
$pkg.NewReader = NewReader;
fromHex = function(b) {
var $ptr, _r, b, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; b = $f.b; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
if (b >= 48 && b <= 57) {
$s = -1; return [b - 48 << 24 >>> 24, $ifaceNil];
} else if (b >= 65 && b <= 70) {
$s = -1; return [(b - 65 << 24 >>> 24) + 10 << 24 >>> 24, $ifaceNil];
} else if (b >= 97 && b <= 102) {
$s = -1; return [(b - 97 << 24 >>> 24) + 10 << 24 >>> 24, $ifaceNil];
}
_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; }
$s = -1; return [0, _r];
/* */ } return; } if ($f === undefined) { $f = { $blk: fromHex }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.$s = $s; $f.$r = $r; return $f;
};
readHexByte = function(v) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
b = 0;
err = $ifaceNil;
if (v.$length < 2) {
_tmp = 0;
_tmp$1 = io.ErrUnexpectedEOF;
b = _tmp;
err = _tmp$1;
$s = -1; return [b, err];
}
_tmp$2 = 0;
_tmp$3 = 0;
hb = _tmp$2;
lb = _tmp$3;
_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; }
_tuple = _r;
hb = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$4 = 0;
_tmp$5 = err;
b = _tmp$4;
err = _tmp$5;
$s = -1; return [b, err];
}
_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; }
_tuple$1 = _r$1;
lb = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$6 = 0;
_tmp$7 = err;
b = _tmp$6;
err = _tmp$7;
$s = -1; return [b, err];
}
_tmp$8 = ((hb << 4 << 24 >>> 24) | lb) >>> 0;
_tmp$9 = $ifaceNil;
b = _tmp$8;
err = _tmp$9;
$s = -1; return [b, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: readHexByte }; } $f.$ptr = $ptr; $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;
};
isQPDiscardWhitespace = function(r) {
var $ptr, _1, r;
_1 = r;
if ((_1 === (10)) || (_1 === (13)) || (_1 === (32)) || (_1 === (9))) {
return true;
}
return false;
};
Reader.ptr.prototype.Read = function(p) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
r = this;
/* while (true) { */ case 1:
/* if (!(p.$length > 0)) { break; } */ if(!(p.$length > 0)) { $s = 2; continue; }
/* */ if (r.line.$length === 0) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (r.line.$length === 0) { */ case 3:
if (!($interfaceIsEqual(r.rerr, $ifaceNil))) {
_tmp = n;
_tmp$1 = r.rerr;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
_r = r.br.ReadSlice(10); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
r.line = _tuple[0];
r.rerr = _tuple[1];
hasLF = bytes.HasSuffix(r.line, lf);
hasCR = bytes.HasSuffix(r.line, crlf);
wholeLine = r.line;
_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; }
r.line = _r$1;
/* */ if (bytes.HasSuffix(r.line, softSuffix)) { $s = 7; continue; }
/* */ if (hasLF) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (bytes.HasSuffix(r.line, softSuffix)) { */ case 7:
rightStripped = $subslice(wholeLine, r.line.$length);
r.line = $subslice(r.line, 0, (r.line.$length - 1 >> 0));
/* */ if (!bytes.HasPrefix(rightStripped, lf) && !bytes.HasPrefix(rightStripped, crlf) && !((rightStripped.$length === 0) && r.line.$length > 0 && $interfaceIsEqual(r.rerr, io.EOF))) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (!bytes.HasPrefix(rightStripped, lf) && !bytes.HasPrefix(rightStripped, crlf) && !((rightStripped.$length === 0) && r.line.$length > 0 && $interfaceIsEqual(r.rerr, io.EOF))) { */ case 10:
_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; }
r.rerr = _r$2;
/* } */ case 11:
$s = 9; continue;
/* } else if (hasLF) { */ case 8:
if (hasCR) {
r.line = $append(r.line, 13, 10);
} else {
r.line = $append(r.line, 10);
}
/* } */ case 9:
/* continue; */ $s = 1; continue;
/* } */ case 4:
b = (x = r.line, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]));
/* */ if ((b === 61)) { $s = 14; continue; }
/* */ if ((b === 9) || (b === 13) || (b === 10)) { $s = 15; continue; }
/* */ if (b < 32 || b > 126) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if ((b === 61)) { */ case 14:
_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; }
_tuple$1 = _r$3;
b = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
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))) {
b = 61;
/* break; */ $s = 13; continue;
}
_tmp$2 = n;
_tmp$3 = err;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
}
r.line = $subslice(r.line, 2);
$s = 17; continue;
/* } else if ((b === 9) || (b === 13) || (b === 10)) { */ case 15:
/* break; */ $s = 13; continue;
$s = 17; continue;
/* } else if (b < 32 || b > 126) { */ case 16:
_tmp$4 = n;
_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; }
_tmp$5 = _r$4;
n = _tmp$4;
err = _tmp$5;
$s = -1; return [n, err];
/* } */ case 17:
case 13:
(0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = b);
p = $subslice(p, 1);
r.line = $subslice(r.line, 1);
n = n + (1) >> 0;
/* } */ $s = 1; continue; case 2:
_tmp$6 = n;
_tmp$7 = $ifaceNil;
n = _tmp$6;
err = _tmp$7;
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.Read }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.Read = function(p) { return this.$val.Read(p); };
ptrType$1.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}];
Reader.init("mime/quotedprintable", [{prop: "br", name: "br", exported: false, typ: ptrType, tag: ""}, {prop: "rerr", name: "rerr", exported: false, typ: $error, tag: ""}, {prop: "line", name: "line", exported: false, typ: sliceType, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = bytes.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = fmt.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
crlf = (new sliceType($stringToBytes("\r\n")));
lf = (new sliceType($stringToBytes("\n")));
softSuffix = (new sliceType($stringToBytes("=")));
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["net/textproto"] = (function() {
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;
bufio = $packages["bufio"];
bytes = $packages["bytes"];
fmt = $packages["fmt"];
io = $packages["io"];
ioutil = $packages["io/ioutil"];
net = $packages["net"];
strconv = $packages["strconv"];
strings = $packages["strings"];
sync = $packages["sync"];
MIMEHeader = $pkg.MIMEHeader = $newType(4, $kindMap, "textproto.MIMEHeader", true, "net/textproto", true, null);
Reader = $pkg.Reader = $newType(0, $kindStruct, "textproto.Reader", true, "net/textproto", true, function(R_, dot_, buf_) {
this.$val = this;
if (arguments.length === 0) {
this.R = ptrType.nil;
this.dot = ptrType$1.nil;
this.buf = sliceType.nil;
return;
}
this.R = R_;
this.dot = dot_;
this.buf = buf_;
});
dotReader = $pkg.dotReader = $newType(0, $kindStruct, "textproto.dotReader", true, "net/textproto", false, function(r_, state_) {
this.$val = this;
if (arguments.length === 0) {
this.r = ptrType$2.nil;
this.state = 0;
return;
}
this.r = r_;
this.state = state_;
});
Error = $pkg.Error = $newType(0, $kindStruct, "textproto.Error", true, "net/textproto", true, function(Code_, Msg_) {
this.$val = this;
if (arguments.length === 0) {
this.Code = 0;
this.Msg = "";
return;
}
this.Code = Code_;
this.Msg = Msg_;
});
ProtocolError = $pkg.ProtocolError = $newType(8, $kindString, "textproto.ProtocolError", true, "net/textproto", true, null);
sliceType = $sliceType($Uint8);
sliceType$1 = $sliceType($String);
ptrType = $ptrType(bufio.Reader);
ptrType$1 = $ptrType(dotReader);
ptrType$2 = $ptrType(Reader);
sliceType$2 = $sliceType($emptyInterface);
ptrType$9 = $ptrType(Error);
MIMEHeader.prototype.Add = function(key, value) {
var $ptr, _entry, _key, h, key, value;
h = this.$val;
key = CanonicalMIMEHeaderKey(key);
_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) };
};
$ptrType(MIMEHeader).prototype.Add = function(key, value) { return new MIMEHeader(this.$get()).Add(key, value); };
MIMEHeader.prototype.Set = function(key, value) {
var $ptr, _key, h, key, value;
h = this.$val;
_key = CanonicalMIMEHeaderKey(key); (h || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: new sliceType$1([value]) };
};
$ptrType(MIMEHeader).prototype.Set = function(key, value) { return new MIMEHeader(this.$get()).Set(key, value); };
MIMEHeader.prototype.Get = function(key) {
var $ptr, _entry, h, key, v;
h = this.$val;
if (h === false) {
return "";
}
v = (_entry = h[$String.keyFor(CanonicalMIMEHeaderKey(key))], _entry !== undefined ? _entry.v : sliceType$1.nil);
if (v.$length === 0) {
return "";
}
return (0 >= v.$length ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + 0]);
};
$ptrType(MIMEHeader).prototype.Get = function(key) { return new MIMEHeader(this.$get()).Get(key); };
MIMEHeader.prototype.Del = function(key) {
var $ptr, h, key;
h = this.$val;
delete h[$String.keyFor(CanonicalMIMEHeaderKey(key))];
};
$ptrType(MIMEHeader).prototype.Del = function(key) { return new MIMEHeader(this.$get()).Del(key); };
NewReader = function(r) {
var $ptr, r;
return new Reader.ptr(r, ptrType$1.nil, sliceType.nil);
};
$pkg.NewReader = NewReader;
Reader.ptr.prototype.ReadLine = function() {
var $ptr, _r, _tuple, err, line, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
r = this;
_r = r.readLineSlice(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
line = _tuple[0];
err = _tuple[1];
$s = -1; return [($bytesToString(line)), err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadLine }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.line = line; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
Reader.prototype.ReadLine = function() { return this.$val.ReadLine(); };
Reader.ptr.prototype.ReadLineBytes = function() {
var $ptr, _r, _tuple, buf, err, line, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
r = this;
_r = r.readLineSlice(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
line = _tuple[0];
err = _tuple[1];
if (!(line === sliceType.nil)) {
buf = $makeSlice(sliceType, line.$length);
$copySlice(buf, line);
line = buf;
}
$s = -1; return [line, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadLineBytes }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.ReadLineBytes = function() { return this.$val.ReadLineBytes(); };
Reader.ptr.prototype.readLineSlice = function() {
var $ptr, _r, _tuple, err, l, line, more, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
r = this;
$r = r.closeDot(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
line = sliceType.nil;
/* while (true) { */ case 2:
_r = r.R.ReadLine(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
l = _tuple[0];
more = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [sliceType.nil, err];
}
if (line === sliceType.nil && !more) {
$s = -1; return [l, $ifaceNil];
}
line = $appendSlice(line, l);
if (!more) {
/* break; */ $s = 3; continue;
}
/* } */ $s = 2; continue; case 3:
$s = -1; return [line, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.readLineSlice }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.readLineSlice = function() { return this.$val.readLineSlice(); };
Reader.ptr.prototype.ReadContinuedLine = function() {
var $ptr, _r, _tuple, err, line, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
r = this;
_r = r.readContinuedLineSlice(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
line = _tuple[0];
err = _tuple[1];
$s = -1; return [($bytesToString(line)), err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadContinuedLine }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.line = line; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
Reader.prototype.ReadContinuedLine = function() { return this.$val.ReadContinuedLine(); };
trim = function(s) {
var $ptr, i, n, s, x, x$1;
i = 0;
while (true) {
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; }
i = i + (1) >> 0;
}
n = s.$length;
while (true) {
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; }
n = n - (1) >> 0;
}
return $subslice(s, i, n);
};
Reader.ptr.prototype.ReadContinuedLineBytes = function() {
var $ptr, _r, _tuple, buf, err, line, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
r = this;
_r = r.readContinuedLineSlice(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
line = _tuple[0];
err = _tuple[1];
if (!(line === sliceType.nil)) {
buf = $makeSlice(sliceType, line.$length);
$copySlice(buf, line);
line = buf;
}
$s = -1; return [line, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadContinuedLineBytes }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.ReadContinuedLineBytes = function() { return this.$val.ReadContinuedLineBytes(); };
Reader.ptr.prototype.readContinuedLineSlice = function() {
var $ptr, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, _tuple$2, err, err$1, err$2, line, line$1, peek, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
r = this;
_r = r.readLineSlice(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
line = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [sliceType.nil, err];
}
if (line.$length === 0) {
$s = -1; return [line, $ifaceNil];
}
/* */ if (r.R.Buffered() > 1) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (r.R.Buffered() > 1) { */ case 2:
_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; }
_tuple$1 = _r$1;
peek = _tuple$1[0];
err$1 = _tuple$1[1];
if ($interfaceIsEqual(err$1, $ifaceNil) && isASCIILetter((0 >= peek.$length ? ($throwRuntimeError("index out of range"), undefined) : peek.$array[peek.$offset + 0]))) {
$s = -1; return [trim(line), $ifaceNil];
}
/* } */ case 3:
r.buf = $appendSlice($subslice(r.buf, 0, 0), trim(line));
/* while (true) { */ case 5:
_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; }
/* if (!(_r$2 > 0)) { break; } */ if(!(_r$2 > 0)) { $s = 6; continue; }
_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; }
_tuple$2 = _r$3;
line$1 = _tuple$2[0];
err$2 = _tuple$2[1];
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
/* break; */ $s = 6; continue;
}
r.buf = $append(r.buf, 32);
r.buf = $appendSlice(r.buf, trim(line$1));
/* } */ $s = 5; continue; case 6:
$s = -1; return [r.buf, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.readContinuedLineSlice }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.readContinuedLineSlice = function() { return this.$val.readContinuedLineSlice(); };
Reader.ptr.prototype.skipSpace = function() {
var $ptr, _r, _tuple, c, err, n, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
r = this;
n = 0;
/* while (true) { */ case 1:
_r = r.R.ReadByte(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
c = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
/* break; */ $s = 2; continue;
}
if (!((c === 32)) && !((c === 9))) {
r.R.UnreadByte();
/* break; */ $s = 2; continue;
}
n = n + (1) >> 0;
/* } */ $s = 1; continue; case 2:
$s = -1; return n;
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.skipSpace }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.skipSpace = function() { return this.$val.skipSpace(); };
Reader.ptr.prototype.readCodeLine = function(expectCode) {
var $ptr, _r, _tuple, _tuple$1, code, continued, err, expectCode, line, message, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
code = 0;
continued = false;
message = "";
err = $ifaceNil;
r = this;
_r = r.ReadLine(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
line = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [code, continued, message, err];
}
_tuple$1 = parseCodeLine(line, expectCode);
code = _tuple$1[0];
continued = _tuple$1[1];
message = _tuple$1[2];
err = _tuple$1[3];
$s = -1; return [code, continued, message, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.readCodeLine }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.readCodeLine = function(expectCode) { return this.$val.readCodeLine(expectCode); };
parseCodeLine = function(line, expectCode) {
var $ptr, _q, _q$1, _tuple, code, continued, err, expectCode, line, message;
code = 0;
continued = false;
message = "";
err = $ifaceNil;
if (line.length < 4 || !((line.charCodeAt(3) === 32)) && !((line.charCodeAt(3) === 45))) {
err = new ProtocolError(("short response: " + line));
return [code, continued, message, err];
}
continued = line.charCodeAt(3) === 45;
_tuple = strconv.Atoi($substring(line, 0, 3));
code = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil)) || code < 100) {
err = new ProtocolError(("invalid response code: " + line));
return [code, continued, message, err];
}
message = $substring(line, 4);
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))) {
err = new Error.ptr(code, message);
}
return [code, continued, message, err];
};
Reader.ptr.prototype.ReadCodeLine = function(expectCode) {
var $ptr, _r, _tuple, code, continued, err, expectCode, message, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
code = 0;
message = "";
err = $ifaceNil;
r = this;
_r = r.readCodeLine(expectCode); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
code = _tuple[0];
continued = _tuple[1];
message = _tuple[2];
err = _tuple[3];
if ($interfaceIsEqual(err, $ifaceNil) && continued) {
err = new ProtocolError(("unexpected multi-line response: " + message));
}
$s = -1; return [code, message, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadCodeLine }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.ReadCodeLine = function(expectCode) { return this.$val.ReadCodeLine(expectCode); };
Reader.ptr.prototype.ReadResponse = function(expectCode) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
code = 0;
message = "";
err = $ifaceNil;
r = this;
_r = r.readCodeLine(expectCode); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
code = _tuple[0];
continued = _tuple[1];
message = _tuple[2];
err = _tuple[3];
multi = continued;
/* while (true) { */ case 2:
/* if (!(continued)) { break; } */ if(!(continued)) { $s = 3; continue; }
_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; }
_tuple$1 = _r$1;
line = _tuple$1[0];
err$1 = _tuple$1[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
_tmp = 0;
_tmp$1 = "";
_tmp$2 = err$1;
code = _tmp;
message = _tmp$1;
err = _tmp$2;
$s = -1; return [code, message, err];
}
code2 = 0;
moreMessage = "";
_tuple$2 = parseCodeLine(line, 0);
code2 = _tuple$2[0];
continued = _tuple$2[1];
moreMessage = _tuple$2[2];
err$1 = _tuple$2[3];
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil)) || !((code2 === code))) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (!($interfaceIsEqual(err$1, $ifaceNil)) || !((code2 === code))) { */ case 5:
_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; }
message = message + ("\n" + _r$2);
continued = true;
/* continue; */ $s = 2; continue;
/* } */ case 6:
message = message + ("\n" + moreMessage);
/* } */ $s = 2; continue; case 3:
if (!($interfaceIsEqual(err, $ifaceNil)) && multi && !(message === "")) {
err = new Error.ptr(code, message);
}
$s = -1; return [code, message, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadResponse }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.ReadResponse = function(expectCode) { return this.$val.ReadResponse(expectCode); };
Reader.ptr.prototype.DotReader = function() {
var $ptr, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
$r = r.closeDot(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
r.dot = new dotReader.ptr(r, 0);
$s = -1; return r.dot;
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.DotReader }; } $f.$ptr = $ptr; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
Reader.prototype.DotReader = function() { return this.$val.DotReader(); };
dotReader.ptr.prototype.Read = function(b) {
var $ptr, _1, _r, _tuple, b, br, c, d, err, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
d = this;
br = d.r.R;
/* while (true) { */ case 1:
/* if (!(n < b.$length && !((d.state === 5)))) { break; } */ if(!(n < b.$length && !((d.state === 5)))) { $s = 2; continue; }
c = 0;
_r = br.ReadByte(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
c = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
if ($interfaceIsEqual(err, io.EOF)) {
err = io.ErrUnexpectedEOF;
}
/* break; */ $s = 2; continue;
}
switch (0) { default:
_1 = d.state;
if (_1 === (0)) {
if (c === 46) {
d.state = 1;
/* continue; */ $s = 1; continue;
}
if (c === 13) {
d.state = 3;
/* continue; */ $s = 1; continue;
}
d.state = 4;
} else if (_1 === (1)) {
if (c === 13) {
d.state = 2;
/* continue; */ $s = 1; continue;
}
if (c === 10) {
d.state = 5;
/* continue; */ $s = 1; continue;
}
d.state = 4;
} else if (_1 === (2)) {
if (c === 10) {
d.state = 5;
/* continue; */ $s = 1; continue;
}
br.UnreadByte();
c = 13;
d.state = 4;
} else if (_1 === (3)) {
if (c === 10) {
d.state = 0;
break;
}
br.UnreadByte();
c = 13;
d.state = 4;
} else if (_1 === (4)) {
if (c === 13) {
d.state = 3;
/* continue; */ $s = 1; continue;
}
if (c === 10) {
d.state = 0;
}
}
}
((n < 0 || n >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + n] = c);
n = n + (1) >> 0;
/* } */ $s = 1; continue; case 2:
if ($interfaceIsEqual(err, $ifaceNil) && (d.state === 5)) {
err = io.EOF;
}
if (!($interfaceIsEqual(err, $ifaceNil)) && d.r.dot === d) {
d.r.dot = ptrType$1.nil;
}
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: dotReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $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;
};
dotReader.prototype.Read = function(b) { return this.$val.Read(b); };
Reader.ptr.prototype.closeDot = function() {
var $ptr, _r, buf, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; buf = $f.buf; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
if (r.dot === ptrType$1.nil) {
$s = -1; return;
}
buf = $makeSlice(sliceType, 128);
/* while (true) { */ case 1:
/* if (!(!(r.dot === ptrType$1.nil))) { break; } */ if(!(!(r.dot === ptrType$1.nil))) { $s = 2; continue; }
_r = r.dot.Read(buf); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
/* } */ $s = 1; continue; case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.closeDot }; } $f.$ptr = $ptr; $f._r = _r; $f.buf = buf; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
Reader.prototype.closeDot = function() { return this.$val.closeDot(); };
Reader.ptr.prototype.ReadDotBytes = function() {
var $ptr, _r, _r$1, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
_r = r.DotReader(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_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; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadDotBytes }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
Reader.prototype.ReadDotBytes = function() { return this.$val.ReadDotBytes(); };
Reader.ptr.prototype.ReadDotLines = function() {
var $ptr, _r, _tuple, err, line, r, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
r = this;
v = sliceType$1.nil;
err = $ifaceNil;
/* while (true) { */ case 1:
line = "";
_r = r.ReadLine(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
line = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
if ($interfaceIsEqual(err, io.EOF)) {
err = io.ErrUnexpectedEOF;
}
/* break; */ $s = 2; continue;
}
if (line.length > 0 && (line.charCodeAt(0) === 46)) {
if (line.length === 1) {
/* break; */ $s = 2; continue;
}
line = $substring(line, 1);
}
v = $append(v, line);
/* } */ $s = 1; continue; case 2:
$s = -1; return [v, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadDotLines }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.ReadDotLines = function() { return this.$val.ReadDotLines(); };
Reader.ptr.prototype.ReadMIMEHeader = function() {
var $ptr, _entry, _key, _key$1, _r, _r$1, _tmp, _tmp$1, _tuple, endKey, err, hint, i, key, kv, m, r, strs, value, vv, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _key = $f._key; _key$1 = $f._key$1; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; endKey = $f.endKey; err = $f.err; hint = $f.hint; i = $f.i; key = $f.key; kv = $f.kv; 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:
r = this;
strs = sliceType$1.nil;
_r = r.upcomingHeaderNewlines(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
hint = _r;
if (hint > 0) {
strs = $makeSlice(sliceType$1, hint);
}
m = ((hint < 0 || hint > 2147483647) ? $throwRuntimeError("makemap: size out of range") : {});
/* while (true) { */ case 2:
_r$1 = r.readContinuedLineSlice(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
kv = _tuple[0];
err = _tuple[1];
if (kv.$length === 0) {
$s = -1; return [m, err];
}
i = bytes.IndexByte(kv, 58);
if (i < 0) {
$s = -1; return [m, new ProtocolError(("malformed MIME header line: " + ($bytesToString(kv))))];
}
endKey = i;
while (true) {
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; }
endKey = endKey - (1) >> 0;
}
key = canonicalMIMEHeaderKey($subslice(kv, 0, endKey));
if (key === "") {
/* continue; */ $s = 2; continue;
}
i = i + (1) >> 0;
while (true) {
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; }
i = i + (1) >> 0;
}
value = ($bytesToString($subslice(kv, i)));
vv = (_entry = m[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$1.nil);
if (vv === sliceType$1.nil && strs.$length > 0) {
_tmp = $subslice(strs, 0, 1, 1);
_tmp$1 = $subslice(strs, 1);
vv = _tmp;
strs = _tmp$1;
(0 >= vv.$length ? ($throwRuntimeError("index out of range"), undefined) : vv.$array[vv.$offset + 0] = value);
_key = key; (m || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: vv };
} else {
_key$1 = key; (m || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$1)] = { k: _key$1, v: $append(vv, value) };
}
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [m, err];
}
/* } */ $s = 2; continue; case 3:
$s = -1; return [false, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadMIMEHeader }; } $f.$ptr = $ptr; $f._entry = _entry; $f._key = _key; $f._key$1 = _key$1; $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.endKey = endKey; $f.err = err; $f.hint = hint; $f.i = i; $f.key = key; $f.kv = kv; $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;
};
Reader.prototype.ReadMIMEHeader = function() { return this.$val.ReadMIMEHeader(); };
Reader.ptr.prototype.upcomingHeaderNewlines = function() {
var $ptr, _r, _r$1, _tuple, i, n, peek, r, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
r = this;
_r = r.R.Peek(1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
s = r.R.Buffered();
if (s === 0) {
$s = -1; return n;
}
_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; }
_tuple = _r$1;
peek = _tuple[0];
while (true) {
if (!(peek.$length > 0)) { break; }
i = bytes.IndexByte(peek, 10);
if (i < 3) {
$s = -1; return n;
}
n = n + (1) >> 0;
peek = $subslice(peek, (i + 1 >> 0));
}
$s = -1; return n;
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.upcomingHeaderNewlines }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.upcomingHeaderNewlines = function() { return this.$val.upcomingHeaderNewlines(); };
CanonicalMIMEHeaderKey = function(s) {
var $ptr, c, i, s, upper;
upper = true;
i = 0;
while (true) {
if (!(i < s.length)) { break; }
c = s.charCodeAt(i);
if (!validHeaderFieldByte(c)) {
return s;
}
if (upper && 97 <= c && c <= 122) {
return canonicalMIMEHeaderKey((new sliceType($stringToBytes(s))));
}
if (!upper && 65 <= c && c <= 90) {
return canonicalMIMEHeaderKey((new sliceType($stringToBytes(s))));
}
upper = c === 45;
i = i + (1) >> 0;
}
return s;
};
$pkg.CanonicalMIMEHeaderKey = CanonicalMIMEHeaderKey;
validHeaderFieldByte = function(b) {
var $ptr, b;
return ((b >> 0)) < 127 && ((b < 0 || b >= isTokenTable.length) ? ($throwRuntimeError("index out of range"), undefined) : isTokenTable[b]);
};
canonicalMIMEHeaderKey = function(a) {
var $ptr, _entry, _i, _i$1, _ref, _ref$1, a, c, c$1, i, upper, v;
_ref = a;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (validHeaderFieldByte(c)) {
_i++;
continue;
}
return ($bytesToString(a));
}
upper = true;
_ref$1 = a;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
i = _i$1;
c$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
if (upper && 97 <= c$1 && c$1 <= 122) {
c$1 = c$1 - (32) << 24 >>> 24;
} else if (!upper && 65 <= c$1 && c$1 <= 90) {
c$1 = c$1 + (32) << 24 >>> 24;
}
((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = c$1);
upper = c$1 === 45;
_i$1++;
}
v = (_entry = commonHeader[$String.keyFor(($bytesToString(a)))], _entry !== undefined ? _entry.v : "");
if (!(v === "")) {
return v;
}
return ($bytesToString(a));
};
init = function() {
var $ptr, _i, _key, _ref, v;
_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"]);
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_key = v; (commonHeader || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: v };
_i++;
}
};
Error.ptr.prototype.Error = function() {
var $ptr, _r, e, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
e = this;
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Error.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
};
Error.prototype.Error = function() { return this.$val.Error(); };
ProtocolError.prototype.Error = function() {
var $ptr, p;
p = this.$val;
return (p);
};
$ptrType(ProtocolError).prototype.Error = function() { return new ProtocolError(this.$get()).Error(); };
TrimString = function(s) {
var $ptr, s;
while (true) {
if (!(s.length > 0 && isASCIISpace(s.charCodeAt(0)))) { break; }
s = $substring(s, 1);
}
while (true) {
if (!(s.length > 0 && isASCIISpace(s.charCodeAt((s.length - 1 >> 0))))) { break; }
s = $substring(s, 0, (s.length - 1 >> 0));
}
return s;
};
$pkg.TrimString = TrimString;
isASCIISpace = function(b) {
var $ptr, b;
return (b === 32) || (b === 9) || (b === 10) || (b === 13);
};
isASCIILetter = function(b) {
var $ptr, b;
b = (b | (32)) >>> 0;
return 97 <= b && b <= 122;
};
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)}];
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)}];
ptrType$1.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}];
ptrType$9.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
ProtocolError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
MIMEHeader.init($String, sliceType$1);
Reader.init("net/textproto", [{prop: "R", name: "R", exported: true, typ: ptrType, tag: ""}, {prop: "dot", name: "dot", exported: false, typ: ptrType$1, tag: ""}, {prop: "buf", name: "buf", exported: false, typ: sliceType, tag: ""}]);
dotReader.init("net/textproto", [{prop: "r", name: "r", exported: false, typ: ptrType$2, tag: ""}, {prop: "state", name: "state", exported: false, typ: $Int, tag: ""}]);
Error.init("", [{prop: "Code", name: "Code", exported: true, typ: $Int, tag: ""}, {prop: "Msg", name: "Msg", exported: true, typ: $String, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = bytes.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = fmt.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = ioutil.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = net.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strconv.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strings.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sync.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
commonHeader = {};
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]);
init();
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["mime/multipart"] = (function() {
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;
bufio = $packages["bufio"];
bytes = $packages["bytes"];
rand = $packages["crypto/rand"];
errors = $packages["errors"];
fmt = $packages["fmt"];
io = $packages["io"];
ioutil = $packages["io/ioutil"];
mime = $packages["mime"];
quotedprintable = $packages["mime/quotedprintable"];
textproto = $packages["net/textproto"];
os = $packages["os"];
sort = $packages["sort"];
strings = $packages["strings"];
Form = $pkg.Form = $newType(0, $kindStruct, "multipart.Form", true, "mime/multipart", true, function(Value_, File_) {
this.$val = this;
if (arguments.length === 0) {
this.Value = false;
this.File = false;
return;
}
this.Value = Value_;
this.File = File_;
});
FileHeader = $pkg.FileHeader = $newType(0, $kindStruct, "multipart.FileHeader", true, "mime/multipart", true, function(Filename_, Header_, content_, tmpfile_) {
this.$val = this;
if (arguments.length === 0) {
this.Filename = "";
this.Header = false;
this.content = sliceType$1.nil;
this.tmpfile = "";
return;
}
this.Filename = Filename_;
this.Header = Header_;
this.content = content_;
this.tmpfile = tmpfile_;
});
File = $pkg.File = $newType(8, $kindInterface, "multipart.File", true, "mime/multipart", true, null);
sectionReadCloser = $pkg.sectionReadCloser = $newType(0, $kindStruct, "multipart.sectionReadCloser", true, "mime/multipart", false, function(SectionReader_) {
this.$val = this;
if (arguments.length === 0) {
this.SectionReader = ptrType$7.nil;
return;
}
this.SectionReader = SectionReader_;
});
Part = $pkg.Part = $newType(0, $kindStruct, "multipart.Part", true, "mime/multipart", true, function(Header_, mr_, disposition_, dispositionParams_, r_, n_, total_, err_, readErr_) {
this.$val = this;
if (arguments.length === 0) {
this.Header = false;
this.mr = ptrType$4.nil;
this.disposition = "";
this.dispositionParams = false;
this.r = $ifaceNil;
this.n = 0;
this.total = new $Int64(0, 0);
this.err = $ifaceNil;
this.readErr = $ifaceNil;
return;
}
this.Header = Header_;
this.mr = mr_;
this.disposition = disposition_;
this.dispositionParams = dispositionParams_;
this.r = r_;
this.n = n_;
this.total = total_;
this.err = err_;
this.readErr = readErr_;
});
stickyErrorReader = $pkg.stickyErrorReader = $newType(0, $kindStruct, "multipart.stickyErrorReader", true, "mime/multipart", false, function(r_, err_) {
this.$val = this;
if (arguments.length === 0) {
this.r = $ifaceNil;
this.err = $ifaceNil;
return;
}
this.r = r_;
this.err = err_;
});
partReader = $pkg.partReader = $newType(0, $kindStruct, "multipart.partReader", true, "mime/multipart", false, function(p_) {
this.$val = this;
if (arguments.length === 0) {
this.p = ptrType$3.nil;
return;
}
this.p = p_;
});
Reader = $pkg.Reader = $newType(0, $kindStruct, "multipart.Reader", true, "mime/multipart", true, function(bufReader_, currentPart_, partsRead_, nl_, nlDashBoundary_, dashBoundaryDash_, dashBoundary_) {
this.$val = this;
if (arguments.length === 0) {
this.bufReader = ptrType$2.nil;
this.currentPart = ptrType$3.nil;
this.partsRead = 0;
this.nl = sliceType$1.nil;
this.nlDashBoundary = sliceType$1.nil;
this.dashBoundaryDash = sliceType$1.nil;
this.dashBoundary = sliceType$1.nil;
return;
}
this.bufReader = bufReader_;
this.currentPart = currentPart_;
this.partsRead = partsRead_;
this.nl = nl_;
this.nlDashBoundary = nlDashBoundary_;
this.dashBoundaryDash = dashBoundaryDash_;
this.dashBoundary = dashBoundary_;
});
sliceType = $sliceType($String);
ptrType = $ptrType(Form);
sliceType$1 = $sliceType($Uint8);
arrayType = $arrayType($Uint8, 64);
sliceType$2 = $sliceType(io.Reader);
ptrType$1 = $ptrType(FileHeader);
sliceType$3 = $sliceType(ptrType$1);
ptrType$2 = $ptrType(bufio.Reader);
ptrType$3 = $ptrType(Part);
ptrType$4 = $ptrType(Reader);
sliceType$4 = $sliceType($emptyInterface);
mapType = $mapType($String, sliceType);
mapType$1 = $mapType($String, sliceType$3);
ptrType$7 = $ptrType(io.SectionReader);
mapType$2 = $mapType($String, $String);
ptrType$8 = $ptrType(stickyErrorReader);
Reader.ptr.prototype.ReadForm = function(maxMemory) {
var $ptr, _r, maxMemory, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; maxMemory = $f.maxMemory; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
_r = r.readForm(maxMemory); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadForm }; } $f.$ptr = $ptr; $f._r = _r; $f.maxMemory = maxMemory; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
Reader.prototype.ReadForm = function(maxMemory) { return this.$val.ReadForm(maxMemory); };
Reader.ptr.prototype.readForm = function(maxMemory) {
var $ptr, _, _entry, _entry$1, _key, _key$1, _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$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, cerr, err, err$1, err$2, err$3, fh, file, filename, form, maxMemory, maxValueBytes, n, n$1, name, p, r, x, x$1, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ = $f._; _entry = $f._entry; _entry$1 = $f._entry$1; _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; _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; 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; maxMemory = $f.maxMemory; maxValueBytes = $f.maxValueBytes; n = $f.n; n$1 = $f.n$1; name = $f.name; p = $f.p; r = $f.r; 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);
err = [err];
form = [form];
_ = ptrType.nil;
err[0] = $ifaceNil;
r = this;
form[0] = new Form.ptr({}, {});
$deferred.push([(function(err, form) { return function() {
var $ptr;
if (!($interfaceIsEqual(err[0], $ifaceNil))) {
form[0].RemoveAll();
}
}; })(err, form), []]);
maxValueBytes = new $Int64(0, 10485760);
/* while (true) { */ case 1:
b = [b];
_r = r.NextPart(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
p = _tuple[0];
err$1 = _tuple[1];
if ($interfaceIsEqual(err$1, io.EOF)) {
/* break; */ $s = 2; continue;
}
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
_tmp = ptrType.nil;
_tmp$1 = err$1;
_ = _tmp;
err[0] = _tmp$1;
$s = -1; return [_, err[0]];
}
_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; }
name = _r$1;
/* */ if (name === "") { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (name === "") { */ case 5:
/* continue; */ $s = 1; continue;
/* } */ case 6:
_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; }
filename = _r$2;
b[0] = new bytes.Buffer.ptr(sliceType$1.nil, 0, arrayType.zero(), 0);
/* */ if (filename === "") { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (filename === "") { */ case 8:
_r$3 = io.CopyN(b[0], p, maxValueBytes); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$1 = _r$3;
n = _tuple$1[0];
err$2 = _tuple$1[1];
if (!($interfaceIsEqual(err$2, $ifaceNil)) && !($interfaceIsEqual(err$2, io.EOF))) {
_tmp$2 = ptrType.nil;
_tmp$3 = err$2;
_ = _tmp$2;
err[0] = _tmp$3;
$s = -1; return [_, err[0]];
}
maxValueBytes = (x = n, new $Int64(maxValueBytes.$high - x.$high, maxValueBytes.$low - x.$low));
if ((maxValueBytes.$high === 0 && maxValueBytes.$low === 0)) {
_tmp$4 = ptrType.nil;
_tmp$5 = errors.New("multipart: message too large");
_ = _tmp$4;
err[0] = _tmp$5;
$s = -1; return [_, err[0]];
}
_key = name; (form[0].Value || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: $append((_entry = form[0].Value[$String.keyFor(name)], _entry !== undefined ? _entry.v : sliceType.nil), b[0].String()) };
/* continue; */ $s = 1; continue;
/* } */ case 9:
fh = new FileHeader.ptr(filename, p.Header, sliceType$1.nil, "");
_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; }
_tuple$2 = _r$4;
n$1 = _tuple$2[0];
err$1 = _tuple$2[1];
if (!($interfaceIsEqual(err$1, $ifaceNil)) && !($interfaceIsEqual(err$1, io.EOF))) {
_tmp$6 = ptrType.nil;
_tmp$7 = err$1;
_ = _tmp$6;
err[0] = _tmp$7;
$s = -1; return [_, err[0]];
}
/* */ if ((n$1.$high > maxMemory.$high || (n$1.$high === maxMemory.$high && n$1.$low > maxMemory.$low))) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if ((n$1.$high > maxMemory.$high || (n$1.$high === maxMemory.$high && n$1.$low > maxMemory.$low))) { */ case 12:
_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; }
_tuple$3 = _r$5;
file = _tuple$3[0];
err$3 = _tuple$3[1];
if (!($interfaceIsEqual(err$3, $ifaceNil))) {
_tmp$8 = ptrType.nil;
_tmp$9 = err$3;
_ = _tmp$8;
err[0] = _tmp$9;
$s = -1; return [_, err[0]];
}
_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; }
_tuple$4 = _r$6;
err$3 = _tuple$4[1];
cerr = file.Close();
if ($interfaceIsEqual(err$3, $ifaceNil)) {
err$3 = cerr;
}
if (!($interfaceIsEqual(err$3, $ifaceNil))) {
os.Remove(file.Name());
_tmp$10 = ptrType.nil;
_tmp$11 = err$3;
_ = _tmp$10;
err[0] = _tmp$11;
$s = -1; return [_, err[0]];
}
fh.tmpfile = file.Name();
$s = 14; continue;
/* } else { */ case 13:
fh.content = b[0].Bytes();
maxMemory = (x$1 = n$1, new $Int64(maxMemory.$high - x$1.$high, maxMemory.$low - x$1.$low));
/* } */ case 14:
_key$1 = name; (form[0].File || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$1)] = { k: _key$1, v: $append((_entry$1 = form[0].File[$String.keyFor(name)], _entry$1 !== undefined ? _entry$1.v : sliceType$3.nil), fh) };
/* } */ $s = 1; continue; case 2:
_tmp$12 = form[0];
_tmp$13 = $ifaceNil;
_ = _tmp$12;
err[0] = _tmp$13;
$s = -1; return [_, err[0]];
/* */ } 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.$ptr = $ptr; $f._ = _; $f._entry = _entry; $f._entry$1 = _entry$1; $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._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.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.maxMemory = maxMemory; $f.maxValueBytes = maxValueBytes; $f.n = n; $f.n$1 = n$1; $f.name = name; $f.p = p; $f.r = r; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Reader.prototype.readForm = function(maxMemory) { return this.$val.readForm(maxMemory); };
Form.ptr.prototype.RemoveAll = function() {
var $ptr, _entry, _i, _i$1, _keys, _ref, _ref$1, e, err, f, fh, fhs;
f = this;
err = $ifaceNil;
_ref = f.File;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
continue;
}
fhs = _entry.v;
_ref$1 = fhs;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
fh = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
if (!(fh.tmpfile === "")) {
e = os.Remove(fh.tmpfile);
if (!($interfaceIsEqual(e, $ifaceNil)) && $interfaceIsEqual(err, $ifaceNil)) {
err = e;
}
}
_i$1++;
}
_i++;
}
return err;
};
Form.prototype.RemoveAll = function() { return this.$val.RemoveAll(); };
FileHeader.ptr.prototype.Open = function() {
var $ptr, _returncast, b, fh, r, x;
fh = this;
b = fh.content;
if (!(b === sliceType$1.nil)) {
r = io.NewSectionReader(bytes.NewReader(b), new $Int64(0, 0), (new $Int64(0, b.$length)));
return [(x = new sectionReadCloser.ptr(r), new x.constructor.elem(x)), $ifaceNil];
}
_returncast = os.Open(fh.tmpfile);
return [_returncast[0], _returncast[1]];
};
FileHeader.prototype.Open = function() { return this.$val.Open(); };
sectionReadCloser.ptr.prototype.Close = function() {
var $ptr, rc;
rc = this;
return $ifaceNil;
};
sectionReadCloser.prototype.Close = function() { return this.$val.Close(); };
Part.ptr.prototype.FormName = function() {
var $ptr, _entry, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
p = this;
/* */ if (p.dispositionParams === false) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (p.dispositionParams === false) { */ case 1:
$r = p.parseContentDisposition(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
if (!(p.disposition === "form-data")) {
$s = -1; return "";
}
$s = -1; return (_entry = p.dispositionParams[$String.keyFor("name")], _entry !== undefined ? _entry.v : "");
/* */ } return; } if ($f === undefined) { $f = { $blk: Part.ptr.prototype.FormName }; } $f.$ptr = $ptr; $f._entry = _entry; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
};
Part.prototype.FormName = function() { return this.$val.FormName(); };
Part.ptr.prototype.FileName = function() {
var $ptr, _entry, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
p = this;
/* */ if (p.dispositionParams === false) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (p.dispositionParams === false) { */ case 1:
$r = p.parseContentDisposition(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
$s = -1; return (_entry = p.dispositionParams[$String.keyFor("filename")], _entry !== undefined ? _entry.v : "");
/* */ } return; } if ($f === undefined) { $f = { $blk: Part.ptr.prototype.FileName }; } $f.$ptr = $ptr; $f._entry = _entry; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
};
Part.prototype.FileName = function() { return this.$val.FileName(); };
Part.ptr.prototype.parseContentDisposition = function() {
var $ptr, _r, _tuple, err, p, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
p = this;
v = new textproto.MIMEHeader(p.Header).Get("Content-Disposition");
err = $ifaceNil;
_r = mime.ParseMediaType(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
p.disposition = _tuple[0];
p.dispositionParams = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
p.dispositionParams = emptyParams;
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Part.ptr.prototype.parseContentDisposition }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.p = p; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
Part.prototype.parseContentDisposition = function() { return this.$val.parseContentDisposition(); };
NewReader = function(r, boundary) {
var $ptr, b, boundary, r;
b = (new sliceType$1($stringToBytes("\r\n--" + boundary + "--")));
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)));
};
$pkg.NewReader = NewReader;
stickyErrorReader.ptr.prototype.Read = function(p) {
var $ptr, _, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, n, p, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ = $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:
n = 0;
_ = $ifaceNil;
r = this;
if (!($interfaceIsEqual(r.err, $ifaceNil))) {
_tmp = 0;
_tmp$1 = r.err;
n = _tmp;
_ = _tmp$1;
$s = -1; return [n, _];
}
_r = r.r.Read(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
r.err = _tuple[1];
_tmp$2 = n;
_tmp$3 = r.err;
n = _tmp$2;
_ = _tmp$3;
$s = -1; return [n, _];
/* */ } return; } if ($f === undefined) { $f = { $blk: stickyErrorReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $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;
};
stickyErrorReader.prototype.Read = function(p) { return this.$val.Read(p); };
newPart = function(mr) {
var $ptr, _r, bp, err, mr, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
bp = new Part.ptr({}, mr, "", false, $ifaceNil, 0, new $Int64(0, 0), $ifaceNil, $ifaceNil);
_r = bp.populateHeaders(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$3.nil, err];
}
bp.r = (x = new partReader.ptr(bp), new x.constructor.elem(x));
if (new textproto.MIMEHeader(bp.Header).Get("Content-Transfer-Encoding") === "quoted-printable") {
new textproto.MIMEHeader(bp.Header).Del("Content-Transfer-Encoding");
bp.r = quotedprintable.NewReader(bp.r);
}
$s = -1; return [bp, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: newPart }; } $f.$ptr = $ptr; $f._r = _r; $f.bp = bp; $f.err = err; $f.mr = mr; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
Part.ptr.prototype.populateHeaders = function() {
var $ptr, _r, _tuple, bp, err, header, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
bp = this;
r = textproto.NewReader(bp.mr.bufReader);
_r = r.ReadMIMEHeader(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
header = _tuple[0];
err = _tuple[1];
if ($interfaceIsEqual(err, $ifaceNil)) {
bp.Header = header;
}
$s = -1; return err;
/* */ } return; } if ($f === undefined) { $f = { $blk: Part.ptr.prototype.populateHeaders }; } $f.$ptr = $ptr; $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;
};
Part.prototype.populateHeaders = function() { return this.$val.populateHeaders(); };
Part.ptr.prototype.Read = function(d) {
var $ptr, _r, _tuple, d, err, n, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
p = this;
_r = p.r.Read(d); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Part.ptr.prototype.Read }; } $f.$ptr = $ptr; $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;
};
Part.prototype.Read = function(d) { return this.$val.Read(d); };
partReader.ptr.prototype.Read = function(d) {
var $ptr, _r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, _tuple$3, br, d, n, p, peek, pr, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
pr = this;
p = pr.p;
br = p.mr.bufReader;
/* while (true) { */ case 1:
/* if (!((p.n === 0) && $interfaceIsEqual(p.err, $ifaceNil))) { break; } */ if(!((p.n === 0) && $interfaceIsEqual(p.err, $ifaceNil))) { $s = 2; continue; }
_r = br.Peek(br.Buffered()); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
peek = _tuple[0];
_tuple$1 = scanUntilBoundary(peek, p.mr.dashBoundary, p.mr.nlDashBoundary, p.total, p.readErr);
p.n = _tuple$1[0];
p.err = _tuple$1[1];
/* */ if ((p.n === 0) && $interfaceIsEqual(p.err, $ifaceNil)) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if ((p.n === 0) && $interfaceIsEqual(p.err, $ifaceNil)) { */ case 4:
_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; }
_tuple$2 = _r$1;
p.readErr = _tuple$2[1];
if ($interfaceIsEqual(p.readErr, io.EOF)) {
p.readErr = io.ErrUnexpectedEOF;
}
/* } */ case 5:
/* } */ $s = 1; continue; case 2:
if (p.n === 0) {
$s = -1; return [0, p.err];
}
n = d.$length;
if (n > p.n) {
n = p.n;
}
_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; }
_tuple$3 = _r$2;
n = _tuple$3[0];
p.total = (x = p.total, x$1 = (new $Int64(0, n)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
p.n = p.n - (n) >> 0;
if (p.n === 0) {
$s = -1; return [n, p.err];
}
$s = -1; return [n, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: partReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $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;
};
partReader.prototype.Read = function(d) { return this.$val.Read(d); };
scanUntilBoundary = function(buf, dashBoundary, nlDashBoundary, total, readErr) {
var $ptr, _1, _2, buf, dashBoundary, i, i$1, nlDashBoundary, readErr, total;
if ((total.$high === 0 && total.$low === 0)) {
if (bytes.HasPrefix(buf, dashBoundary)) {
_1 = matchAfterPrefix(buf, dashBoundary, readErr);
if (_1 === (-1)) {
return [dashBoundary.$length, $ifaceNil];
} else if (_1 === (0)) {
return [0, $ifaceNil];
} else if (_1 === (1)) {
return [0, io.EOF];
}
}
if (bytes.HasPrefix(dashBoundary, buf)) {
return [0, readErr];
}
}
i = bytes.Index(buf, nlDashBoundary);
if (i >= 0) {
_2 = matchAfterPrefix($subslice(buf, i), nlDashBoundary, readErr);
if (_2 === (-1)) {
return [i + nlDashBoundary.$length >> 0, $ifaceNil];
} else if (_2 === (0)) {
return [i, $ifaceNil];
} else if (_2 === (1)) {
return [i, io.EOF];
}
}
if (bytes.HasPrefix(nlDashBoundary, buf)) {
return [0, readErr];
}
i$1 = bytes.LastIndexByte(buf, (0 >= nlDashBoundary.$length ? ($throwRuntimeError("index out of range"), undefined) : nlDashBoundary.$array[nlDashBoundary.$offset + 0]));
if (i$1 >= 0 && bytes.HasPrefix(nlDashBoundary, $subslice(buf, i$1))) {
return [i$1, $ifaceNil];
}
return [buf.$length, readErr];
};
matchAfterPrefix = function(buf, prefix, readErr) {
var $ptr, buf, c, prefix, readErr, x;
if (buf.$length === prefix.$length) {
if (!($interfaceIsEqual(readErr, $ifaceNil))) {
return 1;
}
return 0;
}
c = (x = prefix.$length, ((x < 0 || x >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + x]));
if ((c === 32) || (c === 9) || (c === 13) || (c === 10) || (c === 45)) {
return 1;
}
return -1;
};
Part.ptr.prototype.Close = function() {
var $ptr, _r, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
p = this;
_r = io.Copy(ioutil.Discard, p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: Part.ptr.prototype.Close }; } $f.$ptr = $ptr; $f._r = _r; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
};
Part.prototype.Close = function() { return this.$val.Close(); };
Reader.ptr.prototype.NextPart = function() {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, bp, err, err$1, expectNewPart, line, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
r = this;
/* */ if (!(r.currentPart === ptrType$3.nil)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(r.currentPart === ptrType$3.nil)) { */ case 1:
_r = r.currentPart.Close(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
/* } */ case 2:
expectNewPart = false;
/* while (true) { */ case 4:
_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; }
_tuple = _r$1;
line = _tuple[0];
err = _tuple[1];
if ($interfaceIsEqual(err, io.EOF) && r.isFinalBoundary(line)) {
$s = -1; return [ptrType$3.nil, io.EOF];
}
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 7:
_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; }
$s = -1; return [ptrType$3.nil, _r$2];
/* } */ case 8:
/* */ if (r.isBoundaryDelimiterLine(line)) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (r.isBoundaryDelimiterLine(line)) { */ case 10:
r.partsRead = r.partsRead + (1) >> 0;
_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; }
_tuple$1 = _r$3;
bp = _tuple$1[0];
err$1 = _tuple$1[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return [ptrType$3.nil, err$1];
}
r.currentPart = bp;
$s = -1; return [bp, $ifaceNil];
/* } */ case 11:
if (r.isFinalBoundary(line)) {
$s = -1; return [ptrType$3.nil, io.EOF];
}
/* */ if (expectNewPart) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (expectNewPart) { */ case 13:
_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; }
$s = -1; return [ptrType$3.nil, _r$4];
/* } */ case 14:
/* */ if (r.partsRead === 0) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (r.partsRead === 0) { */ case 16:
/* continue; */ $s = 4; continue;
/* } */ case 17:
/* */ if (bytes.Equal(line, r.nl)) { $s = 18; continue; }
/* */ $s = 19; continue;
/* if (bytes.Equal(line, r.nl)) { */ case 18:
expectNewPart = true;
/* continue; */ $s = 4; continue;
/* } */ case 19:
_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; }
$s = -1; return [ptrType$3.nil, _r$5];
/* } */ $s = 4; continue; case 5:
$s = -1; return [ptrType$3.nil, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.NextPart }; } $f.$ptr = $ptr; $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;
};
Reader.prototype.NextPart = function() { return this.$val.NextPart(); };
Reader.ptr.prototype.isFinalBoundary = function(line) {
var $ptr, line, mr, rest;
mr = this;
if (!bytes.HasPrefix(line, mr.dashBoundaryDash)) {
return false;
}
rest = $subslice(line, mr.dashBoundaryDash.$length);
rest = skipLWSPChar(rest);
return (rest.$length === 0) || bytes.Equal(rest, mr.nl);
};
Reader.prototype.isFinalBoundary = function(line) { return this.$val.isFinalBoundary(line); };
Reader.ptr.prototype.isBoundaryDelimiterLine = function(line) {
var $ptr, line, mr, rest, ret;
ret = false;
mr = this;
if (!bytes.HasPrefix(line, mr.dashBoundary)) {
ret = false;
return ret;
}
rest = $subslice(line, mr.dashBoundary.$length);
rest = skipLWSPChar(rest);
if ((mr.partsRead === 0) && (rest.$length === 1) && ((0 >= rest.$length ? ($throwRuntimeError("index out of range"), undefined) : rest.$array[rest.$offset + 0]) === 10)) {
mr.nl = $subslice(mr.nl, 1);
mr.nlDashBoundary = $subslice(mr.nlDashBoundary, 1);
}
ret = bytes.Equal(rest, mr.nl);
return ret;
};
Reader.prototype.isBoundaryDelimiterLine = function(line) { return this.$val.isBoundaryDelimiterLine(line); };
skipLWSPChar = function(b) {
var $ptr, b;
while (true) {
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; }
b = $subslice(b, 1);
}
return b;
};
ptrType.methods = [{prop: "RemoveAll", name: "RemoveAll", pkg: "", typ: $funcType([], [$error], false)}];
ptrType$1.methods = [{prop: "Open", name: "Open", pkg: "", typ: $funcType([], [File, $error], false)}];
sectionReadCloser.methods = [{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
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)}];
ptrType$8.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}];
partReader.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}];
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)}];
Form.init("", [{prop: "Value", name: "Value", exported: true, typ: mapType, tag: ""}, {prop: "File", name: "File", exported: true, typ: mapType$1, tag: ""}]);
FileHeader.init("mime/multipart", [{prop: "Filename", name: "Filename", exported: true, typ: $String, tag: ""}, {prop: "Header", name: "Header", exported: true, typ: textproto.MIMEHeader, tag: ""}, {prop: "content", name: "content", exported: false, typ: sliceType$1, tag: ""}, {prop: "tmpfile", name: "tmpfile", exported: false, typ: $String, tag: ""}]);
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)}]);
sectionReadCloser.init("", [{prop: "SectionReader", name: "", exported: true, typ: ptrType$7, tag: ""}]);
Part.init("mime/multipart", [{prop: "Header", name: "Header", exported: true, typ: textproto.MIMEHeader, tag: ""}, {prop: "mr", name: "mr", exported: false, typ: ptrType$4, tag: ""}, {prop: "disposition", name: "disposition", exported: false, typ: $String, tag: ""}, {prop: "dispositionParams", name: "dispositionParams", exported: false, typ: mapType$2, tag: ""}, {prop: "r", name: "r", exported: false, typ: io.Reader, tag: ""}, {prop: "n", name: "n", exported: false, typ: $Int, tag: ""}, {prop: "total", name: "total", exported: false, typ: $Int64, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}, {prop: "readErr", name: "readErr", exported: false, typ: $error, tag: ""}]);
stickyErrorReader.init("mime/multipart", [{prop: "r", name: "r", exported: false, typ: io.Reader, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}]);
partReader.init("mime/multipart", [{prop: "p", name: "p", exported: false, typ: ptrType$3, tag: ""}]);
Reader.init("mime/multipart", [{prop: "bufReader", name: "bufReader", exported: false, typ: ptrType$2, tag: ""}, {prop: "currentPart", name: "currentPart", exported: false, typ: ptrType$3, tag: ""}, {prop: "partsRead", name: "partsRead", exported: false, typ: $Int, tag: ""}, {prop: "nl", name: "nl", exported: false, typ: sliceType$1, tag: ""}, {prop: "nlDashBoundary", name: "nlDashBoundary", exported: false, typ: sliceType$1, tag: ""}, {prop: "dashBoundaryDash", name: "dashBoundaryDash", exported: false, typ: sliceType$1, tag: ""}, {prop: "dashBoundary", name: "dashBoundary", exported: false, typ: sliceType$1, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = bytes.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = rand.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = errors.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = fmt.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = ioutil.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = mime.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = quotedprintable.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = textproto.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = os.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sort.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strings.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
emptyParams = {};
quoteEscaper = strings.NewReplacer(new sliceType(["\\", "\\\\", "\"", "\\\""]));
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["net/http/httptrace"] = (function() {
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;
context = $packages["context"];
tls = $packages["crypto/tls"];
nettrace = $packages["internal/nettrace"];
net = $packages["net"];
reflect = $packages["reflect"];
time = $packages["time"];
clientEventContextKey = $pkg.clientEventContextKey = $newType(0, $kindStruct, "httptrace.clientEventContextKey", true, "net/http/httptrace", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
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_) {
this.$val = this;
if (arguments.length === 0) {
this.GetConn = $throwNilPointerError;
this.GotConn = $throwNilPointerError;
this.PutIdleConn = $throwNilPointerError;
this.GotFirstResponseByte = $throwNilPointerError;
this.Got100Continue = $throwNilPointerError;
this.DNSStart = $throwNilPointerError;
this.DNSDone = $throwNilPointerError;
this.ConnectStart = $throwNilPointerError;
this.ConnectDone = $throwNilPointerError;
this.TLSHandshakeStart = $throwNilPointerError;
this.TLSHandshakeDone = $throwNilPointerError;
this.WroteHeaders = $throwNilPointerError;
this.Wait100Continue = $throwNilPointerError;
this.WroteRequest = $throwNilPointerError;
return;
}
this.GetConn = GetConn_;
this.GotConn = GotConn_;
this.PutIdleConn = PutIdleConn_;
this.GotFirstResponseByte = GotFirstResponseByte_;
this.Got100Continue = Got100Continue_;
this.DNSStart = DNSStart_;
this.DNSDone = DNSDone_;
this.ConnectStart = ConnectStart_;
this.ConnectDone = ConnectDone_;
this.TLSHandshakeStart = TLSHandshakeStart_;
this.TLSHandshakeDone = TLSHandshakeDone_;
this.WroteHeaders = WroteHeaders_;
this.Wait100Continue = Wait100Continue_;
this.WroteRequest = WroteRequest_;
});
WroteRequestInfo = $pkg.WroteRequestInfo = $newType(0, $kindStruct, "httptrace.WroteRequestInfo", true, "net/http/httptrace", true, function(Err_) {
this.$val = this;
if (arguments.length === 0) {
this.Err = $ifaceNil;
return;
}
this.Err = Err_;
});
DNSStartInfo = $pkg.DNSStartInfo = $newType(0, $kindStruct, "httptrace.DNSStartInfo", true, "net/http/httptrace", true, function(Host_) {
this.$val = this;
if (arguments.length === 0) {
this.Host = "";
return;
}
this.Host = Host_;
});
DNSDoneInfo = $pkg.DNSDoneInfo = $newType(0, $kindStruct, "httptrace.DNSDoneInfo", true, "net/http/httptrace", true, function(Addrs_, Err_, Coalesced_) {
this.$val = this;
if (arguments.length === 0) {
this.Addrs = sliceType.nil;
this.Err = $ifaceNil;
this.Coalesced = false;
return;
}
this.Addrs = Addrs_;
this.Err = Err_;
this.Coalesced = Coalesced_;
});
GotConnInfo = $pkg.GotConnInfo = $newType(0, $kindStruct, "httptrace.GotConnInfo", true, "net/http/httptrace", true, function(Conn_, Reused_, WasIdle_, IdleTime_) {
this.$val = this;
if (arguments.length === 0) {
this.Conn = $ifaceNil;
this.Reused = false;
this.WasIdle = false;
this.IdleTime = new time.Duration(0, 0);
return;
}
this.Conn = Conn_;
this.Reused = Reused_;
this.WasIdle = WasIdle_;
this.IdleTime = IdleTime_;
});
ptrType = $ptrType(ClientTrace);
sliceType = $sliceType(net.IPAddr);
funcType = $funcType([$String], [], false);
funcType$1 = $funcType([GotConnInfo], [], false);
funcType$2 = $funcType([$error], [], false);
funcType$3 = $funcType([], [], false);
funcType$4 = $funcType([DNSStartInfo], [], false);
funcType$5 = $funcType([DNSDoneInfo], [], false);
funcType$6 = $funcType([$String, $String], [], false);
funcType$7 = $funcType([$String, $String, $error], [], false);
funcType$8 = $funcType([tls.ConnectionState, $error], [], false);
funcType$9 = $funcType([WroteRequestInfo], [], false);
ContextClientTrace = function(ctx) {
var $ptr, _r, _tuple, ctx, trace, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_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; }
_tuple = $assertType(_r, ptrType, true);
trace = _tuple[0];
$s = -1; return trace;
/* */ } return; } if ($f === undefined) { $f = { $blk: ContextClientTrace }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.ctx = ctx; $f.trace = trace; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.ContextClientTrace = ContextClientTrace;
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)}];
clientEventContextKey.init("", []);
ClientTrace.init("", [{prop: "GetConn", name: "GetConn", exported: true, typ: funcType, tag: ""}, {prop: "GotConn", name: "GotConn", exported: true, typ: funcType$1, tag: ""}, {prop: "PutIdleConn", name: "PutIdleConn", exported: true, typ: funcType$2, tag: ""}, {prop: "GotFirstResponseByte", name: "GotFirstResponseByte", exported: true, typ: funcType$3, tag: ""}, {prop: "Got100Continue", name: "Got100Continue", exported: true, typ: funcType$3, tag: ""}, {prop: "DNSStart", name: "DNSStart", exported: true, typ: funcType$4, tag: ""}, {prop: "DNSDone", name: "DNSDone", exported: true, typ: funcType$5, tag: ""}, {prop: "ConnectStart", name: "ConnectStart", exported: true, typ: funcType$6, tag: ""}, {prop: "ConnectDone", name: "ConnectDone", exported: true, typ: funcType$7, tag: ""}, {prop: "TLSHandshakeStart", name: "TLSHandshakeStart", exported: true, typ: funcType$3, tag: ""}, {prop: "TLSHandshakeDone", name: "TLSHandshakeDone", exported: true, typ: funcType$8, tag: ""}, {prop: "WroteHeaders", name: "WroteHeaders", exported: true, typ: funcType$3, tag: ""}, {prop: "Wait100Continue", name: "Wait100Continue", exported: true, typ: funcType$3, tag: ""}, {prop: "WroteRequest", name: "WroteRequest", exported: true, typ: funcType$9, tag: ""}]);
WroteRequestInfo.init("", [{prop: "Err", name: "Err", exported: true, typ: $error, tag: ""}]);
DNSStartInfo.init("", [{prop: "Host", name: "Host", exported: true, typ: $String, tag: ""}]);
DNSDoneInfo.init("", [{prop: "Addrs", name: "Addrs", exported: true, typ: sliceType, tag: ""}, {prop: "Err", name: "Err", exported: true, typ: $error, tag: ""}, {prop: "Coalesced", name: "Coalesced", exported: true, typ: $Bool, tag: ""}]);
GotConnInfo.init("", [{prop: "Conn", name: "Conn", exported: true, typ: net.Conn, tag: ""}, {prop: "Reused", name: "Reused", exported: true, typ: $Bool, tag: ""}, {prop: "WasIdle", name: "WasIdle", exported: true, typ: $Bool, tag: ""}, {prop: "IdleTime", name: "IdleTime", exported: true, typ: time.Duration, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = context.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = tls.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = nettrace.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = net.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = reflect.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = time.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["net/http/internal"] = (function() {
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;
bufio = $packages["bufio"];
bytes = $packages["bytes"];
errors = $packages["errors"];
fmt = $packages["fmt"];
io = $packages["io"];
chunkedReader = $pkg.chunkedReader = $newType(0, $kindStruct, "internal.chunkedReader", true, "net/http/internal", false, function(r_, n_, err_, buf_, checkEnd_) {
this.$val = this;
if (arguments.length === 0) {
this.r = ptrType.nil;
this.n = new $Uint64(0, 0);
this.err = $ifaceNil;
this.buf = arrayType.zero();
this.checkEnd = false;
return;
}
this.r = r_;
this.n = n_;
this.err = err_;
this.buf = buf_;
this.checkEnd = checkEnd_;
});
chunkedWriter = $pkg.chunkedWriter = $newType(0, $kindStruct, "internal.chunkedWriter", true, "net/http/internal", false, function(Wire_) {
this.$val = this;
if (arguments.length === 0) {
this.Wire = $ifaceNil;
return;
}
this.Wire = Wire_;
});
FlushAfterChunkWriter = $pkg.FlushAfterChunkWriter = $newType(0, $kindStruct, "internal.FlushAfterChunkWriter", true, "net/http/internal", true, function(Writer_) {
this.$val = this;
if (arguments.length === 0) {
this.Writer = ptrType$4.nil;
return;
}
this.Writer = Writer_;
});
sliceType = $sliceType($Uint8);
ptrType = $ptrType(bufio.Reader);
arrayType = $arrayType($Uint8, 2);
sliceType$1 = $sliceType($emptyInterface);
ptrType$1 = $ptrType(FlushAfterChunkWriter);
ptrType$2 = $ptrType(chunkedReader);
ptrType$3 = $ptrType(chunkedWriter);
ptrType$4 = $ptrType(bufio.Writer);
NewChunkedReader = function(r) {
var $ptr, _tuple, br, ok, r;
_tuple = $assertType(r, ptrType, true);
br = _tuple[0];
ok = _tuple[1];
if (!ok) {
br = bufio.NewReader(r);
}
return new chunkedReader.ptr(br, new $Uint64(0, 0), $ifaceNil, arrayType.zero(), false);
};
$pkg.NewChunkedReader = NewChunkedReader;
chunkedReader.ptr.prototype.beginChunk = function() {
var $ptr, _r, _tuple, _tuple$1, cr, line, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
cr = this;
line = sliceType.nil;
_r = readChunkLine(cr.r); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
line = _tuple[0];
cr.err = _tuple[1];
if (!($interfaceIsEqual(cr.err, $ifaceNil))) {
$s = -1; return;
}
_tuple$1 = parseHexUint(line);
cr.n = _tuple$1[0];
cr.err = _tuple$1[1];
if (!($interfaceIsEqual(cr.err, $ifaceNil))) {
$s = -1; return;
}
if ((x = cr.n, (x.$high === 0 && x.$low === 0))) {
cr.err = io.EOF;
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: chunkedReader.ptr.prototype.beginChunk }; } $f.$ptr = $ptr; $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;
};
chunkedReader.prototype.beginChunk = function() { return this.$val.beginChunk(); };
chunkedReader.ptr.prototype.chunkHeaderAvailable = function() {
var $ptr, _r, _tuple, cr, n, peek, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
cr = this;
n = cr.r.Buffered();
/* */ if (n > 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (n > 0) { */ case 1:
_r = cr.r.Peek(n); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
peek = _tuple[0];
$s = -1; return bytes.IndexByte(peek, 10) >= 0;
/* } */ case 2:
$s = -1; return false;
/* */ } return; } if ($f === undefined) { $f = { $blk: chunkedReader.ptr.prototype.chunkHeaderAvailable }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.cr = cr; $f.n = n; $f.peek = peek; $f.$s = $s; $f.$r = $r; return $f;
};
chunkedReader.prototype.chunkHeaderAvailable = function() { return this.$val.chunkHeaderAvailable(); };
chunkedReader.ptr.prototype.Read = function(b) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
cr = this;
/* while (true) { */ case 1:
/* if (!($interfaceIsEqual(cr.err, $ifaceNil))) { break; } */ if(!($interfaceIsEqual(cr.err, $ifaceNil))) { $s = 2; continue; }
/* */ if (cr.checkEnd) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (cr.checkEnd) { */ case 3:
if (n > 0 && cr.r.Buffered() < 2) {
/* break; */ $s = 2; continue;
}
_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; }
_tuple = _r;
cr.err = _tuple[1];
if ($interfaceIsEqual(cr.err, $ifaceNil)) {
if (!(($bytesToString(new sliceType(cr.buf))) === "\r\n")) {
cr.err = errors.New("malformed chunked encoding");
/* break; */ $s = 2; continue;
}
}
cr.checkEnd = false;
/* } */ case 4:
/* */ if ((x = cr.n, (x.$high === 0 && x.$low === 0))) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if ((x = cr.n, (x.$high === 0 && x.$low === 0))) { */ case 6:
if (!(n > 0)) { _v = false; $s = 10; continue s; }
_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; }
_v = !_r$1; case 10:
/* */ if (_v) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (_v) { */ case 8:
/* break; */ $s = 2; continue;
/* } */ case 9:
$r = cr.beginChunk(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* continue; */ $s = 1; continue;
/* } */ case 7:
if (b.$length === 0) {
/* break; */ $s = 2; continue;
}
rbuf = b;
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)))) {
rbuf = $subslice(rbuf, 0, $flatten64(cr.n));
}
n0 = 0;
_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; }
_tuple$1 = _r$2;
n0 = _tuple$1[0];
cr.err = _tuple$1[1];
n = n + (n0) >> 0;
b = $subslice(b, n0);
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));
if ((x$5 = cr.n, (x$5.$high === 0 && x$5.$low === 0)) && $interfaceIsEqual(cr.err, $ifaceNil)) {
cr.checkEnd = true;
}
/* } */ $s = 1; continue; case 2:
_tmp = n;
_tmp$1 = cr.err;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: chunkedReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $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;
};
chunkedReader.prototype.Read = function(b) { return this.$val.Read(b); };
readChunkLine = function(b) {
var $ptr, _r, _tuple, _tuple$1, b, err, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = b.ReadSlice(10); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
p = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
if ($interfaceIsEqual(err, io.EOF)) {
err = io.ErrUnexpectedEOF;
} else if ($interfaceIsEqual(err, bufio.ErrBufferFull)) {
err = $pkg.ErrLineTooLong;
}
$s = -1; return [sliceType.nil, err];
}
if (p.$length >= 4096) {
$s = -1; return [sliceType.nil, $pkg.ErrLineTooLong];
}
p = trimTrailingWhitespace(p);
_tuple$1 = removeChunkExtension(p);
p = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [sliceType.nil, err];
}
$s = -1; return [p, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: readChunkLine }; } $f.$ptr = $ptr; $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;
};
trimTrailingWhitespace = function(b) {
var $ptr, b, x;
while (true) {
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; }
b = $subslice(b, 0, (b.$length - 1 >> 0));
}
return b;
};
isASCIISpace = function(b) {
var $ptr, b;
return (b === 32) || (b === 9) || (b === 10) || (b === 13);
};
removeChunkExtension = function(p) {
var $ptr, p, semi;
semi = bytes.IndexByte(p, 59);
if (semi === -1) {
return [p, $ifaceNil];
}
return [$subslice(p, 0, semi), $ifaceNil];
};
NewChunkedWriter = function(w) {
var $ptr, w;
return new chunkedWriter.ptr(w);
};
$pkg.NewChunkedWriter = NewChunkedWriter;
chunkedWriter.ptr.prototype.Write = function(data) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
cw = this;
if (data.$length === 0) {
_tmp = 0;
_tmp$1 = $ifaceNil;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
_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; }
_tuple = _r;
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$2 = 0;
_tmp$3 = err;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
}
_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; }
_tuple$1 = _r$1;
n = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [n, err];
}
if (!((n === data.$length))) {
err = io.ErrShortWrite;
$s = -1; return [n, err];
}
_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; }
_tuple$2 = _r$2;
err = _tuple$2[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [n, err];
}
_tuple$3 = $assertType(cw.Wire, ptrType$1, true);
bw = _tuple$3[0];
ok = _tuple$3[1];
/* */ if (ok) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (ok) { */ case 4:
_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; }
err = _r$3;
/* } */ case 5:
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: chunkedWriter.ptr.prototype.Write }; } $f.$ptr = $ptr; $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;
};
chunkedWriter.prototype.Write = function(data) { return this.$val.Write(data); };
chunkedWriter.ptr.prototype.Close = function() {
var $ptr, _r, _tuple, cw, err, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
cw = this;
_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; }
_tuple = _r;
err = _tuple[1];
$s = -1; return err;
/* */ } return; } if ($f === undefined) { $f = { $blk: chunkedWriter.ptr.prototype.Close }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.cw = cw; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
};
chunkedWriter.prototype.Close = function() { return this.$val.Close(); };
parseHexUint = function(v) {
var $ptr, _i, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, b, err, i, n, v, x;
n = new $Uint64(0, 0);
err = $ifaceNil;
_ref = v;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (48 <= b && b <= 57) {
b = b - 48 << 24 >>> 24;
} else if (97 <= b && b <= 102) {
b = (b - 97 << 24 >>> 24) + 10 << 24 >>> 24;
} else if (65 <= b && b <= 70) {
b = (b - 65 << 24 >>> 24) + 10 << 24 >>> 24;
} else {
_tmp = new $Uint64(0, 0);
_tmp$1 = errors.New("invalid byte in chunk length");
n = _tmp;
err = _tmp$1;
return [n, err];
}
if (i === 16) {
_tmp$2 = new $Uint64(0, 0);
_tmp$3 = errors.New("http chunk length too large");
n = _tmp$2;
err = _tmp$3;
return [n, err];
}
n = $shiftLeft64(n, (4));
n = (x = (new $Uint64(0, b)), new $Uint64(n.$high | x.$high, (n.$low | x.$low) >>> 0));
_i++;
}
return [n, err];
};
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)}];
ptrType$3.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
chunkedReader.init("net/http/internal", [{prop: "r", name: "r", exported: false, typ: ptrType, tag: ""}, {prop: "n", name: "n", exported: false, typ: $Uint64, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}, {prop: "buf", name: "buf", exported: false, typ: arrayType, tag: ""}, {prop: "checkEnd", name: "checkEnd", exported: false, typ: $Bool, tag: ""}]);
chunkedWriter.init("", [{prop: "Wire", name: "Wire", exported: true, typ: io.Writer, tag: ""}]);
FlushAfterChunkWriter.init("", [{prop: "Writer", name: "", exported: true, typ: ptrType$4, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = bytes.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = errors.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = fmt.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$pkg.ErrLineTooLong = errors.New("header line too long");
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["net/url"] = (function() {
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;
bytes = $packages["bytes"];
errors = $packages["errors"];
fmt = $packages["fmt"];
sort = $packages["sort"];
strconv = $packages["strconv"];
strings = $packages["strings"];
Error = $pkg.Error = $newType(0, $kindStruct, "url.Error", true, "net/url", true, function(Op_, URL_, Err_) {
this.$val = this;
if (arguments.length === 0) {
this.Op = "";
this.URL = "";
this.Err = $ifaceNil;
return;
}
this.Op = Op_;
this.URL = URL_;
this.Err = Err_;
});
timeout = $pkg.timeout = $newType(8, $kindInterface, "url.timeout", true, "net/url", false, null);
temporary = $pkg.temporary = $newType(8, $kindInterface, "url.temporary", true, "net/url", false, null);
EscapeError = $pkg.EscapeError = $newType(8, $kindString, "url.EscapeError", true, "net/url", true, null);
InvalidHostError = $pkg.InvalidHostError = $newType(8, $kindString, "url.InvalidHostError", true, "net/url", true, null);
URL = $pkg.URL = $newType(0, $kindStruct, "url.URL", true, "net/url", true, function(Scheme_, Opaque_, User_, Host_, Path_, RawPath_, ForceQuery_, RawQuery_, Fragment_) {
this.$val = this;
if (arguments.length === 0) {
this.Scheme = "";
this.Opaque = "";
this.User = ptrType$1.nil;
this.Host = "";
this.Path = "";
this.RawPath = "";
this.ForceQuery = false;
this.RawQuery = "";
this.Fragment = "";
return;
}
this.Scheme = Scheme_;
this.Opaque = Opaque_;
this.User = User_;
this.Host = Host_;
this.Path = Path_;
this.RawPath = RawPath_;
this.ForceQuery = ForceQuery_;
this.RawQuery = RawQuery_;
this.Fragment = Fragment_;
});
Userinfo = $pkg.Userinfo = $newType(0, $kindStruct, "url.Userinfo", true, "net/url", true, function(username_, password_, passwordSet_) {
this.$val = this;
if (arguments.length === 0) {
this.username = "";
this.password = "";
this.passwordSet = false;
return;
}
this.username = username_;
this.password = password_;
this.passwordSet = passwordSet_;
});
Values = $pkg.Values = $newType(4, $kindMap, "url.Values", true, "net/url", true, null);
sliceType = $sliceType($Uint8);
ptrType = $ptrType(URL);
ptrType$1 = $ptrType(Userinfo);
sliceType$1 = $sliceType($emptyInterface);
arrayType = $arrayType($Uint8, 64);
sliceType$2 = $sliceType($String);
ptrType$2 = $ptrType(Error);
Error.ptr.prototype.Error = function() {
var $ptr, _r, e, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
e = this;
_r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return e.Op + " " + e.URL + ": " + _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Error.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
};
Error.prototype.Error = function() { return this.$val.Error(); };
Error.ptr.prototype.Timeout = function() {
var $ptr, _r, _tuple, _v, e, ok, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
e = this;
_tuple = $assertType(e.Err, timeout, true);
t = _tuple[0];
ok = _tuple[1];
if (!(ok)) { _v = false; $s = 1; continue s; }
_r = t.Timeout(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_v = _r; case 1:
$s = -1; return _v;
/* */ } return; } if ($f === undefined) { $f = { $blk: Error.ptr.prototype.Timeout }; } $f.$ptr = $ptr; $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;
};
Error.prototype.Timeout = function() { return this.$val.Timeout(); };
Error.ptr.prototype.Temporary = function() {
var $ptr, _r, _tuple, _v, e, ok, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
e = this;
_tuple = $assertType(e.Err, temporary, true);
t = _tuple[0];
ok = _tuple[1];
if (!(ok)) { _v = false; $s = 1; continue s; }
_r = t.Temporary(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_v = _r; case 1:
$s = -1; return _v;
/* */ } return; } if ($f === undefined) { $f = { $blk: Error.ptr.prototype.Temporary }; } $f.$ptr = $ptr; $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;
};
Error.prototype.Temporary = function() { return this.$val.Temporary(); };
ishex = function(c) {
var $ptr, c;
if (48 <= c && c <= 57) {
return true;
} else if (97 <= c && c <= 102) {
return true;
} else if (65 <= c && c <= 70) {
return true;
}
return false;
};
unhex = function(c) {
var $ptr, c;
if (48 <= c && c <= 57) {
return c - 48 << 24 >>> 24;
} else if (97 <= c && c <= 102) {
return (c - 97 << 24 >>> 24) + 10 << 24 >>> 24;
} else if (65 <= c && c <= 70) {
return (c - 65 << 24 >>> 24) + 10 << 24 >>> 24;
}
return 0;
};
EscapeError.prototype.Error = function() {
var $ptr, e;
e = this.$val;
return "invalid URL escape " + strconv.Quote((e));
};
$ptrType(EscapeError).prototype.Error = function() { return new EscapeError(this.$get()).Error(); };
InvalidHostError.prototype.Error = function() {
var $ptr, e;
e = this.$val;
return "invalid character " + strconv.Quote((e)) + " in host name";
};
$ptrType(InvalidHostError).prototype.Error = function() { return new InvalidHostError(this.$get()).Error(); };
shouldEscape = function(c, mode) {
var $ptr, _1, _2, _3, c, mode;
if (65 <= c && c <= 90 || 97 <= c && c <= 122 || 48 <= c && c <= 57) {
return false;
}
if ((mode === 3) || (mode === 4)) {
_1 = c;
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))) {
return false;
}
}
_2 = c;
if ((_2 === (45)) || (_2 === (95)) || (_2 === (46)) || (_2 === (126))) {
return false;
} else if ((_2 === (36)) || (_2 === (38)) || (_2 === (43)) || (_2 === (44)) || (_2 === (47)) || (_2 === (58)) || (_2 === (59)) || (_2 === (61)) || (_2 === (63)) || (_2 === (64))) {
_3 = mode;
if (_3 === (1)) {
return c === 63;
} else if (_3 === (2)) {
return (c === 47) || (c === 59) || (c === 44) || (c === 63);
} else if (_3 === (5)) {
return (c === 64) || (c === 47) || (c === 63) || (c === 58);
} else if (_3 === (6)) {
return true;
} else if (_3 === (7)) {
return false;
}
}
return true;
};
QueryUnescape = function(s) {
var $ptr, s;
return unescape(s, 6);
};
$pkg.QueryUnescape = QueryUnescape;
unescape = function(s, mode) {
var $ptr, _1, _2, hasPlus, i, i$1, j, mode, n, s, t, v;
n = 0;
hasPlus = false;
i = 0;
while (true) {
if (!(i < s.length)) { break; }
_1 = s.charCodeAt(i);
if (_1 === (37)) {
n = n + (1) >> 0;
if ((i + 2 >> 0) >= s.length || !ishex(s.charCodeAt((i + 1 >> 0))) || !ishex(s.charCodeAt((i + 2 >> 0)))) {
s = $substring(s, i);
if (s.length > 3) {
s = $substring(s, 0, 3);
}
return ["", new EscapeError((s))];
}
if ((mode === 3) && unhex(s.charCodeAt((i + 1 >> 0))) < 8 && !($substring(s, i, (i + 3 >> 0)) === "%25")) {
return ["", new EscapeError(($substring(s, i, (i + 3 >> 0))))];
}
if (mode === 4) {
v = ((unhex(s.charCodeAt((i + 1 >> 0))) << 4 << 24 >>> 24) | unhex(s.charCodeAt((i + 2 >> 0)))) >>> 0;
if (!($substring(s, i, (i + 3 >> 0)) === "%25") && !((v === 32)) && shouldEscape(v, 3)) {
return ["", new EscapeError(($substring(s, i, (i + 3 >> 0))))];
}
}
i = i + (3) >> 0;
} else if (_1 === (43)) {
hasPlus = mode === 6;
i = i + (1) >> 0;
} else {
if (((mode === 3) || (mode === 4)) && s.charCodeAt(i) < 128 && shouldEscape(s.charCodeAt(i), mode)) {
return ["", new InvalidHostError(($substring(s, i, (i + 1 >> 0))))];
}
i = i + (1) >> 0;
}
}
if ((n === 0) && !hasPlus) {
return [s, $ifaceNil];
}
t = $makeSlice(sliceType, (s.length - ($imul(2, n)) >> 0));
j = 0;
i$1 = 0;
while (true) {
if (!(i$1 < s.length)) { break; }
_2 = s.charCodeAt(i$1);
if (_2 === (37)) {
((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));
j = j + (1) >> 0;
i$1 = i$1 + (3) >> 0;
} else if (_2 === (43)) {
if (mode === 6) {
((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = 32);
} else {
((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = 43);
}
j = j + (1) >> 0;
i$1 = i$1 + (1) >> 0;
} else {
((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = s.charCodeAt(i$1));
j = j + (1) >> 0;
i$1 = i$1 + (1) >> 0;
}
}
return [($bytesToString(t)), $ifaceNil];
};
QueryEscape = function(s) {
var $ptr, s;
return escape(s, 6);
};
$pkg.QueryEscape = QueryEscape;
escape = function(s, mode) {
var $ptr, _tmp, _tmp$1, c, c$1, hexCount, i, i$1, j, mode, s, spaceCount, t, x, x$1;
_tmp = 0;
_tmp$1 = 0;
spaceCount = _tmp;
hexCount = _tmp$1;
i = 0;
while (true) {
if (!(i < s.length)) { break; }
c = s.charCodeAt(i);
if (shouldEscape(c, mode)) {
if ((c === 32) && (mode === 6)) {
spaceCount = spaceCount + (1) >> 0;
} else {
hexCount = hexCount + (1) >> 0;
}
}
i = i + (1) >> 0;
}
if ((spaceCount === 0) && (hexCount === 0)) {
return s;
}
t = $makeSlice(sliceType, (s.length + ($imul(2, hexCount)) >> 0));
j = 0;
i$1 = 0;
while (true) {
if (!(i$1 < s.length)) { break; }
c$1 = s.charCodeAt(i$1);
if ((c$1 === 32) && (mode === 6)) {
((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = 43);
j = j + (1) >> 0;
} else if (shouldEscape(c$1, mode)) {
((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = 37);
(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))));
(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))));
j = j + (3) >> 0;
} else {
((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = s.charCodeAt(i$1));
j = j + (1) >> 0;
}
i$1 = i$1 + (1) >> 0;
}
return ($bytesToString(t));
};
User = function(username) {
var $ptr, username;
return new Userinfo.ptr(username, "", false);
};
$pkg.User = User;
UserPassword = function(username, password) {
var $ptr, password, username;
return new Userinfo.ptr(username, password, true);
};
$pkg.UserPassword = UserPassword;
Userinfo.ptr.prototype.Username = function() {
var $ptr, u;
u = this;
return u.username;
};
Userinfo.prototype.Username = function() { return this.$val.Username(); };
Userinfo.ptr.prototype.Password = function() {
var $ptr, u;
u = this;
return [u.password, u.passwordSet];
};
Userinfo.prototype.Password = function() { return this.$val.Password(); };
Userinfo.ptr.prototype.String = function() {
var $ptr, s, u;
u = this;
s = escape(u.username, 5);
if (u.passwordSet) {
s = s + (":" + escape(u.password, 5));
}
return s;
};
Userinfo.prototype.String = function() { return this.$val.String(); };
getscheme = function(rawurl) {
var $ptr, _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;
scheme = "";
path = "";
err = $ifaceNil;
i = 0;
while (true) {
if (!(i < rawurl.length)) { break; }
c = rawurl.charCodeAt(i);
if (97 <= c && c <= 122 || 65 <= c && c <= 90) {
} else if (48 <= c && c <= 57 || (c === 43) || (c === 45) || (c === 46)) {
if (i === 0) {
_tmp = "";
_tmp$1 = rawurl;
_tmp$2 = $ifaceNil;
scheme = _tmp;
path = _tmp$1;
err = _tmp$2;
return [scheme, path, err];
}
} else if ((c === 58)) {
if (i === 0) {
_tmp$3 = "";
_tmp$4 = "";
_tmp$5 = errors.New("missing protocol scheme");
scheme = _tmp$3;
path = _tmp$4;
err = _tmp$5;
return [scheme, path, err];
}
_tmp$6 = $substring(rawurl, 0, i);
_tmp$7 = $substring(rawurl, (i + 1 >> 0));
_tmp$8 = $ifaceNil;
scheme = _tmp$6;
path = _tmp$7;
err = _tmp$8;
return [scheme, path, err];
} else {
_tmp$9 = "";
_tmp$10 = rawurl;
_tmp$11 = $ifaceNil;
scheme = _tmp$9;
path = _tmp$10;
err = _tmp$11;
return [scheme, path, err];
}
i = i + (1) >> 0;
}
_tmp$12 = "";
_tmp$13 = rawurl;
_tmp$14 = $ifaceNil;
scheme = _tmp$12;
path = _tmp$13;
err = _tmp$14;
return [scheme, path, err];
};
split = function(s, c, cutc) {
var $ptr, c, cutc, i, s;
i = strings.Index(s, c);
if (i < 0) {
return [s, ""];
}
if (cutc) {
return [$substring(s, 0, i), $substring(s, (i + c.length >> 0))];
}
return [$substring(s, 0, i), $substring(s, i)];
};
Parse = function(rawurl) {
var $ptr, _r, _tuple, _tuple$1, _tuple$2, err, frag, rawurl, u, url, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_tuple = split(rawurl, "#", true);
u = _tuple[0];
frag = _tuple[1];
_r = parse(u, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
url = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType.nil, new Error.ptr("parse", u, err)];
}
if (frag === "") {
$s = -1; return [url, $ifaceNil];
}
_tuple$2 = unescape(frag, 7);
url.Fragment = _tuple$2[0];
err = _tuple$2[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType.nil, new Error.ptr("parse", rawurl, err)];
}
$s = -1; return [url, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Parse }; } $f.$ptr = $ptr; $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;
};
$pkg.Parse = Parse;
ParseRequestURI = function(rawurl) {
var $ptr, _r, _tuple, err, rawurl, url, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = parse(rawurl, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
url = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType.nil, new Error.ptr("parse", rawurl, err)];
}
$s = -1; return [url, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: ParseRequestURI }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.rawurl = rawurl; $f.url = url; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.ParseRequestURI = ParseRequestURI;
parse = function(rawurl, viaRequest) {
var $ptr, _r, _r$1, _tuple, _tuple$1, _tuple$2, _tuple$3, authority, colon, err, err$1, rawurl, rest, slash, url, viaRequest, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
rest = "";
err = $ifaceNil;
if (rawurl === "" && viaRequest) {
$s = -1; return [ptrType.nil, errors.New("empty url")];
}
url = new URL.ptr("", "", ptrType$1.nil, "", "", "", false, "", "");
if (rawurl === "*") {
url.Path = "*";
$s = -1; return [url, $ifaceNil];
}
_tuple = getscheme(rawurl);
url.Scheme = _tuple[0];
rest = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType.nil, err];
}
_r = strings.ToLower(url.Scheme); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
url.Scheme = _r;
if (strings.HasSuffix(rest, "?") && (strings.Count(rest, "?") === 1)) {
url.ForceQuery = true;
rest = $substring(rest, 0, (rest.length - 1 >> 0));
} else {
_tuple$1 = split(rest, "?", true);
rest = _tuple$1[0];
url.RawQuery = _tuple$1[1];
}
if (!strings.HasPrefix(rest, "/")) {
if (!(url.Scheme === "")) {
url.Opaque = rest;
$s = -1; return [url, $ifaceNil];
}
if (viaRequest) {
$s = -1; return [ptrType.nil, errors.New("invalid URI for request")];
}
colon = strings.Index(rest, ":");
slash = strings.Index(rest, "/");
if (colon >= 0 && (slash < 0 || colon < slash)) {
$s = -1; return [ptrType.nil, errors.New("first path segment in URL cannot contain colon")];
}
}
/* */ if ((!(url.Scheme === "") || !viaRequest && !strings.HasPrefix(rest, "///")) && strings.HasPrefix(rest, "//")) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if ((!(url.Scheme === "") || !viaRequest && !strings.HasPrefix(rest, "///")) && strings.HasPrefix(rest, "//")) { */ case 2:
authority = "";
_tuple$2 = split($substring(rest, 2), "/", false);
authority = _tuple$2[0];
rest = _tuple$2[1];
_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; }
_tuple$3 = _r$1;
url.User = _tuple$3[0];
url.Host = _tuple$3[1];
err = _tuple$3[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType.nil, err];
}
/* } */ case 3:
err$1 = url.setPath(rest);
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return [ptrType.nil, err$1];
}
$s = -1; return [url, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: parse }; } $f.$ptr = $ptr; $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;
};
parseAuthority = function(authority) {
var $ptr, _r, _r$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, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, authority, err, host, i, password, user, userinfo, username, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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$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; 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:
user = ptrType$1.nil;
host = "";
err = $ifaceNil;
i = strings.LastIndex(authority, "@");
/* */ if (i < 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (i < 0) { */ case 1:
_r = parseHost(authority); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
host = _tuple[0];
err = _tuple[1];
$s = 3; continue;
/* } else { */ case 2:
_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; }
_tuple$1 = _r$1;
host = _tuple$1[0];
err = _tuple$1[1];
/* } */ case 3:
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = ptrType$1.nil;
_tmp$1 = "";
_tmp$2 = err;
user = _tmp;
host = _tmp$1;
err = _tmp$2;
$s = -1; return [user, host, err];
}
if (i < 0) {
_tmp$3 = ptrType$1.nil;
_tmp$4 = host;
_tmp$5 = $ifaceNil;
user = _tmp$3;
host = _tmp$4;
err = _tmp$5;
$s = -1; return [user, host, err];
}
userinfo = $substring(authority, 0, i);
if (!strings.Contains(userinfo, ":")) {
_tuple$2 = unescape(userinfo, 5);
userinfo = _tuple$2[0];
err = _tuple$2[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$6 = ptrType$1.nil;
_tmp$7 = "";
_tmp$8 = err;
user = _tmp$6;
host = _tmp$7;
err = _tmp$8;
$s = -1; return [user, host, err];
}
user = User(userinfo);
} else {
_tuple$3 = split(userinfo, ":", true);
username = _tuple$3[0];
password = _tuple$3[1];
_tuple$4 = unescape(username, 5);
username = _tuple$4[0];
err = _tuple$4[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$9 = ptrType$1.nil;
_tmp$10 = "";
_tmp$11 = err;
user = _tmp$9;
host = _tmp$10;
err = _tmp$11;
$s = -1; return [user, host, err];
}
_tuple$5 = unescape(password, 5);
password = _tuple$5[0];
err = _tuple$5[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$12 = ptrType$1.nil;
_tmp$13 = "";
_tmp$14 = err;
user = _tmp$12;
host = _tmp$13;
err = _tmp$14;
$s = -1; return [user, host, err];
}
user = UserPassword(username, password);
}
_tmp$15 = user;
_tmp$16 = host;
_tmp$17 = $ifaceNil;
user = _tmp$15;
host = _tmp$16;
err = _tmp$17;
$s = -1; return [user, host, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: parseAuthority }; } $f.$ptr = $ptr; $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$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.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;
};
parseHost = function(host) {
var $ptr, _r, _tuple, _tuple$1, _tuple$2, _tuple$3, colonPort, err, err$1, host, host1, host2, host3, i, zone, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
/* */ if (strings.HasPrefix(host, "[")) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (strings.HasPrefix(host, "[")) { */ case 1:
i = strings.LastIndex(host, "]");
if (i < 0) {
$s = -1; return ["", errors.New("missing ']' in host")];
}
colonPort = $substring(host, (i + 1 >> 0));
/* */ if (!validOptionalPort(colonPort)) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!validOptionalPort(colonPort)) { */ case 3:
_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; }
$s = -1; return ["", _r];
/* } */ case 4:
zone = strings.Index($substring(host, 0, i), "%25");
if (zone >= 0) {
_tuple = unescape($substring(host, 0, zone), 3);
host1 = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return ["", err];
}
_tuple$1 = unescape($substring(host, zone, i), 4);
host2 = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return ["", err];
}
_tuple$2 = unescape($substring(host, i), 3);
host3 = _tuple$2[0];
err = _tuple$2[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return ["", err];
}
$s = -1; return [host1 + host2 + host3, $ifaceNil];
}
/* } */ case 2:
err$1 = $ifaceNil;
_tuple$3 = unescape(host, 3);
host = _tuple$3[0];
err$1 = _tuple$3[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return ["", err$1];
}
$s = -1; return [host, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: parseHost }; } $f.$ptr = $ptr; $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;
};
URL.ptr.prototype.setPath = function(p) {
var $ptr, _tuple, err, escp, p, path, u;
u = this;
_tuple = unescape(p, 1);
path = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return err;
}
u.Path = path;
escp = escape(path, 1);
if (p === escp) {
u.RawPath = "";
} else {
u.RawPath = p;
}
return $ifaceNil;
};
URL.prototype.setPath = function(p) { return this.$val.setPath(p); };
URL.ptr.prototype.EscapedPath = function() {
var $ptr, _tuple, err, p, u;
u = this;
if (!(u.RawPath === "") && validEncodedPath(u.RawPath)) {
_tuple = unescape(u.RawPath, 1);
p = _tuple[0];
err = _tuple[1];
if ($interfaceIsEqual(err, $ifaceNil) && p === u.Path) {
return u.RawPath;
}
}
if (u.Path === "*") {
return "*";
}
return escape(u.Path, 1);
};
URL.prototype.EscapedPath = function() { return this.$val.EscapedPath(); };
validEncodedPath = function(s) {
var $ptr, _1, i, s;
i = 0;
while (true) {
if (!(i < s.length)) { break; }
_1 = s.charCodeAt(i);
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))) {
} else if ((_1 === (91)) || (_1 === (93))) {
} else if (_1 === (37)) {
} else if (shouldEscape(s.charCodeAt(i), 1)) {
return false;
}
i = i + (1) >> 0;
}
return true;
};
validOptionalPort = function(port) {
var $ptr, _i, _ref, _rune, b, port;
if (port === "") {
return true;
}
if (!((port.charCodeAt(0) === 58))) {
return false;
}
_ref = $substring(port, 1);
_i = 0;
while (true) {
if (!(_i < _ref.length)) { break; }
_rune = $decodeRune(_ref, _i);
b = _rune[0];
if (b < 48 || b > 57) {
return false;
}
_i += _rune[1];
}
return true;
};
URL.ptr.prototype.String = function() {
var $ptr, buf, h, i, path, u, ui;
u = this;
buf = new bytes.Buffer.ptr(sliceType.nil, 0, arrayType.zero(), 0);
if (!(u.Scheme === "")) {
buf.WriteString(u.Scheme);
buf.WriteByte(58);
}
if (!(u.Opaque === "")) {
buf.WriteString(u.Opaque);
} else {
if (!(u.Scheme === "") || !(u.Host === "") || !(u.User === ptrType$1.nil)) {
buf.WriteString("//");
ui = u.User;
if (!(ui === ptrType$1.nil)) {
buf.WriteString(ui.String());
buf.WriteByte(64);
}
h = u.Host;
if (!(h === "")) {
buf.WriteString(escape(h, 3));
}
}
path = u.EscapedPath();
if (!(path === "") && !((path.charCodeAt(0) === 47)) && !(u.Host === "")) {
buf.WriteByte(47);
}
if (buf.Len() === 0) {
i = strings.IndexByte(path, 58);
if (i > -1 && (strings.IndexByte($substring(path, 0, i), 47) === -1)) {
buf.WriteString("./");
}
}
buf.WriteString(path);
}
if (u.ForceQuery || !(u.RawQuery === "")) {
buf.WriteByte(63);
buf.WriteString(u.RawQuery);
}
if (!(u.Fragment === "")) {
buf.WriteByte(35);
buf.WriteString(escape(u.Fragment, 7));
}
return buf.String();
};
URL.prototype.String = function() { return this.$val.String(); };
Values.prototype.Get = function(key) {
var $ptr, _entry, key, v, vs;
v = this.$val;
if (v === false) {
return "";
}
vs = (_entry = v[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$2.nil);
if (vs.$length === 0) {
return "";
}
return (0 >= vs.$length ? ($throwRuntimeError("index out of range"), undefined) : vs.$array[vs.$offset + 0]);
};
$ptrType(Values).prototype.Get = function(key) { return new Values(this.$get()).Get(key); };
Values.prototype.Set = function(key, value) {
var $ptr, _key, key, v, value;
v = this.$val;
_key = key; (v || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: new sliceType$2([value]) };
};
$ptrType(Values).prototype.Set = function(key, value) { return new Values(this.$get()).Set(key, value); };
Values.prototype.Add = function(key, value) {
var $ptr, _entry, _key, key, v, value;
v = this.$val;
_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) };
};
$ptrType(Values).prototype.Add = function(key, value) { return new Values(this.$get()).Add(key, value); };
Values.prototype.Del = function(key) {
var $ptr, key, v;
v = this.$val;
delete v[$String.keyFor(key)];
};
$ptrType(Values).prototype.Del = function(key) { return new Values(this.$get()).Del(key); };
ParseQuery = function(query) {
var $ptr, err, m, query;
m = {};
err = parseQuery(m, query);
return [m, err];
};
$pkg.ParseQuery = ParseQuery;
parseQuery = function(m, query) {
var $ptr, _entry, _key, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, err, err1, i, i$1, key, m, query, value;
err = $ifaceNil;
while (true) {
if (!(!(query === ""))) { break; }
key = query;
i = strings.IndexAny(key, "&;");
if (i >= 0) {
_tmp = $substring(key, 0, i);
_tmp$1 = $substring(key, (i + 1 >> 0));
key = _tmp;
query = _tmp$1;
} else {
query = "";
}
if (key === "") {
continue;
}
value = "";
i$1 = strings.Index(key, "=");
if (i$1 >= 0) {
_tmp$2 = $substring(key, 0, i$1);
_tmp$3 = $substring(key, (i$1 + 1 >> 0));
key = _tmp$2;
value = _tmp$3;
}
_tuple = QueryUnescape(key);
key = _tuple[0];
err1 = _tuple[1];
if (!($interfaceIsEqual(err1, $ifaceNil))) {
if ($interfaceIsEqual(err, $ifaceNil)) {
err = err1;
}
continue;
}
_tuple$1 = QueryUnescape(value);
value = _tuple$1[0];
err1 = _tuple$1[1];
if (!($interfaceIsEqual(err1, $ifaceNil))) {
if ($interfaceIsEqual(err, $ifaceNil)) {
err = err1;
}
continue;
}
_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) };
}
err = err;
return err;
};
Values.prototype.Encode = function() {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
v = this.$val;
if (v === false) {
$s = -1; return "";
}
buf = new bytes.Buffer.ptr(sliceType.nil, 0, arrayType.zero(), 0);
keys = $makeSlice(sliceType$2, 0, $keys(v).length);
_ref = v;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
continue;
}
k = _entry.k;
keys = $append(keys, k);
_i++;
}
$r = sort.Strings(keys); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_ref$1 = keys;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
k$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
vs = (_entry$1 = v[$String.keyFor(k$1)], _entry$1 !== undefined ? _entry$1.v : sliceType$2.nil);
prefix = QueryEscape(k$1) + "=";
_ref$2 = vs;
_i$2 = 0;
while (true) {
if (!(_i$2 < _ref$2.$length)) { break; }
v$1 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]);
if (buf.Len() > 0) {
buf.WriteByte(38);
}
buf.WriteString(prefix);
buf.WriteString(QueryEscape(v$1));
_i$2++;
}
_i$1++;
}
$s = -1; return buf.String();
/* */ } return; } if ($f === undefined) { $f = { $blk: Values.prototype.Encode }; } $f.$ptr = $ptr; $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;
};
$ptrType(Values).prototype.Encode = function() { return new Values(this.$get()).Encode(); };
resolvePath = function(base, ref) {
var $ptr, _1, _i, _r, _ref, base, dst, elem, full, i, last, ref, src, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _i = $f._i; _r = $f._r; _ref = $f._ref; base = $f.base; dst = $f.dst; elem = $f.elem; full = $f.full; i = $f.i; last = $f.last; ref = $f.ref; src = $f.src; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
full = "";
if (ref === "") {
full = base;
} else if (!((ref.charCodeAt(0) === 47))) {
i = strings.LastIndex(base, "/");
full = $substring(base, 0, (i + 1 >> 0)) + ref;
} else {
full = ref;
}
if (full === "") {
$s = -1; return "";
}
dst = sliceType$2.nil;
src = strings.Split(full, "/");
_ref = src;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
elem = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_1 = elem;
if (_1 === (".")) {
} else if (_1 === ("..")) {
if (dst.$length > 0) {
dst = $subslice(dst, 0, (dst.$length - 1 >> 0));
}
} else {
dst = $append(dst, elem);
}
_i++;
}
last = (x = src.$length - 1 >> 0, ((x < 0 || x >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + x]));
if (last === "." || last === "..") {
dst = $append(dst, "");
}
_r = strings.TrimLeft(strings.Join(dst, "/"), "/"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return "/" + _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: resolvePath }; } $f.$ptr = $ptr; $f._1 = _1; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.base = base; $f.dst = dst; $f.elem = elem; $f.full = full; $f.i = i; $f.last = last; $f.ref = ref; $f.src = src; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
URL.ptr.prototype.IsAbs = function() {
var $ptr, u;
u = this;
return !(u.Scheme === "");
};
URL.prototype.IsAbs = function() { return this.$val.IsAbs(); };
URL.ptr.prototype.Parse = function(ref) {
var $ptr, _r, _r$1, _tuple, err, ref, refurl, u, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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:
u = this;
_r = Parse(ref); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
refurl = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType.nil, err];
}
_r$1 = u.ResolveReference(refurl); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return [_r$1, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: URL.ptr.prototype.Parse }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.ref = ref; $f.refurl = refurl; $f.u = u; $f.$s = $s; $f.$r = $r; return $f;
};
URL.prototype.Parse = function(ref) { return this.$val.Parse(ref); };
URL.ptr.prototype.ResolveReference = function(ref) {
var $ptr, _r, _r$1, _r$2, _r$3, ref, u, url, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; ref = $f.ref; u = $f.u; url = $f.url; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
url = [url];
u = this;
url[0] = $clone(ref, URL);
if (ref.Scheme === "") {
url[0].Scheme = u.Scheme;
}
/* */ if (!(ref.Scheme === "") || !(ref.Host === "") || !(ref.User === ptrType$1.nil)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(ref.Scheme === "") || !(ref.Host === "") || !(ref.User === ptrType$1.nil)) { */ case 1:
_r = resolvePath(ref.EscapedPath(), ""); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r$1 = url[0].setPath(_r); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
$s = -1; return url[0];
/* } */ case 2:
if (!(ref.Opaque === "")) {
url[0].User = ptrType$1.nil;
url[0].Host = "";
url[0].Path = "";
$s = -1; return url[0];
}
if (ref.Path === "") {
if (ref.RawQuery === "") {
url[0].RawQuery = u.RawQuery;
if (ref.Fragment === "") {
url[0].Fragment = u.Fragment;
}
}
}
url[0].Host = u.Host;
url[0].User = u.User;
_r$2 = resolvePath(u.EscapedPath(), ref.EscapedPath()); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$3 = url[0].setPath(_r$2); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$3;
$s = -1; return url[0];
/* */ } return; } if ($f === undefined) { $f = { $blk: URL.ptr.prototype.ResolveReference }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.ref = ref; $f.u = u; $f.url = url; $f.$s = $s; $f.$r = $r; return $f;
};
URL.prototype.ResolveReference = function(ref) { return this.$val.ResolveReference(ref); };
URL.ptr.prototype.Query = function() {
var $ptr, _tuple, u, v;
u = this;
_tuple = ParseQuery(u.RawQuery);
v = _tuple[0];
return v;
};
URL.prototype.Query = function() { return this.$val.Query(); };
URL.ptr.prototype.RequestURI = function() {
var $ptr, result, u;
u = this;
result = u.Opaque;
if (result === "") {
result = u.EscapedPath();
if (result === "") {
result = "/";
}
} else {
if (strings.HasPrefix(result, "//")) {
result = u.Scheme + ":" + result;
}
}
if (u.ForceQuery || !(u.RawQuery === "")) {
result = result + ("?" + u.RawQuery);
}
return result;
};
URL.prototype.RequestURI = function() { return this.$val.RequestURI(); };
URL.ptr.prototype.Hostname = function() {
var $ptr, u;
u = this;
return stripPort(u.Host);
};
URL.prototype.Hostname = function() { return this.$val.Hostname(); };
URL.ptr.prototype.Port = function() {
var $ptr, u;
u = this;
return portOnly(u.Host);
};
URL.prototype.Port = function() { return this.$val.Port(); };
stripPort = function(hostport) {
var $ptr, colon, hostport, i;
colon = strings.IndexByte(hostport, 58);
if (colon === -1) {
return hostport;
}
i = strings.IndexByte(hostport, 93);
if (!((i === -1))) {
return strings.TrimPrefix($substring(hostport, 0, i), "[");
}
return $substring(hostport, 0, colon);
};
portOnly = function(hostport) {
var $ptr, colon, hostport, i;
colon = strings.IndexByte(hostport, 58);
if (colon === -1) {
return "";
}
i = strings.Index(hostport, "]:");
if (!((i === -1))) {
return $substring(hostport, (i + 2 >> 0));
}
if (strings.Contains(hostport, "]")) {
return "";
}
return $substring(hostport, (colon + 1 >> 0));
};
URL.ptr.prototype.MarshalBinary = function() {
var $ptr, _tmp, _tmp$1, err, text, u;
text = sliceType.nil;
err = $ifaceNil;
u = this;
_tmp = (new sliceType($stringToBytes(u.String())));
_tmp$1 = $ifaceNil;
text = _tmp;
err = _tmp$1;
return [text, err];
};
URL.prototype.MarshalBinary = function() { return this.$val.MarshalBinary(); };
URL.ptr.prototype.UnmarshalBinary = function(text) {
var $ptr, _r, _tuple, err, text, u, u1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
u = this;
_r = Parse(($bytesToString(text))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
u1 = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
URL.copy(u, u1);
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: URL.ptr.prototype.UnmarshalBinary }; } $f.$ptr = $ptr; $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;
};
URL.prototype.UnmarshalBinary = function(text) { return this.$val.UnmarshalBinary(text); };
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)}];
EscapeError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
InvalidHostError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
ptrType.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, $error], false)}, {prop: "ResolveReference", name: "ResolveReference", pkg: "", typ: $funcType([ptrType], [ptrType], 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)}];
ptrType$1.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)}];
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)}];
Error.init("", [{prop: "Op", name: "Op", exported: true, typ: $String, tag: ""}, {prop: "URL", name: "URL", exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", exported: true, typ: $error, tag: ""}]);
timeout.init([{prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]);
temporary.init([{prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}]);
URL.init("", [{prop: "Scheme", name: "Scheme", exported: true, typ: $String, tag: ""}, {prop: "Opaque", name: "Opaque", exported: true, typ: $String, tag: ""}, {prop: "User", name: "User", exported: true, typ: ptrType$1, tag: ""}, {prop: "Host", name: "Host", exported: true, typ: $String, tag: ""}, {prop: "Path", name: "Path", exported: true, typ: $String, tag: ""}, {prop: "RawPath", name: "RawPath", exported: true, typ: $String, tag: ""}, {prop: "ForceQuery", name: "ForceQuery", exported: true, typ: $Bool, tag: ""}, {prop: "RawQuery", name: "RawQuery", exported: true, typ: $String, tag: ""}, {prop: "Fragment", name: "Fragment", exported: true, typ: $String, tag: ""}]);
Userinfo.init("net/url", [{prop: "username", name: "username", exported: false, typ: $String, tag: ""}, {prop: "password", name: "password", exported: false, typ: $String, tag: ""}, {prop: "passwordSet", name: "passwordSet", exported: false, typ: $Bool, tag: ""}]);
Values.init($String, sliceType$2);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = fmt.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sort.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strconv.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strings.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["vendor/golang_org/x/net/http2/hpack"] = (function() {
var $pkg = {}, $init, bytes, errors, fmt, io, sync, Encoder, DecodingError, InvalidIndexError, HeaderField, Decoder, dynamicTable, indexType, node, sliceType, sliceType$1, arrayType, sliceType$2, ptrType, ptrType$1, sliceType$3, ptrType$2, funcType, ptrType$3, ptrType$4, errNeedMore, errVarintOverflow, bufPool, rootHuffmanNode, staticTable, huffmanCodes, huffmanCodeLen, NewEncoder, appendIndexed, appendNewName, appendIndexedName, appendTableSize, appendVarInt, appendHpackString, encodeTypeByte, NewDecoder, constantTimeStringCompare, readVarInt, huffmanDecode, newInternalNode, init, addDecoderNode, AppendHuffmanString, HuffmanEncodeLength, appendByteToHuffmanCode, pair;
bytes = $packages["bytes"];
errors = $packages["errors"];
fmt = $packages["fmt"];
io = $packages["io"];
sync = $packages["sync"];
Encoder = $pkg.Encoder = $newType(0, $kindStruct, "hpack.Encoder", true, "vendor/golang_org/x/net/http2/hpack", true, function(dynTab_, minSize_, maxSizeLimit_, tableSizeUpdate_, w_, buf_) {
this.$val = this;
if (arguments.length === 0) {
this.dynTab = new dynamicTable.ptr(sliceType$2.nil, 0, 0, 0);
this.minSize = 0;
this.maxSizeLimit = 0;
this.tableSizeUpdate = false;
this.w = $ifaceNil;
this.buf = sliceType$1.nil;
return;
}
this.dynTab = dynTab_;
this.minSize = minSize_;
this.maxSizeLimit = maxSizeLimit_;
this.tableSizeUpdate = tableSizeUpdate_;
this.w = w_;
this.buf = buf_;
});
DecodingError = $pkg.DecodingError = $newType(0, $kindStruct, "hpack.DecodingError", true, "vendor/golang_org/x/net/http2/hpack", true, function(Err_) {
this.$val = this;
if (arguments.length === 0) {
this.Err = $ifaceNil;
return;
}
this.Err = Err_;
});
InvalidIndexError = $pkg.InvalidIndexError = $newType(4, $kindInt, "hpack.InvalidIndexError", true, "vendor/golang_org/x/net/http2/hpack", true, null);
HeaderField = $pkg.HeaderField = $newType(0, $kindStruct, "hpack.HeaderField", true, "vendor/golang_org/x/net/http2/hpack", true, function(Name_, Value_, Sensitive_) {
this.$val = this;
if (arguments.length === 0) {
this.Name = "";
this.Value = "";
this.Sensitive = false;
return;
}
this.Name = Name_;
this.Value = Value_;
this.Sensitive = Sensitive_;
});
Decoder = $pkg.Decoder = $newType(0, $kindStruct, "hpack.Decoder", true, "vendor/golang_org/x/net/http2/hpack", true, function(dynTab_, emit_, emitEnabled_, maxStrLen_, buf_, saveBuf_) {
this.$val = this;
if (arguments.length === 0) {
this.dynTab = new dynamicTable.ptr(sliceType$2.nil, 0, 0, 0);
this.emit = $throwNilPointerError;
this.emitEnabled = false;
this.maxStrLen = 0;
this.buf = sliceType$1.nil;
this.saveBuf = new bytes.Buffer.ptr(sliceType$1.nil, 0, arrayType.zero(), 0);
return;
}
this.dynTab = dynTab_;
this.emit = emit_;
this.emitEnabled = emitEnabled_;
this.maxStrLen = maxStrLen_;
this.buf = buf_;
this.saveBuf = saveBuf_;
});
dynamicTable = $pkg.dynamicTable = $newType(0, $kindStruct, "hpack.dynamicTable", true, "vendor/golang_org/x/net/http2/hpack", false, function(ents_, size_, maxSize_, allowedMaxSize_) {
this.$val = this;
if (arguments.length === 0) {
this.ents = sliceType$2.nil;
this.size = 0;
this.maxSize = 0;
this.allowedMaxSize = 0;
return;
}
this.ents = ents_;
this.size = size_;
this.maxSize = maxSize_;
this.allowedMaxSize = allowedMaxSize_;
});
indexType = $pkg.indexType = $newType(4, $kindInt, "hpack.indexType", true, "vendor/golang_org/x/net/http2/hpack", false, null);
node = $pkg.node = $newType(0, $kindStruct, "hpack.node", true, "vendor/golang_org/x/net/http2/hpack", false, function(children_, codeLen_, sym_) {
this.$val = this;
if (arguments.length === 0) {
this.children = sliceType$3.nil;
this.codeLen = 0;
this.sym = 0;
return;
}
this.children = children_;
this.codeLen = codeLen_;
this.sym = sym_;
});
sliceType = $sliceType($emptyInterface);
sliceType$1 = $sliceType($Uint8);
arrayType = $arrayType($Uint8, 64);
sliceType$2 = $sliceType(HeaderField);
ptrType = $ptrType(bytes.Buffer);
ptrType$1 = $ptrType(node);
sliceType$3 = $sliceType(ptrType$1);
ptrType$2 = $ptrType(Encoder);
funcType = $funcType([HeaderField], [], false);
ptrType$3 = $ptrType(Decoder);
ptrType$4 = $ptrType(dynamicTable);
NewEncoder = function(w) {
var $ptr, e, w;
e = new Encoder.ptr(new dynamicTable.ptr(sliceType$2.nil, 0, 0, 0), 4294967295, 4096, false, w, sliceType$1.nil);
e.dynTab.setMaxSize(4096);
return e;
};
$pkg.NewEncoder = NewEncoder;
Encoder.ptr.prototype.WriteField = function(f) {
var $ptr, _r, _tuple, _tuple$1, e, err, f, idx, indexing, n, nameValueMatch, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
e = this;
e.buf = $subslice(e.buf, 0, 0);
if (e.tableSizeUpdate) {
e.tableSizeUpdate = false;
if (e.minSize < e.dynTab.maxSize) {
e.buf = appendTableSize(e.buf, e.minSize);
}
e.minSize = 4294967295;
e.buf = appendTableSize(e.buf, e.dynTab.maxSize);
}
_tuple = e.searchTable($clone(f, HeaderField));
idx = _tuple[0];
nameValueMatch = _tuple[1];
if (nameValueMatch) {
e.buf = appendIndexed(e.buf, idx);
} else {
indexing = e.shouldIndex($clone(f, HeaderField));
if (indexing) {
e.dynTab.add($clone(f, HeaderField));
}
if ((idx.$high === 0 && idx.$low === 0)) {
e.buf = appendNewName(e.buf, $clone(f, HeaderField), indexing);
} else {
e.buf = appendIndexedName(e.buf, $clone(f, HeaderField), idx, indexing);
}
}
_r = e.w.Write(e.buf); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
n = _tuple$1[0];
err = _tuple$1[1];
if ($interfaceIsEqual(err, $ifaceNil) && !((n === e.buf.$length))) {
err = io.ErrShortWrite;
}
$s = -1; return err;
/* */ } return; } if ($f === undefined) { $f = { $blk: Encoder.ptr.prototype.WriteField }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
Encoder.prototype.WriteField = function(f) { return this.$val.WriteField(f); };
Encoder.ptr.prototype.searchTable = function(f) {
var $ptr, _i, _ref, _tuple, e, f, hf, i, idx, j, nameValueMatch;
i = new $Uint64(0, 0);
nameValueMatch = false;
e = this;
_ref = staticTable;
_i = 0;
while (true) {
if (!(_i < 61)) { break; }
idx = _i;
hf = $clone(((_i < 0 || _i >= _ref.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref[_i]), HeaderField);
if (!constantTimeStringCompare(hf.Name, f.Name)) {
_i++;
continue;
}
if ((i.$high === 0 && i.$low === 0)) {
i = (new $Uint64(0, (idx + 1 >> 0)));
}
if (f.Sensitive) {
_i++;
continue;
}
if (!constantTimeStringCompare(hf.Value, f.Value)) {
_i++;
continue;
}
i = (new $Uint64(0, (idx + 1 >> 0)));
nameValueMatch = true;
return [i, nameValueMatch];
}
_tuple = e.dynTab.search($clone(f, HeaderField));
j = _tuple[0];
nameValueMatch = _tuple[1];
if (nameValueMatch || ((i.$high === 0 && i.$low === 0) && !((j.$high === 0 && j.$low === 0)))) {
i = new $Uint64(j.$high + 0, j.$low + 61);
}
return [i, nameValueMatch];
};
Encoder.prototype.searchTable = function(f) { return this.$val.searchTable(f); };
Encoder.ptr.prototype.SetMaxDynamicTableSize = function(v) {
var $ptr, e, v;
e = this;
if (v > e.maxSizeLimit) {
v = e.maxSizeLimit;
}
if (v < e.minSize) {
e.minSize = v;
}
e.tableSizeUpdate = true;
e.dynTab.setMaxSize(v);
};
Encoder.prototype.SetMaxDynamicTableSize = function(v) { return this.$val.SetMaxDynamicTableSize(v); };
Encoder.ptr.prototype.SetMaxDynamicTableSizeLimit = function(v) {
var $ptr, e, v;
e = this;
e.maxSizeLimit = v;
if (e.dynTab.maxSize > v) {
e.tableSizeUpdate = true;
e.dynTab.setMaxSize(v);
}
};
Encoder.prototype.SetMaxDynamicTableSizeLimit = function(v) { return this.$val.SetMaxDynamicTableSizeLimit(v); };
Encoder.ptr.prototype.shouldIndex = function(f) {
var $ptr, e, f;
e = this;
return !f.Sensitive && $clone(f, HeaderField).Size() <= e.dynTab.maxSize;
};
Encoder.prototype.shouldIndex = function(f) { return this.$val.shouldIndex(f); };
appendIndexed = function(dst, i) {
var $ptr, dst, first, i;
first = dst.$length;
dst = appendVarInt(dst, 7, i);
((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));
return dst;
};
appendNewName = function(dst, f, indexing) {
var $ptr, dst, f, indexing;
dst = $append(dst, encodeTypeByte(indexing, f.Sensitive));
dst = appendHpackString(dst, f.Name);
return appendHpackString(dst, f.Value);
};
appendIndexedName = function(dst, f, i, indexing) {
var $ptr, dst, f, first, i, indexing, n;
first = dst.$length;
n = 0;
if (indexing) {
n = 6;
} else {
n = 4;
}
dst = appendVarInt(dst, n, i);
((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));
return appendHpackString(dst, f.Value);
};
appendTableSize = function(dst, v) {
var $ptr, dst, first, v;
first = dst.$length;
dst = appendVarInt(dst, 5, (new $Uint64(0, v)));
((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));
return dst;
};
appendVarInt = function(dst, n, i) {
var $ptr, dst, i, k, n, x, x$1, x$2;
k = ((x = $shiftLeft64(new $Uint64(0, 1), n), new $Uint64(x.$high - 0, x.$low - 1)));
if ((i.$high < k.$high || (i.$high === k.$high && i.$low < k.$low))) {
return $append(dst, ((i.$low << 24 >>> 24)));
}
dst = $append(dst, ((k.$low << 24 >>> 24)));
i = (x$1 = k, new $Uint64(i.$high - x$1.$high, i.$low - x$1.$low));
while (true) {
if (!((i.$high > 0 || (i.$high === 0 && i.$low >= 128)))) { break; }
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)));
i = $shiftRightUint64(i, (7));
}
return $append(dst, ((i.$low << 24 >>> 24)));
};
appendHpackString = function(dst, s) {
var $ptr, dst, first, huffmanLength, s, x;
huffmanLength = HuffmanEncodeLength(s);
if ((x = (new $Uint64(0, s.length)), (huffmanLength.$high < x.$high || (huffmanLength.$high === x.$high && huffmanLength.$low < x.$low)))) {
first = dst.$length;
dst = appendVarInt(dst, 7, huffmanLength);
dst = AppendHuffmanString(dst, s);
((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));
} else {
dst = appendVarInt(dst, 7, (new $Uint64(0, s.length)));
dst = $appendSlice(dst, s);
}
return dst;
};
encodeTypeByte = function(indexing, sensitive) {
var $ptr, indexing, sensitive;
if (sensitive) {
return 16;
}
if (indexing) {
return 64;
}
return 0;
};
DecodingError.ptr.prototype.Error = function() {
var $ptr, _r, de, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; de = $f.de; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
de = this;
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: DecodingError.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.de = de; $f.$s = $s; $f.$r = $r; return $f;
};
DecodingError.prototype.Error = function() { return this.$val.Error(); };
InvalidIndexError.prototype.Error = function() {
var $ptr, _r, e, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
e = this.$val;
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: InvalidIndexError.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(InvalidIndexError).prototype.Error = function() { return new InvalidIndexError(this.$get()).Error(); };
HeaderField.ptr.prototype.IsPseudo = function() {
var $ptr, hf;
hf = this;
return !((hf.Name.length === 0)) && (hf.Name.charCodeAt(0) === 58);
};
HeaderField.prototype.IsPseudo = function() { return this.$val.IsPseudo(); };
HeaderField.ptr.prototype.String = function() {
var $ptr, _r, hf, suffix, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; hf = $f.hf; suffix = $f.suffix; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
hf = this;
suffix = "";
if (hf.Sensitive) {
suffix = " (sensitive)";
}
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: HeaderField.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.hf = hf; $f.suffix = suffix; $f.$s = $s; $f.$r = $r; return $f;
};
HeaderField.prototype.String = function() { return this.$val.String(); };
HeaderField.ptr.prototype.Size = function() {
var $ptr, hf;
hf = this;
return ((((hf.Name.length + hf.Value.length >> 0) + 32 >> 0) >>> 0));
};
HeaderField.prototype.Size = function() { return this.$val.Size(); };
NewDecoder = function(maxDynamicTableSize, emitFunc) {
var $ptr, d, emitFunc, maxDynamicTableSize;
d = new Decoder.ptr(new dynamicTable.ptr(sliceType$2.nil, 0, 0, 0), emitFunc, true, 0, sliceType$1.nil, new bytes.Buffer.ptr(sliceType$1.nil, 0, arrayType.zero(), 0));
d.dynTab.allowedMaxSize = maxDynamicTableSize;
d.dynTab.setMaxSize(maxDynamicTableSize);
return d;
};
$pkg.NewDecoder = NewDecoder;
Decoder.ptr.prototype.SetMaxStringLength = function(n) {
var $ptr, d, n;
d = this;
d.maxStrLen = n;
};
Decoder.prototype.SetMaxStringLength = function(n) { return this.$val.SetMaxStringLength(n); };
Decoder.ptr.prototype.SetEmitFunc = function(emitFunc) {
var $ptr, d, emitFunc;
d = this;
d.emit = emitFunc;
};
Decoder.prototype.SetEmitFunc = function(emitFunc) { return this.$val.SetEmitFunc(emitFunc); };
Decoder.ptr.prototype.SetEmitEnabled = function(v) {
var $ptr, d, v;
d = this;
d.emitEnabled = v;
};
Decoder.prototype.SetEmitEnabled = function(v) { return this.$val.SetEmitEnabled(v); };
Decoder.ptr.prototype.EmitEnabled = function() {
var $ptr, d;
d = this;
return d.emitEnabled;
};
Decoder.prototype.EmitEnabled = function() { return this.$val.EmitEnabled(); };
Decoder.ptr.prototype.SetMaxDynamicTableSize = function(v) {
var $ptr, d, v;
d = this;
d.dynTab.setMaxSize(v);
};
Decoder.prototype.SetMaxDynamicTableSize = function(v) { return this.$val.SetMaxDynamicTableSize(v); };
Decoder.ptr.prototype.SetAllowedMaxDynamicTableSize = function(v) {
var $ptr, d, v;
d = this;
d.dynTab.allowedMaxSize = v;
};
Decoder.prototype.SetAllowedMaxDynamicTableSize = function(v) { return this.$val.SetAllowedMaxDynamicTableSize(v); };
dynamicTable.ptr.prototype.setMaxSize = function(v) {
var $ptr, dt, v;
dt = this;
dt.maxSize = v;
dt.evict();
};
dynamicTable.prototype.setMaxSize = function(v) { return this.$val.setMaxSize(v); };
dynamicTable.ptr.prototype.add = function(f) {
var $ptr, dt, f;
dt = this;
dt.ents = $append(dt.ents, f);
dt.size = dt.size + ($clone(f, HeaderField).Size()) >>> 0;
dt.evict();
};
dynamicTable.prototype.add = function(f) { return this.$val.add(f); };
dynamicTable.ptr.prototype.evict = function() {
var $ptr, base, dt, x;
dt = this;
base = dt.ents;
while (true) {
if (!(dt.size > dt.maxSize)) { break; }
dt.size = dt.size - ($clone((x = dt.ents, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])), HeaderField).Size()) >>> 0;
dt.ents = $subslice(dt.ents, 1);
}
if (!((dt.ents.$length === base.$length))) {
$copySlice(base, dt.ents);
dt.ents = $subslice(base, 0, dt.ents.$length);
}
};
dynamicTable.prototype.evict = function() { return this.$val.evict(); };
constantTimeStringCompare = function(a, b) {
var $ptr, a, b, c, i;
if (!((a.length === b.length))) {
return false;
}
c = 0;
i = 0;
while (true) {
if (!(i < a.length)) { break; }
c = (c | (((a.charCodeAt(i) ^ b.charCodeAt(i)) << 24 >>> 24))) >>> 0;
i = i + (1) >> 0;
}
return c === 0;
};
dynamicTable.ptr.prototype.search = function(f) {
var $ptr, dt, ent, f, i, j, l, nameValueMatch, x;
i = new $Uint64(0, 0);
nameValueMatch = false;
dt = this;
l = dt.ents.$length;
j = l - 1 >> 0;
while (true) {
if (!(j >= 0)) { break; }
ent = $clone((x = dt.ents, ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j])), HeaderField);
if (!constantTimeStringCompare(ent.Name, f.Name)) {
j = j - (1) >> 0;
continue;
}
if ((i.$high === 0 && i.$low === 0)) {
i = (new $Uint64(0, (l - j >> 0)));
}
if (f.Sensitive) {
j = j - (1) >> 0;
continue;
}
if (!constantTimeStringCompare(ent.Value, f.Value)) {
j = j - (1) >> 0;
continue;
}
i = (new $Uint64(0, (l - j >> 0)));
nameValueMatch = true;
return [i, nameValueMatch];
}
return [i, nameValueMatch];
};
dynamicTable.prototype.search = function(f) { return this.$val.search(f); };
Decoder.ptr.prototype.maxTableIndex = function() {
var $ptr, d;
d = this;
return d.dynTab.ents.$length + 61 >> 0;
};
Decoder.prototype.maxTableIndex = function() { return this.$val.maxTableIndex(); };
Decoder.ptr.prototype.at = function(i) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, d, dents, hf, i, ok, x, x$1, x$2;
hf = new HeaderField.ptr("", "", false);
ok = false;
d = this;
if ((i.$high < 0 || (i.$high === 0 && i.$low < 1))) {
return [hf, ok];
}
if ((x = (new $Uint64(0, d.maxTableIndex())), (i.$high > x.$high || (i.$high === x.$high && i.$low > x.$low)))) {
return [hf, ok];
}
if ((i.$high < 0 || (i.$high === 0 && i.$low <= 61))) {
_tmp = $clone((x$1 = new $Uint64(i.$high - 0, i.$low - 1), (($flatten64(x$1) < 0 || $flatten64(x$1) >= staticTable.length) ? ($throwRuntimeError("index out of range"), undefined) : staticTable[$flatten64(x$1)])), HeaderField);
_tmp$1 = true;
HeaderField.copy(hf, _tmp);
ok = _tmp$1;
return [hf, ok];
}
dents = d.dynTab.ents;
_tmp$2 = $clone((x$2 = dents.$length - ((((i.$low >> 0)) - 61 >> 0)) >> 0, ((x$2 < 0 || x$2 >= dents.$length) ? ($throwRuntimeError("index out of range"), undefined) : dents.$array[dents.$offset + x$2])), HeaderField);
_tmp$3 = true;
HeaderField.copy(hf, _tmp$2);
ok = _tmp$3;
return [hf, ok];
};
Decoder.prototype.at = function(i) { return this.$val.at(i); };
Decoder.ptr.prototype.DecodeFull = function(p) {
var $ptr, _r, _tuple, d, err, err$1, hf, p, saveFunc, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
d = [d];
hf = [hf];
saveFunc = [saveFunc];
d[0] = this;
hf[0] = sliceType$2.nil;
saveFunc[0] = d[0].emit;
$deferred.push([(function(d, hf, saveFunc) { return function() {
var $ptr;
d[0].emit = saveFunc[0];
}; })(d, hf, saveFunc), []]);
d[0].emit = (function(d, hf, saveFunc) { return function(f) {
var $ptr, f;
hf[0] = $append(hf[0], f);
}; })(d, hf, saveFunc);
_r = d[0].Write(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [sliceType$2.nil, err];
}
err$1 = d[0].Close();
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return [sliceType$2.nil, err$1];
}
$s = -1; return [hf[0], $ifaceNil];
/* */ } 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.$ptr = $ptr; $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; } }
};
Decoder.prototype.DecodeFull = function(p) { return this.$val.DecodeFull(p); };
Decoder.ptr.prototype.Close = function() {
var $ptr, d, x;
d = this;
if (d.saveBuf.Len() > 0) {
d.saveBuf.Reset();
return (x = new DecodingError.ptr(errors.New("truncated headers")), new x.constructor.elem(x));
}
return $ifaceNil;
};
Decoder.prototype.Close = function() { return this.$val.Close(); };
Decoder.ptr.prototype.Write = function(p) {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, d, err, n, p, x, x$1, x$2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
d = this;
if (p.$length === 0) {
$s = -1; return [n, err];
}
if (d.saveBuf.Len() === 0) {
d.buf = p;
} else {
d.saveBuf.Write(p);
d.buf = d.saveBuf.Bytes();
d.saveBuf.Reset();
}
/* while (true) { */ case 1:
/* if (!(d.buf.$length > 0)) { break; } */ if(!(d.buf.$length > 0)) { $s = 2; continue; }
_r = d.parseHeaderFieldRepr(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if ($interfaceIsEqual(err, errNeedMore)) {
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)))) {
_tmp = 0;
_tmp$1 = $pkg.ErrStringLength;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
d.saveBuf.Write(d.buf);
_tmp$2 = p.$length;
_tmp$3 = $ifaceNil;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
}
if (!($interfaceIsEqual(err, $ifaceNil))) {
/* break; */ $s = 2; continue;
}
/* } */ $s = 1; continue; case 2:
_tmp$4 = p.$length;
_tmp$5 = err;
n = _tmp$4;
err = _tmp$5;
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.Write }; } $f.$ptr = $ptr; $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;
};
Decoder.prototype.Write = function(p) { return this.$val.Write(p); };
indexType.prototype.indexed = function() {
var $ptr, v;
v = this.$val;
return v === 0;
};
$ptrType(indexType).prototype.indexed = function() { return new indexType(this.$get()).indexed(); };
indexType.prototype.sensitive = function() {
var $ptr, v;
v = this.$val;
return v === 2;
};
$ptrType(indexType).prototype.sensitive = function() { return new indexType(this.$get()).sensitive(); };
Decoder.ptr.prototype.parseHeaderFieldRepr = function() {
var $ptr, _r, _r$1, _r$2, _r$3, b, d, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; 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:
d = this;
b = (x = d.buf, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]));
/* */ if (!((((b & 128) >>> 0) === 0))) { $s = 2; continue; }
/* */ if ((((b & 192) >>> 0) === 64)) { $s = 3; continue; }
/* */ if ((((b & 240) >>> 0) === 0)) { $s = 4; continue; }
/* */ if ((((b & 240) >>> 0) === 16)) { $s = 5; continue; }
/* */ if ((((b & 224) >>> 0) === 32)) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!((((b & 128) >>> 0) === 0))) { */ case 2:
_r = d.parseFieldIndexed(); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } else if ((((b & 192) >>> 0) === 64)) { */ case 3:
_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; }
$s = -1; return _r$1;
/* } else if ((((b & 240) >>> 0) === 0)) { */ case 4:
_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; }
$s = -1; return _r$2;
/* } else if ((((b & 240) >>> 0) === 16)) { */ case 5:
_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; }
$s = -1; return _r$3;
/* } else if ((((b & 224) >>> 0) === 32)) { */ case 6:
$s = -1; return d.parseDynamicTableSizeUpdate();
/* } */ case 7:
case 1:
$s = -1; return (x$1 = new DecodingError.ptr(errors.New("invalid encoding")), new x$1.constructor.elem(x$1));
/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.parseHeaderFieldRepr }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.b = b; $f.d = d; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
};
Decoder.prototype.parseHeaderFieldRepr = function() { return this.$val.parseHeaderFieldRepr(); };
Decoder.ptr.prototype.parseFieldIndexed = function() {
var $ptr, _r, _tuple, _tuple$1, buf, d, err, hf, idx, ok, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
d = this;
buf = d.buf;
_tuple = readVarInt(7, buf);
idx = _tuple[0];
buf = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
_tuple$1 = d.at(idx);
hf = $clone(_tuple$1[0], HeaderField);
ok = _tuple$1[1];
if (!ok) {
$s = -1; return (x = new DecodingError.ptr(new InvalidIndexError(((idx.$low >> 0)))), new x.constructor.elem(x));
}
d.buf = buf;
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.parseFieldIndexed }; } $f.$ptr = $ptr; $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;
};
Decoder.prototype.parseFieldIndexed = function() { return this.$val.parseFieldIndexed(); };
Decoder.ptr.prototype.parseFieldLiteral = function(n, it) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
d = this;
buf = d.buf;
_tuple = readVarInt(n, buf);
nameIdx = _tuple[0];
buf = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
hf = new HeaderField.ptr("", "", false);
wantStr = d.emitEnabled || new indexType(it).indexed();
/* */ if ((nameIdx.$high > 0 || (nameIdx.$high === 0 && nameIdx.$low > 0))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if ((nameIdx.$high > 0 || (nameIdx.$high === 0 && nameIdx.$low > 0))) { */ case 1:
_tuple$1 = d.at(nameIdx);
ihf = $clone(_tuple$1[0], HeaderField);
ok = _tuple$1[1];
if (!ok) {
$s = -1; return (x = new DecodingError.ptr(new InvalidIndexError(((nameIdx.$low >> 0)))), new x.constructor.elem(x));
}
hf.Name = ihf.Name;
$s = 3; continue;
/* } else { */ case 2:
_r = d.readString(buf, wantStr); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$2 = _r;
hf.Name = _tuple$2[0];
buf = _tuple$2[1];
err = _tuple$2[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
/* } */ case 3:
_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; }
_tuple$3 = _r$1;
hf.Value = _tuple$3[0];
buf = _tuple$3[1];
err = _tuple$3[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
d.buf = buf;
if (new indexType(it).indexed()) {
d.dynTab.add($clone(hf, HeaderField));
}
hf.Sensitive = new indexType(it).sensitive();
_r$2 = d.callEmit($clone(hf, HeaderField)); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$s = -1; return _r$2;
/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.parseFieldLiteral }; } $f.$ptr = $ptr; $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;
};
Decoder.prototype.parseFieldLiteral = function(n, it) { return this.$val.parseFieldLiteral(n, it); };
Decoder.ptr.prototype.callEmit = function(hf) {
var $ptr, d, hf, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; d = $f.d; hf = $f.hf; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
d = this;
if (!((d.maxStrLen === 0))) {
if (hf.Name.length > d.maxStrLen || hf.Value.length > d.maxStrLen) {
$s = -1; return $pkg.ErrStringLength;
}
}
/* */ if (d.emitEnabled) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (d.emitEnabled) { */ case 1:
$r = d.emit($clone(hf, HeaderField)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.callEmit }; } $f.$ptr = $ptr; $f.d = d; $f.hf = hf; $f.$s = $s; $f.$r = $r; return $f;
};
Decoder.prototype.callEmit = function(hf) { return this.$val.callEmit(hf); };
Decoder.ptr.prototype.parseDynamicTableSizeUpdate = function() {
var $ptr, _tuple, buf, d, err, size, x, x$1;
d = this;
buf = d.buf;
_tuple = readVarInt(5, buf);
size = _tuple[0];
buf = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return err;
}
if ((x = (new $Uint64(0, d.dynTab.allowedMaxSize)), (size.$high > x.$high || (size.$high === x.$high && size.$low > x.$low)))) {
return (x$1 = new DecodingError.ptr(errors.New("dynamic table size update too large")), new x$1.constructor.elem(x$1));
}
d.dynTab.setMaxSize(((size.$low >>> 0)));
d.buf = buf;
return $ifaceNil;
};
Decoder.prototype.parseDynamicTableSizeUpdate = function() { return this.$val.parseDynamicTableSizeUpdate(); };
readVarInt = function(n, p) {
var $ptr, _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;
i = new $Uint64(0, 0);
remain = sliceType$1.nil;
err = $ifaceNil;
if (n < 1 || n > 8) {
$panic(new $String("bad n"));
}
if (p.$length === 0) {
_tmp = new $Uint64(0, 0);
_tmp$1 = p;
_tmp$2 = errNeedMore;
i = _tmp;
remain = _tmp$1;
err = _tmp$2;
return [i, remain, err];
}
i = (new $Uint64(0, (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0])));
if (n < 8) {
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));
}
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)))) {
_tmp$3 = i;
_tmp$4 = $subslice(p, 1);
_tmp$5 = $ifaceNil;
i = _tmp$3;
remain = _tmp$4;
err = _tmp$5;
return [i, remain, err];
}
origP = p;
p = $subslice(p, 1);
m = new $Uint64(0, 0);
while (true) {
if (!(p.$length > 0)) { break; }
b = (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0]);
p = $subslice(p, 1);
i = (x$4 = $shiftLeft64((new $Uint64(0, ((b & 127) >>> 0))), $flatten64(m)), new $Uint64(i.$high + x$4.$high, i.$low + x$4.$low));
if (((b & 128) >>> 0) === 0) {
_tmp$6 = i;
_tmp$7 = p;
_tmp$8 = $ifaceNil;
i = _tmp$6;
remain = _tmp$7;
err = _tmp$8;
return [i, remain, err];
}
m = (x$5 = new $Uint64(0, 7), new $Uint64(m.$high + x$5.$high, m.$low + x$5.$low));
if ((m.$high > 0 || (m.$high === 0 && m.$low >= 63))) {
_tmp$9 = new $Uint64(0, 0);
_tmp$10 = origP;
_tmp$11 = new errVarintOverflow.constructor.elem(errVarintOverflow);
i = _tmp$9;
remain = _tmp$10;
err = _tmp$11;
return [i, remain, err];
}
}
_tmp$12 = new $Uint64(0, 0);
_tmp$13 = origP;
_tmp$14 = errNeedMore;
i = _tmp$12;
remain = _tmp$13;
err = _tmp$14;
return [i, remain, err];
};
Decoder.ptr.prototype.readString = function(p, wantStr) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
s = "";
remain = sliceType$1.nil;
err = $ifaceNil;
d = this;
if (p.$length === 0) {
_tmp = "";
_tmp$1 = p;
_tmp$2 = errNeedMore;
s = _tmp;
remain = _tmp$1;
err = _tmp$2;
$s = -1; return [s, remain, err];
}
isHuff = !(((((0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0]) & 128) >>> 0) === 0));
_tuple = readVarInt(7, p);
strLen = _tuple[0];
p = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$3 = "";
_tmp$4 = p;
_tmp$5 = err;
s = _tmp$3;
remain = _tmp$4;
err = _tmp$5;
$s = -1; return [s, remain, err];
}
if (!((d.maxStrLen === 0)) && (x = (new $Uint64(0, d.maxStrLen)), (strLen.$high > x.$high || (strLen.$high === x.$high && strLen.$low > x.$low)))) {
_tmp$6 = "";
_tmp$7 = sliceType$1.nil;
_tmp$8 = $pkg.ErrStringLength;
s = _tmp$6;
remain = _tmp$7;
err = _tmp$8;
$s = -1; return [s, remain, err];
}
if ((x$1 = (new $Uint64(0, p.$length)), (x$1.$high < strLen.$high || (x$1.$high === strLen.$high && x$1.$low < strLen.$low)))) {
_tmp$9 = "";
_tmp$10 = p;
_tmp$11 = errNeedMore;
s = _tmp$9;
remain = _tmp$10;
err = _tmp$11;
$s = -1; return [s, remain, err];
}
if (!isHuff) {
if (wantStr) {
s = ($bytesToString($subslice(p, 0, $flatten64(strLen))));
}
_tmp$12 = s;
_tmp$13 = $subslice(p, $flatten64(strLen));
_tmp$14 = $ifaceNil;
s = _tmp$12;
remain = _tmp$13;
err = _tmp$14;
$s = -1; return [s, remain, err];
}
/* */ if (wantStr) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (wantStr) { */ case 1:
_r = bufPool.Get(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
buf = $assertType(_r, ptrType);
buf.Reset();
$deferred.push([$methodVal(bufPool, "Put"), [buf]]);
err$1 = huffmanDecode(buf, d.maxStrLen, $subslice(p, 0, $flatten64(strLen)));
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
buf.Reset();
_tmp$15 = "";
_tmp$16 = sliceType$1.nil;
_tmp$17 = err$1;
s = _tmp$15;
remain = _tmp$16;
err = _tmp$17;
$s = -1; return [s, remain, err];
}
s = buf.String();
buf.Reset();
/* } */ case 2:
_tmp$18 = s;
_tmp$19 = $subslice(p, $flatten64(strLen));
_tmp$20 = $ifaceNil;
s = _tmp$18;
remain = _tmp$19;
err = _tmp$20;
$s = -1; return [s, remain, err];
/* */ } 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.$ptr = $ptr; $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; } }
};
Decoder.prototype.readString = function(p, wantStr) { return this.$val.readString(p, wantStr); };
huffmanDecode = function(buf, maxLen, v) {
var $ptr, _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;
n = rootHuffmanNode;
_tmp = 0;
_tmp$1 = 0;
_tmp$2 = 0;
cur = _tmp;
cbits = _tmp$1;
sbits = _tmp$2;
_ref = v;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
cur = ((cur << 8 >>> 0) | ((b >>> 0))) >>> 0;
cbits = cbits + (8) << 24 >>> 24;
sbits = sbits + (8) << 24 >>> 24;
while (true) {
if (!(cbits >= 8)) { break; }
idx = ((((y = ((cbits - 8 << 24 >>> 24)), y < 32 ? (cur >>> y) : 0) >>> 0) << 24 >>> 24));
n = (x = n.children, ((idx < 0 || idx >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + idx]));
if (n === ptrType$1.nil) {
return $pkg.ErrInvalidHuffman;
}
if (n.children === sliceType$3.nil) {
if (!((maxLen === 0)) && (buf.Len() === maxLen)) {
return $pkg.ErrStringLength;
}
buf.WriteByte(n.sym);
cbits = cbits - (n.codeLen) << 24 >>> 24;
n = rootHuffmanNode;
sbits = cbits;
} else {
cbits = cbits - (8) << 24 >>> 24;
}
}
_i++;
}
while (true) {
if (!(cbits > 0)) { break; }
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]));
if (n === ptrType$1.nil) {
return $pkg.ErrInvalidHuffman;
}
if (!(n.children === sliceType$3.nil) || n.codeLen > cbits) {
break;
}
if (!((maxLen === 0)) && (buf.Len() === maxLen)) {
return $pkg.ErrStringLength;
}
buf.WriteByte(n.sym);
cbits = cbits - (n.codeLen) << 24 >>> 24;
n = rootHuffmanNode;
sbits = cbits;
}
if (sbits > 7) {
return $pkg.ErrInvalidHuffman;
}
mask = ((((y$2 = cbits, y$2 < 32 ? (1 << y$2) : 0) >>> 0) - 1 >>> 0));
if (!((((cur & mask) >>> 0) === mask))) {
return $pkg.ErrInvalidHuffman;
}
return $ifaceNil;
};
newInternalNode = function() {
var $ptr;
return new node.ptr($makeSlice(sliceType$3, 256), 0, 0);
};
init = function() {
var $ptr, _i, _ref, code, i;
if (false) {
$panic(new $String("unexpected size"));
}
_ref = huffmanCodes;
_i = 0;
while (true) {
if (!(_i < 256)) { break; }
i = _i;
code = ((_i < 0 || _i >= _ref.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref[_i]);
addDecoderNode(((i << 24 >>> 24)), code, ((i < 0 || i >= huffmanCodeLen.length) ? ($throwRuntimeError("index out of range"), undefined) : huffmanCodeLen[i]));
_i++;
}
};
addDecoderNode = function(sym, code, codeLen) {
var $ptr, _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;
cur = rootHuffmanNode;
while (true) {
if (!(codeLen > 8)) { break; }
codeLen = codeLen - (8) << 24 >>> 24;
i = ((((y = codeLen, y < 32 ? (code >>> y) : 0) >>> 0) << 24 >>> 24));
if ((x = cur.children, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])) === ptrType$1.nil) {
(x$1 = cur.children, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i] = newInternalNode()));
}
cur = (x$2 = cur.children, ((i < 0 || i >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i]));
}
shift = 8 - codeLen << 24 >>> 24;
_tmp = ((((((y$1 = shift, y$1 < 32 ? (code << y$1) : 0) >>> 0) << 24 >>> 24)) >> 0));
_tmp$1 = (((y$2 = shift, y$2 < 32 ? (1 << y$2) : 0) >> 0));
start = _tmp;
end = _tmp$1;
i$1 = start;
while (true) {
if (!(i$1 < (start + end >> 0))) { break; }
(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)));
i$1 = i$1 + (1) >> 0;
}
};
AppendHuffmanString = function(dst, s) {
var $ptr, _index, _tuple, code, dst, i, nbits, rembits, s, t, y;
rembits = 8;
i = 0;
while (true) {
if (!(i < s.length)) { break; }
if (rembits === 8) {
dst = $append(dst, 0);
}
_tuple = appendByteToHuffmanCode(dst, rembits, s.charCodeAt(i));
dst = _tuple[0];
rembits = _tuple[1];
i = i + (1) >> 0;
}
if (rembits < 8) {
code = 1073741823;
nbits = 30;
t = ((((y = ((nbits - rembits << 24 >>> 24)), y < 32 ? (code >>> y) : 0) >>> 0) << 24 >>> 24));
_index = dst.$length - 1 >> 0;
((_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));
}
return dst;
};
$pkg.AppendHuffmanString = AppendHuffmanString;
HuffmanEncodeLength = function(s) {
var $ptr, i, n, s, x, x$1;
n = new $Uint64(0, 0);
i = 0;
while (true) {
if (!(i < s.length)) { break; }
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));
i = i + (1) >> 0;
}
return $div64((new $Uint64(n.$high + 0, n.$low + 7)), new $Uint64(0, 8), false);
};
$pkg.HuffmanEncodeLength = HuffmanEncodeLength;
appendByteToHuffmanCode = function(dst, rembits, c) {
var $ptr, _index, _index$1, c, code, dst, nbits, rembits, t, t$1, y, y$1;
code = ((c < 0 || c >= huffmanCodes.length) ? ($throwRuntimeError("index out of range"), undefined) : huffmanCodes[c]);
nbits = ((c < 0 || c >= huffmanCodeLen.length) ? ($throwRuntimeError("index out of range"), undefined) : huffmanCodeLen[c]);
while (true) {
if (rembits > nbits) {
t = ((((y = ((rembits - nbits << 24 >>> 24)), y < 32 ? (code << y) : 0) >>> 0) << 24 >>> 24));
_index = dst.$length - 1 >> 0;
((_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));
rembits = rembits - (nbits) << 24 >>> 24;
break;
}
t$1 = ((((y$1 = ((nbits - rembits << 24 >>> 24)), y$1 < 32 ? (code >>> y$1) : 0) >>> 0) << 24 >>> 24));
_index$1 = dst.$length - 1 >> 0;
((_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));
nbits = nbits - (rembits) << 24 >>> 24;
rembits = 8;
if (nbits === 0) {
break;
}
dst = $append(dst, 0);
}
return [dst, rembits];
};
pair = function(name, value) {
var $ptr, name, value;
return new HeaderField.ptr(name, value, false);
};
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)}];
DecodingError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
InvalidIndexError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
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)}];
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)}];
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)}, {prop: "search", name: "search", pkg: "vendor/golang_org/x/net/http2/hpack", typ: $funcType([HeaderField], [$Uint64, $Bool], false)}];
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)}];
Encoder.init("vendor/golang_org/x/net/http2/hpack", [{prop: "dynTab", name: "dynTab", exported: false, typ: dynamicTable, tag: ""}, {prop: "minSize", name: "minSize", exported: false, typ: $Uint32, tag: ""}, {prop: "maxSizeLimit", name: "maxSizeLimit", exported: false, typ: $Uint32, tag: ""}, {prop: "tableSizeUpdate", name: "tableSizeUpdate", exported: false, typ: $Bool, tag: ""}, {prop: "w", name: "w", exported: false, typ: io.Writer, tag: ""}, {prop: "buf", name: "buf", exported: false, typ: sliceType$1, tag: ""}]);
DecodingError.init("", [{prop: "Err", name: "Err", exported: true, typ: $error, tag: ""}]);
HeaderField.init("", [{prop: "Name", name: "Name", exported: true, typ: $String, tag: ""}, {prop: "Value", name: "Value", exported: true, typ: $String, tag: ""}, {prop: "Sensitive", name: "Sensitive", exported: true, typ: $Bool, tag: ""}]);
Decoder.init("vendor/golang_org/x/net/http2/hpack", [{prop: "dynTab", name: "dynTab", exported: false, typ: dynamicTable, tag: ""}, {prop: "emit", name: "emit", exported: false, typ: funcType, tag: ""}, {prop: "emitEnabled", name: "emitEnabled", exported: false, typ: $Bool, tag: ""}, {prop: "maxStrLen", name: "maxStrLen", exported: false, typ: $Int, tag: ""}, {prop: "buf", name: "buf", exported: false, typ: sliceType$1, tag: ""}, {prop: "saveBuf", name: "saveBuf", exported: false, typ: bytes.Buffer, tag: ""}]);
dynamicTable.init("vendor/golang_org/x/net/http2/hpack", [{prop: "ents", name: "ents", exported: false, typ: sliceType$2, tag: ""}, {prop: "size", name: "size", exported: false, typ: $Uint32, tag: ""}, {prop: "maxSize", name: "maxSize", exported: false, typ: $Uint32, tag: ""}, {prop: "allowedMaxSize", name: "allowedMaxSize", exported: false, typ: $Uint32, tag: ""}]);
node.init("vendor/golang_org/x/net/http2/hpack", [{prop: "children", name: "children", exported: false, typ: sliceType$3, tag: ""}, {prop: "codeLen", name: "codeLen", exported: false, typ: $Uint8, tag: ""}, {prop: "sym", name: "sym", exported: false, typ: $Uint8, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = fmt.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sync.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$pkg.ErrStringLength = errors.New("hpack: string too long");
errNeedMore = errors.New("need more data");
errVarintOverflow = new DecodingError.ptr(errors.New("varint integer overflow"));
bufPool = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
var $ptr;
return new bytes.Buffer.ptr(sliceType$1.nil, 0, arrayType.zero(), 0);
}));
$pkg.ErrInvalidHuffman = errors.New("hpack: invalid Huffman-encoded data");
rootHuffmanNode = newInternalNode();
staticTable = $toNativeArray($kindStruct, [$clone(pair(":authority", ""), HeaderField), $clone(pair(":method", "GET"), HeaderField), $clone(pair(":method", "POST"), HeaderField), $clone(pair(":path", "/"), HeaderField), $clone(pair(":path", "/index.html"), HeaderField), $clone(pair(":scheme", "http"), HeaderField), $clone(pair(":scheme", "https"), HeaderField), $clone(pair(":status", "200"), HeaderField), $clone(pair(":status", "204"), HeaderField), $clone(pair(":status", "206"), HeaderField), $clone(pair(":status", "304"), HeaderField), $clone(pair(":status", "400"), HeaderField), $clone(pair(":status", "404"), HeaderField), $clone(pair(":status", "500"), HeaderField), $clone(pair("accept-charset", ""), HeaderField), $clone(pair("accept-encoding", "gzip, deflate"), HeaderField), $clone(pair("accept-language", ""), HeaderField), $clone(pair("accept-ranges", ""), HeaderField), $clone(pair("accept", ""), HeaderField), $clone(pair("access-control-allow-origin", ""), HeaderField), $clone(pair("age", ""), HeaderField), $clone(pair("allow", ""), HeaderField), $clone(pair("authorization", ""), HeaderField), $clone(pair("cache-control", ""), HeaderField), $clone(pair("content-disposition", ""), HeaderField), $clone(pair("content-encoding", ""), HeaderField), $clone(pair("content-language", ""), HeaderField), $clone(pair("content-length", ""), HeaderField), $clone(pair("content-location", ""), HeaderField), $clone(pair("content-range", ""), HeaderField), $clone(pair("content-type", ""), HeaderField), $clone(pair("cookie", ""), HeaderField), $clone(pair("date", ""), HeaderField), $clone(pair("etag", ""), HeaderField), $clone(pair("expect", ""), HeaderField), $clone(pair("expires", ""), HeaderField), $clone(pair("from", ""), HeaderField), $clone(pair("host", ""), HeaderField), $clone(pair("if-match", ""), HeaderField), $clone(pair("if-modified-since", ""), HeaderField), $clone(pair("if-none-match", ""), HeaderField), $clone(pair("if-range", ""), HeaderField), $clone(pair("if-unmodified-since", ""), HeaderField), $clone(pair("last-modified", ""), HeaderField), $clone(pair("link", ""), HeaderField), $clone(pair("location", ""), HeaderField), $clone(pair("max-forwards", ""), HeaderField), $clone(pair("proxy-authenticate", ""), HeaderField), $clone(pair("proxy-authorization", ""), HeaderField), $clone(pair("range", ""), HeaderField), $clone(pair("referer", ""), HeaderField), $clone(pair("refresh", ""), HeaderField), $clone(pair("retry-after", ""), HeaderField), $clone(pair("server", ""), HeaderField), $clone(pair("set-cookie", ""), HeaderField), $clone(pair("strict-transport-security", ""), HeaderField), $clone(pair("transfer-encoding", ""), HeaderField), $clone(pair("user-agent", ""), HeaderField), $clone(pair("vary", ""), HeaderField), $clone(pair("via", ""), HeaderField), $clone(pair("www-authenticate", ""), HeaderField)]);
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]);
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]);
init();
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["vendor/golang_org/x/net/idna"] = (function() {
var $pkg = {}, $init, fmt, math, strings, utf8, sliceType, sliceType$2, ToASCII, ascii, encode, encodeDigit, adapt;
fmt = $packages["fmt"];
math = $packages["math"];
strings = $packages["strings"];
utf8 = $packages["unicode/utf8"];
sliceType = $sliceType($emptyInterface);
sliceType$2 = $sliceType($Uint8);
ToASCII = function(s) {
var $ptr, _i, _r, _ref, _tuple, a, err, i, label, labels, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; _tuple = $f._tuple; a = $f.a; err = $f.err; i = $f.i; label = $f.label; labels = $f.labels; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
if (ascii(s)) {
$s = -1; return [s, $ifaceNil];
}
labels = strings.Split(s, ".");
_ref = labels;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
i = _i;
label = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
/* */ if (!ascii(label)) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!ascii(label)) { */ case 3:
_r = encode("xn--", label); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
a = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return ["", err];
}
((i < 0 || i >= labels.$length) ? ($throwRuntimeError("index out of range"), undefined) : labels.$array[labels.$offset + i] = a);
/* } */ case 4:
_i++;
/* } */ $s = 1; continue; case 2:
$s = -1; return [strings.Join(labels, "."), $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: ToASCII }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f._tuple = _tuple; $f.a = a; $f.err = err; $f.i = i; $f.label = label; $f.labels = labels; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.ToASCII = ToASCII;
ascii = function(s) {
var $ptr, i, s;
i = 0;
while (true) {
if (!(i < s.length)) { break; }
if (s.charCodeAt(i) >= 128) {
return false;
}
i = i + (1) >> 0;
}
return true;
};
encode = function(prefix, s) {
var $ptr, _i, _i$1, _i$2, _q, _r, _r$1, _r$2, _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, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _rune = $f._rune; _rune$1 = $f._rune$1; _rune$2 = $f._rune$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; b = $f.b; bias = $f.bias; delta = $f.delta; h = $f.h; k = $f.k; m = $f.m; n = $f.n; output = $f.output; prefix = $f.prefix; q = $f.q; r = $f.r; r$1 = $f.r$1; r$2 = $f.r$2; remaining = $f.remaining; s = $f.s; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
output = $makeSlice(sliceType$2, prefix.length, ((prefix.length + 1 >> 0) + ($imul(2, s.length)) >> 0));
$copyString(output, prefix);
_tmp = 0;
_tmp$1 = 128;
_tmp$2 = 72;
delta = _tmp;
n = _tmp$1;
bias = _tmp$2;
_tmp$3 = 0;
_tmp$4 = 0;
b = _tmp$3;
remaining = _tmp$4;
_ref = s;
_i = 0;
while (true) {
if (!(_i < _ref.length)) { break; }
_rune = $decodeRune(_ref, _i);
r = _rune[0];
if (r < 128) {
b = b + (1) >> 0;
output = $append(output, ((r << 24 >>> 24)));
} else {
remaining = remaining + (1) >> 0;
}
_i += _rune[1];
}
h = b;
if (b > 0) {
output = $append(output, 45);
}
/* while (true) { */ case 1:
/* if (!(!((remaining === 0)))) { break; } */ if(!(!((remaining === 0)))) { $s = 2; continue; }
m = 2147483647;
_ref$1 = s;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.length)) { break; }
_rune$1 = $decodeRune(_ref$1, _i$1);
r$1 = _rune$1[0];
if (m > r$1 && r$1 >= n) {
m = r$1;
}
_i$1 += _rune$1[1];
}
delta = delta + (($imul(((m - n >> 0)), ((h + 1 >> 0))))) >> 0;
/* */ if (delta < 0) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (delta < 0) { */ case 3:
_r = fmt.Errorf("idna: invalid label %q", new sliceType([new $String(s)])); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return ["", _r];
/* } */ case 4:
n = m;
_ref$2 = s;
_i$2 = 0;
/* while (true) { */ case 6:
/* if (!(_i$2 < _ref$2.length)) { break; } */ if(!(_i$2 < _ref$2.length)) { $s = 7; continue; }
_rune$2 = $decodeRune(_ref$2, _i$2);
r$2 = _rune$2[0];
/* */ if (r$2 < n) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (r$2 < n) { */ case 8:
delta = delta + (1) >> 0;
/* */ if (delta < 0) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (delta < 0) { */ case 10:
_r$1 = fmt.Errorf("idna: invalid label %q", new sliceType([new $String(s)])); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return ["", _r$1];
/* } */ case 11:
_i$2 += _rune$2[1];
/* continue; */ $s = 6; continue;
/* } */ case 9:
if (r$2 > n) {
_i$2 += _rune$2[1];
/* continue; */ $s = 6; continue;
}
q = delta;
k = 36;
while (true) {
t = k - bias >> 0;
if (t < 1) {
t = 1;
} else if (t > 26) {
t = 26;
}
if (q < t) {
break;
}
output = $append(output, encodeDigit(t + (_r$2 = ((q - t >> 0)) % ((36 - t >> 0)), _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")) >> 0));
q = (_q = ((q - t >> 0)) / ((36 - t >> 0)), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
k = k + (36) >> 0;
}
output = $append(output, encodeDigit(q));
bias = adapt(delta, h + 1 >> 0, h === b);
delta = 0;
h = h + (1) >> 0;
remaining = remaining - (1) >> 0;
_i$2 += _rune$2[1];
/* } */ $s = 6; continue; case 7:
delta = delta + (1) >> 0;
n = n + (1) >> 0;
/* } */ $s = 1; continue; case 2:
$s = -1; return [($bytesToString(output)), $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: encode }; } $f.$ptr = $ptr; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._rune = _rune; $f._rune$1 = _rune$1; $f._rune$2 = _rune$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.b = b; $f.bias = bias; $f.delta = delta; $f.h = h; $f.k = k; $f.m = m; $f.n = n; $f.output = output; $f.prefix = prefix; $f.q = q; $f.r = r; $f.r$1 = r$1; $f.r$2 = r$2; $f.remaining = remaining; $f.s = s; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
encodeDigit = function(digit) {
var $ptr, digit;
if (0 <= digit && digit < 26) {
return (((digit + 97 >> 0) << 24 >>> 24));
} else if (26 <= digit && digit < 36) {
return (((digit + 22 >> 0) << 24 >>> 24));
}
$panic(new $String("idna: internal error in punycode encoding"));
};
adapt = function(delta, numPoints, firstTime) {
var $ptr, _q, _q$1, _q$2, _q$3, _q$4, delta, firstTime, k, numPoints;
if (firstTime) {
delta = (_q = delta / (700), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
} else {
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"));
}
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;
k = 0;
while (true) {
if (!(delta > 455)) { break; }
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"));
k = k + (36) >> 0;
}
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;
};
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = math.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strings.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = utf8.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["vendor/golang_org/x/net/lex/httplex"] = (function() {
var $pkg = {}, $init, net, strings, utf8, idna, isTokenTable, validHostByte, IsTokenRune, HeaderValuesContainsToken, isOWS, trimOWS, headerValueContainsToken, lowerASCII, tokenEqual, isLWS, isCTL, ValidHeaderFieldName, ValidHostHeader, ValidHeaderFieldValue, isASCII, PunycodeHostPort;
net = $packages["net"];
strings = $packages["strings"];
utf8 = $packages["unicode/utf8"];
idna = $packages["vendor/golang_org/x/net/idna"];
IsTokenRune = function(r) {
var $ptr, i, r;
i = ((r >> 0));
return i < 127 && ((i < 0 || i >= isTokenTable.length) ? ($throwRuntimeError("index out of range"), undefined) : isTokenTable[i]);
};
$pkg.IsTokenRune = IsTokenRune;
HeaderValuesContainsToken = function(values, token) {
var $ptr, _i, _ref, token, v, values;
_ref = values;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (headerValueContainsToken(v, token)) {
return true;
}
_i++;
}
return false;
};
$pkg.HeaderValuesContainsToken = HeaderValuesContainsToken;
isOWS = function(b) {
var $ptr, b;
return (b === 32) || (b === 9);
};
trimOWS = function(x) {
var $ptr, x;
while (true) {
if (!(x.length > 0 && isOWS(x.charCodeAt(0)))) { break; }
x = $substring(x, 1);
}
while (true) {
if (!(x.length > 0 && isOWS(x.charCodeAt((x.length - 1 >> 0))))) { break; }
x = $substring(x, 0, (x.length - 1 >> 0));
}
return x;
};
headerValueContainsToken = function(v, token) {
var $ptr, comma, token, v;
v = trimOWS(v);
comma = strings.IndexByte(v, 44);
if (!((comma === -1))) {
return tokenEqual(trimOWS($substring(v, 0, comma)), token) || headerValueContainsToken($substring(v, (comma + 1 >> 0)), token);
}
return tokenEqual(v, token);
};
lowerASCII = function(b) {
var $ptr, b;
if (65 <= b && b <= 90) {
return b + 32 << 24 >>> 24;
}
return b;
};
tokenEqual = function(t1, t2) {
var $ptr, _i, _ref, _rune, b, i, t1, t2;
if (!((t1.length === t2.length))) {
return false;
}
_ref = t1;
_i = 0;
while (true) {
if (!(_i < _ref.length)) { break; }
_rune = $decodeRune(_ref, _i);
i = _i;
b = _rune[0];
if (b >= 128) {
return false;
}
if (!((lowerASCII(((b << 24 >>> 24))) === lowerASCII(t2.charCodeAt(i))))) {
return false;
}
_i += _rune[1];
}
return true;
};
isLWS = function(b) {
var $ptr, b;
return (b === 32) || (b === 9);
};
isCTL = function(b) {
var $ptr, b;
return b < 32 || (b === 127);
};
ValidHeaderFieldName = function(v) {
var $ptr, _i, _ref, _rune, r, v;
if (v.length === 0) {
return false;
}
_ref = v;
_i = 0;
while (true) {
if (!(_i < _ref.length)) { break; }
_rune = $decodeRune(_ref, _i);
r = _rune[0];
if (!IsTokenRune(r)) {
return false;
}
_i += _rune[1];
}
return true;
};
$pkg.ValidHeaderFieldName = ValidHeaderFieldName;
ValidHostHeader = function(h) {
var $ptr, h, i, x;
i = 0;
while (true) {
if (!(i < h.length)) { break; }
if (!(x = h.charCodeAt(i), ((x < 0 || x >= validHostByte.length) ? ($throwRuntimeError("index out of range"), undefined) : validHostByte[x]))) {
return false;
}
i = i + (1) >> 0;
}
return true;
};
$pkg.ValidHostHeader = ValidHostHeader;
ValidHeaderFieldValue = function(v) {
var $ptr, b, i, v;
i = 0;
while (true) {
if (!(i < v.length)) { break; }
b = v.charCodeAt(i);
if (isCTL(b) && !isLWS(b)) {
return false;
}
i = i + (1) >> 0;
}
return true;
};
$pkg.ValidHeaderFieldValue = ValidHeaderFieldValue;
isASCII = function(s) {
var $ptr, i, s;
i = 0;
while (true) {
if (!(i < s.length)) { break; }
if (s.charCodeAt(i) >= 128) {
return false;
}
i = i + (1) >> 0;
}
return true;
};
PunycodeHostPort = function(v) {
var $ptr, _r, _r$1, _tuple, _tuple$1, err, host, port, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
if (isASCII(v)) {
$s = -1; return [v, $ifaceNil];
}
_r = net.SplitHostPort(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
host = _tuple[0];
port = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
host = v;
port = "";
}
_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; }
_tuple$1 = _r$1;
host = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return ["", err];
}
if (port === "") {
$s = -1; return [host, $ifaceNil];
}
$s = -1; return [net.JoinHostPort(host, port), $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: PunycodeHostPort }; } $f.$ptr = $ptr; $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;
};
$pkg.PunycodeHostPort = PunycodeHostPort;
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = net.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strings.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = utf8.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = idna.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
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]);
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]);
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["vendor/golang_org/x/text/transform"] = (function() {
var $pkg = {}, $init, bytes, errors, io, utf8, SpanningTransformer, NopResetter, sliceType, arrayType$1, errInconsistentByteCount, errShortInternal, grow, String, Bytes, doAppend;
bytes = $packages["bytes"];
errors = $packages["errors"];
io = $packages["io"];
utf8 = $packages["unicode/utf8"];
SpanningTransformer = $pkg.SpanningTransformer = $newType(8, $kindInterface, "transform.SpanningTransformer", true, "vendor/golang_org/x/text/transform", true, null);
NopResetter = $pkg.NopResetter = $newType(0, $kindStruct, "transform.NopResetter", true, "vendor/golang_org/x/text/transform", true, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
sliceType = $sliceType($Uint8);
arrayType$1 = $arrayType($Uint8, 256);
NopResetter.ptr.prototype.Reset = function() {
var $ptr;
};
NopResetter.prototype.Reset = function() { return this.$val.Reset(); };
grow = function(b, n) {
var $ptr, b, buf, m, n;
m = b.$length;
if (m <= 32) {
m = 64;
} else if (m <= 256) {
m = $imul(m, (2));
} else {
m = m + ((m >> 1 >> 0)) >> 0;
}
buf = $makeSlice(sliceType, m);
$copySlice(buf, $subslice(b, 0, n));
return buf;
};
String = function(t, s) {
var $ptr, _r, _r$1, _r$2, _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, buf, dst, err, err$1, err$2, n, n$1, n$2, nDst, nDst$1, nSrc, nSrc$1, newDst, pDst, pPrefix, pSrc, result, s, src, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _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; buf = $f.buf; dst = $f.dst; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; n = $f.n; n$1 = $f.n$1; n$2 = $f.n$2; nDst = $f.nDst; nDst$1 = $f.nDst$1; nSrc = $f.nSrc; nSrc$1 = $f.nSrc$1; newDst = $f.newDst; pDst = $f.pDst; pPrefix = $f.pPrefix; pSrc = $f.pSrc; result = $f.result; s = $f.s; src = $f.src; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
result = "";
n = 0;
err = $ifaceNil;
$r = t.Reset(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (s === "") { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (s === "") { */ case 2:
_r = t.Transform(sliceType.nil, sliceType.nil, true); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
err$1 = _tuple[2];
if ($interfaceIsEqual(err$1, $ifaceNil)) {
_tmp = "";
_tmp$1 = 0;
_tmp$2 = $ifaceNil;
result = _tmp;
n = _tmp$1;
err = _tmp$2;
$s = -1; return [result, n, err];
}
/* } */ case 3:
buf = arrayType$1.zero();
dst = $subslice(new sliceType(buf), 0, 128, 128);
src = $subslice(new sliceType(buf), 128, 256);
_tmp$3 = 0;
_tmp$4 = 0;
nDst = _tmp$3;
nSrc = _tmp$4;
_tmp$5 = 0;
_tmp$6 = 0;
pDst = _tmp$5;
pSrc = _tmp$6;
pPrefix = 0;
/* while (true) { */ case 5:
n$1 = $copyString(src, $substring(s, pSrc));
_r$1 = t.Transform(dst, $subslice(src, 0, n$1), (pSrc + n$1 >> 0) === s.length); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple$1 = _r$1;
nDst = _tuple$1[0];
nSrc = _tuple$1[1];
err = _tuple$1[2];
pDst = pDst + (nDst) >> 0;
pSrc = pSrc + (nSrc) >> 0;
if (!bytes.Equal($subslice(dst, 0, nDst), $subslice(src, 0, nSrc))) {
/* break; */ $s = 6; continue;
}
pPrefix = pSrc;
if ($interfaceIsEqual(err, $pkg.ErrShortDst)) {
/* break; */ $s = 6; continue;
} else if ($interfaceIsEqual(err, $pkg.ErrShortSrc)) {
if (nSrc === 0) {
/* break; */ $s = 6; continue;
}
} else if (!($interfaceIsEqual(err, $ifaceNil)) || (pPrefix === s.length)) {
_tmp$7 = ($substring(s, 0, pPrefix));
_tmp$8 = pPrefix;
_tmp$9 = err;
result = _tmp$7;
n = _tmp$8;
err = _tmp$9;
$s = -1; return [result, n, err];
}
/* } */ $s = 5; continue; case 6:
if (!((pPrefix === 0))) {
newDst = dst;
if (pDst > newDst.$length) {
newDst = $makeSlice(sliceType, ((s.length + nDst >> 0) - nSrc >> 0));
}
$copySlice($subslice(newDst, pPrefix, pDst), $subslice(dst, 0, nDst));
$copyString($subslice(newDst, 0, pPrefix), $substring(s, 0, pPrefix));
dst = newDst;
}
if (($interfaceIsEqual(err, $ifaceNil) && (pSrc === s.length)) || (!($interfaceIsEqual(err, $ifaceNil)) && !($interfaceIsEqual(err, $pkg.ErrShortDst)) && !($interfaceIsEqual(err, $pkg.ErrShortSrc)))) {
_tmp$10 = ($bytesToString($subslice(dst, 0, pDst)));
_tmp$11 = pSrc;
_tmp$12 = err;
result = _tmp$10;
n = _tmp$11;
err = _tmp$12;
$s = -1; return [result, n, err];
}
/* while (true) { */ case 8:
n$2 = $copyString(src, $substring(s, pSrc));
_r$2 = t.Transform($subslice(dst, pDst), $subslice(src, 0, n$2), (pSrc + n$2 >> 0) === s.length); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$2 = _r$2;
nDst$1 = _tuple$2[0];
nSrc$1 = _tuple$2[1];
err$2 = _tuple$2[2];
pDst = pDst + (nDst$1) >> 0;
pSrc = pSrc + (nSrc$1) >> 0;
if ($interfaceIsEqual(err$2, $pkg.ErrShortDst)) {
if (nDst$1 === 0) {
dst = grow(dst, pDst);
}
} else if ($interfaceIsEqual(err$2, $pkg.ErrShortSrc)) {
if (nSrc$1 === 0) {
src = grow(src, 0);
}
} else if (!($interfaceIsEqual(err$2, $ifaceNil)) || (pSrc === s.length)) {
_tmp$13 = ($bytesToString($subslice(dst, 0, pDst)));
_tmp$14 = pSrc;
_tmp$15 = err$2;
result = _tmp$13;
n = _tmp$14;
err = _tmp$15;
$s = -1; return [result, n, err];
}
/* } */ $s = 8; continue; case 9:
$s = -1; return [result, n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: String }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $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.buf = buf; $f.dst = dst; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.n = n; $f.n$1 = n$1; $f.n$2 = n$2; $f.nDst = nDst; $f.nDst$1 = nDst$1; $f.nSrc = nSrc; $f.nSrc$1 = nSrc$1; $f.newDst = newDst; $f.pDst = pDst; $f.pPrefix = pPrefix; $f.pSrc = pSrc; $f.result = result; $f.s = s; $f.src = src; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.String = String;
Bytes = function(t, b) {
var $ptr, _r, _tuple, b, err, n, result, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; b = $f.b; err = $f.err; n = $f.n; result = $f.result; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
result = sliceType.nil;
n = 0;
err = $ifaceNil;
_r = doAppend(t, 0, $makeSlice(sliceType, b.$length), b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
result = _tuple[0];
n = _tuple[1];
err = _tuple[2];
$s = -1; return [result, n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Bytes }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.n = n; $f.result = result; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Bytes = Bytes;
doAppend = function(t, pDst, dst, src) {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tuple, dst, err, err$1, n, nDst, nSrc, pDst, pSrc, result, src, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; dst = $f.dst; err = $f.err; err$1 = $f.err$1; n = $f.n; nDst = $f.nDst; nSrc = $f.nSrc; pDst = $f.pDst; pSrc = $f.pSrc; result = $f.result; src = $f.src; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
result = sliceType.nil;
n = 0;
err = $ifaceNil;
$r = t.Reset(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
pSrc = 0;
/* while (true) { */ case 2:
_r = t.Transform($subslice(dst, pDst), $subslice(src, pSrc), true); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
nDst = _tuple[0];
nSrc = _tuple[1];
err$1 = _tuple[2];
pDst = pDst + (nDst) >> 0;
pSrc = pSrc + (nSrc) >> 0;
if (!($interfaceIsEqual(err$1, $pkg.ErrShortDst))) {
_tmp = $subslice(dst, 0, pDst);
_tmp$1 = pSrc;
_tmp$2 = err$1;
result = _tmp;
n = _tmp$1;
err = _tmp$2;
$s = -1; return [result, n, err];
}
if (nDst === 0) {
dst = grow(dst, pDst);
}
/* } */ $s = 2; continue; case 3:
$s = -1; return [result, n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: doAppend }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f.dst = dst; $f.err = err; $f.err$1 = err$1; $f.n = n; $f.nDst = nDst; $f.nSrc = nSrc; $f.pDst = pDst; $f.pSrc = pSrc; $f.result = result; $f.src = src; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
NopResetter.methods = [{prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}];
SpanningTransformer.init([{prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "Span", name: "Span", pkg: "", typ: $funcType([sliceType, $Bool], [$Int, $error], false)}, {prop: "Transform", name: "Transform", pkg: "", typ: $funcType([sliceType, sliceType, $Bool], [$Int, $Int, $error], false)}]);
NopResetter.init("", []);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = utf8.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$pkg.ErrShortDst = errors.New("transform: short destination buffer");
$pkg.ErrShortSrc = errors.New("transform: short source buffer");
$pkg.ErrEndOfSpan = errors.New("transform: input and output are not identical");
errInconsistentByteCount = errors.New("transform: inconsistent byte count returned");
errShortInternal = errors.New("transform: short internal buffer");
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["vendor/golang_org/x/text/unicode/norm"] = (function() {
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, ptrType, sliceType, sliceType$1, sliceType$2, sliceType$3, sliceType$4, sliceType$5, sliceType$6, ptrType$1, 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, mkStreamSafe, appendFlush, isHangul, isHangulString, isJamoVT, decomposeHangul, init, 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;
fmt = $packages["fmt"];
io = $packages["io"];
utf8 = $packages["unicode/utf8"];
transform = $packages["vendor/golang_org/x/text/transform"];
ssState = $pkg.ssState = $newType(4, $kindInt, "norm.ssState", true, "vendor/golang_org/x/text/unicode/norm", false, null);
streamSafe = $pkg.streamSafe = $newType(1, $kindUint8, "norm.streamSafe", true, "vendor/golang_org/x/text/unicode/norm", false, null);
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_) {
this.$val = this;
if (arguments.length === 0) {
this.rune = arrayType.zero();
this.byte$1 = arrayType$1.zero();
this.nbyte = 0;
this.ss = 0;
this.nrune = 0;
this.f = new formInfo.ptr(0, false, false, $throwNilPointerError, $throwNilPointerError);
this.src = new input.ptr("", sliceType$4.nil);
this.nsrc = 0;
this.tmpBytes = new input.ptr("", sliceType$4.nil);
this.out = sliceType$4.nil;
this.flushF = $throwNilPointerError;
return;
}
this.rune = rune_;
this.byte$1 = byte$1_;
this.nbyte = nbyte_;
this.ss = ss_;
this.nrune = nrune_;
this.f = f_;
this.src = src_;
this.nsrc = nsrc_;
this.tmpBytes = tmpBytes_;
this.out = out_;
this.flushF = flushF_;
});
insertErr = $pkg.insertErr = $newType(4, $kindInt, "norm.insertErr", true, "vendor/golang_org/x/text/unicode/norm", false, null);
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_) {
this.$val = this;
if (arguments.length === 0) {
this.pos = 0;
this.size = 0;
this.ccc = 0;
this.tccc = 0;
this.nLead = 0;
this.flags = 0;
this.index = 0;
return;
}
this.pos = pos_;
this.size = size_;
this.ccc = ccc_;
this.tccc = tccc_;
this.nLead = nLead_;
this.flags = flags_;
this.index = index_;
});
lookupFunc = $pkg.lookupFunc = $newType(4, $kindFunc, "norm.lookupFunc", true, "vendor/golang_org/x/text/unicode/norm", false, null);
formInfo = $pkg.formInfo = $newType(0, $kindStruct, "norm.formInfo", true, "vendor/golang_org/x/text/unicode/norm", false, function(form_, composing_, compatibility_, info_, nextMain_) {
this.$val = this;
if (arguments.length === 0) {
this.form = 0;
this.composing = false;
this.compatibility = false;
this.info = $throwNilPointerError;
this.nextMain = $throwNilPointerError;
return;
}
this.form = form_;
this.composing = composing_;
this.compatibility = compatibility_;
this.info = info_;
this.nextMain = nextMain_;
});
qcInfo = $pkg.qcInfo = $newType(1, $kindUint8, "norm.qcInfo", true, "vendor/golang_org/x/text/unicode/norm", false, null);
input = $pkg.input = $newType(0, $kindStruct, "norm.input", true, "vendor/golang_org/x/text/unicode/norm", false, function(str_, bytes_) {
this.$val = this;
if (arguments.length === 0) {
this.str = "";
this.bytes = sliceType$4.nil;
return;
}
this.str = str_;
this.bytes = bytes_;
});
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_) {
this.$val = this;
if (arguments.length === 0) {
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);
this.buf = arrayType$1.zero();
this.info = new Properties.ptr(0, 0, 0, 0, 0, 0, 0);
this.next = $throwNilPointerError;
this.asciiF = $throwNilPointerError;
this.p = 0;
this.multiSeg = sliceType$4.nil;
return;
}
this.rb = rb_;
this.buf = buf_;
this.info = info_;
this.next = next_;
this.asciiF = asciiF_;
this.p = p_;
this.multiSeg = multiSeg_;
});
iterFunc = $pkg.iterFunc = $newType(4, $kindFunc, "norm.iterFunc", true, "vendor/golang_org/x/text/unicode/norm", false, null);
Form = $pkg.Form = $newType(4, $kindInt, "norm.Form", true, "vendor/golang_org/x/text/unicode/norm", true, null);
normWriter = $pkg.normWriter = $newType(0, $kindStruct, "norm.normWriter", true, "vendor/golang_org/x/text/unicode/norm", false, function(rb_, w_, buf_) {
this.$val = this;
if (arguments.length === 0) {
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);
this.w = $ifaceNil;
this.buf = sliceType$4.nil;
return;
}
this.rb = rb_;
this.w = w_;
this.buf = buf_;
});
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_) {
this.$val = this;
if (arguments.length === 0) {
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);
this.r = $ifaceNil;
this.inbuf = sliceType$4.nil;
this.outbuf = sliceType$4.nil;
this.bufStart = 0;
this.lastBoundary = 0;
this.err = $ifaceNil;
return;
}
this.rb = rb_;
this.r = r_;
this.inbuf = inbuf_;
this.outbuf = outbuf_;
this.bufStart = bufStart_;
this.lastBoundary = lastBoundary_;
this.err = err_;
});
nfcTrie = $pkg.nfcTrie = $newType(0, $kindStruct, "norm.nfcTrie", true, "vendor/golang_org/x/text/unicode/norm", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
nfkcTrie = $pkg.nfkcTrie = $newType(0, $kindStruct, "norm.nfkcTrie", true, "vendor/golang_org/x/text/unicode/norm", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
valueRange = $pkg.valueRange = $newType(0, $kindStruct, "norm.valueRange", true, "vendor/golang_org/x/text/unicode/norm", false, function(value_, lo_, hi_) {
this.$val = this;
if (arguments.length === 0) {
this.value = 0;
this.lo = 0;
this.hi = 0;
return;
}
this.value = value_;
this.lo = lo_;
this.hi = hi_;
});
sparseBlocks = $pkg.sparseBlocks = $newType(0, $kindStruct, "norm.sparseBlocks", true, "vendor/golang_org/x/text/unicode/norm", false, function(values_, offset_) {
this.$val = this;
if (arguments.length === 0) {
this.values = sliceType$3.nil;
this.offset = sliceType$1.nil;
return;
}
this.values = values_;
this.offset = offset_;
});
ptrType = $ptrType(formInfo);
sliceType = $sliceType(ptrType);
sliceType$1 = $sliceType($Uint16);
sliceType$2 = $sliceType($error);
sliceType$3 = $sliceType(valueRange);
sliceType$4 = $sliceType($Uint8);
sliceType$5 = $sliceType(Properties);
sliceType$6 = $sliceType($emptyInterface);
ptrType$1 = $ptrType(streamSafe);
arrayType = $arrayType(Properties, 32);
arrayType$1 = $arrayType($Uint8, 128);
arrayType$2 = $arrayType(Properties, 31);
ptrType$2 = $ptrType(reorderBuffer);
funcType = $funcType([ptrType$2], [$Bool], false);
ptrType$3 = $ptrType(input);
ptrType$4 = $ptrType(Iter);
ptrType$5 = $ptrType(normWriter);
ptrType$6 = $ptrType(normReader);
ptrType$7 = $ptrType(nfcTrie);
ptrType$8 = $ptrType(nfkcTrie);
ptrType$9 = $ptrType(sparseBlocks);
mkStreamSafe = function(p) {
var $ptr, p;
return (($clone(p, Properties).nTrailingNonStarters() << 24 >>> 24));
};
$ptrType(streamSafe).prototype.first = function(p) {
var $ptr, p, ss;
ss = this;
if (!((ss.$get() === 0))) {
$panic(new $String("!= 0"));
}
ss.$set((($clone(p, Properties).nTrailingNonStarters() << 24 >>> 24)));
};
$ptrType(streamSafe).prototype.next = function(p) {
var $ptr, n, p, ss;
ss = this;
if (ss.$get() > 30) {
$panic(new $String("streamSafe was not reset"));
}
n = $clone(p, Properties).nLeadingNonStarters();
ss.$set(ss.$get() + (((n << 24 >>> 24))) << 24 >>> 24);
if (ss.$get() > 30) {
ss.$set(0);
return 2;
}
if (n === 0) {
ss.$set(0);
return 1;
}
return 0;
};
$ptrType(streamSafe).prototype.backwards = function(p) {
var $ptr, c, p, ss;
ss = this;
if (ss.$get() > 30) {
$panic(new $String("streamSafe was not reset"));
}
c = ss.$get() + (($clone(p, Properties).nTrailingNonStarters() << 24 >>> 24)) << 24 >>> 24;
if (c > 30) {
return 2;
}
ss.$set(c);
if ($clone(p, Properties).nLeadingNonStarters() === 0) {
return 1;
}
return 0;
};
streamSafe.prototype.isMax = function() {
var $ptr, ss;
ss = this.$val;
return ss === 30;
};
$ptrType(streamSafe).prototype.isMax = function() { return new streamSafe(this.$get()).isMax(); };
reorderBuffer.ptr.prototype.init = function(f, src) {
var $ptr, f, rb, src;
rb = this;
formInfo.copy(rb.f, ((f < 0 || f >= formTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : formTable.$array[formTable.$offset + f]));
rb.src.setBytes(src);
rb.nsrc = src.$length;
rb.ss = 0;
};
reorderBuffer.prototype.init = function(f, src) { return this.$val.init(f, src); };
reorderBuffer.ptr.prototype.initString = function(f, src) {
var $ptr, f, rb, src;
rb = this;
formInfo.copy(rb.f, ((f < 0 || f >= formTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : formTable.$array[formTable.$offset + f]));
rb.src.setString(src);
rb.nsrc = src.length;
rb.ss = 0;
};
reorderBuffer.prototype.initString = function(f, src) { return this.$val.initString(f, src); };
reorderBuffer.ptr.prototype.setFlusher = function(out, f) {
var $ptr, f, out, rb;
rb = this;
rb.out = out;
rb.flushF = f;
};
reorderBuffer.prototype.setFlusher = function(out, f) { return this.$val.setFlusher(out, f); };
reorderBuffer.ptr.prototype.reset = function() {
var $ptr, rb;
rb = this;
rb.nrune = 0;
rb.nbyte = 0;
rb.ss = 0;
};
reorderBuffer.prototype.reset = function() { return this.$val.reset(); };
reorderBuffer.ptr.prototype.doFlush = function() {
var $ptr, _r, rb, res, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; rb = $f.rb; res = $f.res; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
rb = this;
if (rb.f.composing) {
rb.compose();
}
_r = rb.flushF(rb); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
res = _r;
rb.reset();
$s = -1; return res;
/* */ } return; } if ($f === undefined) { $f = { $blk: reorderBuffer.ptr.prototype.doFlush }; } $f.$ptr = $ptr; $f._r = _r; $f.rb = rb; $f.res = res; $f.$s = $s; $f.$r = $r; return $f;
};
reorderBuffer.prototype.doFlush = function() { return this.$val.doFlush(); };
appendFlush = function(rb) {
var $ptr, end, i, rb, start, x, x$1;
i = 0;
while (true) {
if (!(i < rb.nrune)) { break; }
start = (x = rb.rune, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i])).pos;
end = start + (x$1 = rb.rune, ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i])).size << 24 >>> 24;
rb.out = $appendSlice(rb.out, $subslice(new sliceType$4(rb.byte$1), start, end));
i = i + (1) >> 0;
}
return true;
};
reorderBuffer.ptr.prototype.flushCopy = function(buf) {
var $ptr, buf, i, p, rb, runep, x;
rb = this;
p = 0;
i = 0;
while (true) {
if (!(i < rb.nrune)) { break; }
runep = $clone((x = rb.rune, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i])), Properties);
p = p + ($copySlice($subslice(buf, p), $subslice(new sliceType$4(rb.byte$1), runep.pos, (runep.pos + runep.size << 24 >>> 24)))) >> 0;
i = i + (1) >> 0;
}
rb.reset();
return p;
};
reorderBuffer.prototype.flushCopy = function(buf) { return this.$val.flushCopy(buf); };
reorderBuffer.ptr.prototype.insertOrdered = function(info) {
var $ptr, b, cc, info, n, pos, rb, x, x$1;
rb = this;
n = rb.nrune;
b = new sliceType$5(rb.rune);
cc = info.ccc;
if (cc > 0) {
while (true) {
if (!(n > 0)) { break; }
if ((x = n - 1 >> 0, ((x < 0 || x >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x])).ccc <= cc) {
break;
}
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])));
n = n - (1) >> 0;
}
}
rb.nrune = rb.nrune + (1) >> 0;
pos = (rb.nbyte);
rb.nbyte = rb.nbyte + (4) << 24 >>> 24;
info.pos = pos;
Properties.copy(((n < 0 || n >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + n]), info);
};
reorderBuffer.prototype.insertOrdered = function(info) { return this.$val.insertOrdered(info); };
reorderBuffer.ptr.prototype.insertFlush = function(src, i, info) {
var $ptr, _r, i, info, rb, rune, src, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
rb = this;
rune = src.hangul(i);
if (!((rune === 0))) {
rb.decomposeHangul(rune);
$s = -1; return 0;
}
/* */ if ($clone(info, Properties).hasDecomposition()) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if ($clone(info, Properties).hasDecomposition()) { */ case 1:
_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; }
$s = -1; return _r;
/* } */ case 2:
rb.insertSingle($clone(src, input), i, $clone(info, Properties));
$s = -1; return 0;
/* */ } return; } if ($f === undefined) { $f = { $blk: reorderBuffer.ptr.prototype.insertFlush }; } $f.$ptr = $ptr; $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;
};
reorderBuffer.prototype.insertFlush = function(src, i, info) { return this.$val.insertFlush(src, i, info); };
reorderBuffer.ptr.prototype.insertUnsafe = function(src, i, info) {
var $ptr, _r, i, info, rb, rune, src, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
rb = this;
rune = src.hangul(i);
if (!((rune === 0))) {
rb.decomposeHangul(rune);
}
/* */ if ($clone(info, Properties).hasDecomposition()) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if ($clone(info, Properties).hasDecomposition()) { */ case 1:
_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; }
_r;
$s = 3; continue;
/* } else { */ case 2:
rb.insertSingle($clone(src, input), i, $clone(info, Properties));
/* } */ case 3:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: reorderBuffer.ptr.prototype.insertUnsafe }; } $f.$ptr = $ptr; $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;
};
reorderBuffer.prototype.insertUnsafe = function(src, i, info) { return this.$val.insertUnsafe(src, i, info); };
reorderBuffer.ptr.prototype.insertDecomposed = function(dcomp) {
var $ptr, _r, _r$1, _v, dcomp, i, info, rb, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
rb = this;
rb.tmpBytes.setBytes(dcomp);
i = 0;
/* while (true) { */ case 1:
/* if (!(i < dcomp.$length)) { break; } */ if(!(i < dcomp.$length)) { $s = 2; continue; }
_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; }
info = $clone(_r, Properties);
if (!($clone(info, Properties).BoundaryBefore() && rb.nrune > 0)) { _v = false; $s = 6; continue s; }
_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; }
_v = !_r$1; case 6:
/* */ if (_v) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (_v) { */ case 4:
$s = -1; return -1;
/* } */ case 5:
i = i + ($copySlice($subslice(new sliceType$4(rb.byte$1), rb.nbyte), $subslice(dcomp, i, (i + ((info.size >> 0)) >> 0)))) >> 0;
rb.insertOrdered($clone(info, Properties));
/* } */ $s = 1; continue; case 2:
$s = -1; return 0;
/* */ } return; } if ($f === undefined) { $f = { $blk: reorderBuffer.ptr.prototype.insertDecomposed }; } $f.$ptr = $ptr; $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;
};
reorderBuffer.prototype.insertDecomposed = function(dcomp) { return this.$val.insertDecomposed(dcomp); };
reorderBuffer.ptr.prototype.insertSingle = function(src, i, info) {
var $ptr, i, info, rb, src;
rb = this;
src.copySlice($subslice(new sliceType$4(rb.byte$1), rb.nbyte), i, i + ((info.size >> 0)) >> 0);
rb.insertOrdered($clone(info, Properties));
};
reorderBuffer.prototype.insertSingle = function(src, i, info) { return this.$val.insertSingle(src, i, info); };
reorderBuffer.ptr.prototype.insertCGJ = function() {
var $ptr, rb;
rb = this;
rb.insertSingle(new input.ptr("\xCD\x8F", sliceType$4.nil), 0, new Properties.ptr(0, 2, 0, 0, 0, 0, 0));
};
reorderBuffer.prototype.insertCGJ = function() { return this.$val.insertCGJ(); };
reorderBuffer.ptr.prototype.appendRune = function(r) {
var $ptr, bn, r, rb, sz, x, x$1;
rb = this;
bn = rb.nbyte;
sz = utf8.EncodeRune($subslice(new sliceType$4(rb.byte$1), bn), (r));
rb.nbyte = rb.nbyte + (4) << 24 >>> 24;
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));
rb.nrune = rb.nrune + (1) >> 0;
};
reorderBuffer.prototype.appendRune = function(r) { return this.$val.appendRune(r); };
reorderBuffer.ptr.prototype.assignRune = function(pos, r) {
var $ptr, bn, pos, r, rb, sz, x, x$1;
rb = this;
bn = (x = rb.rune, ((pos < 0 || pos >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[pos])).pos;
sz = utf8.EncodeRune($subslice(new sliceType$4(rb.byte$1), bn), (r));
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));
};
reorderBuffer.prototype.assignRune = function(pos, r) { return this.$val.assignRune(pos, r); };
reorderBuffer.ptr.prototype.runeAt = function(n) {
var $ptr, _tuple, inf, n, r, rb, x;
rb = this;
inf = $clone((x = rb.rune, ((n < 0 || n >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[n])), Properties);
_tuple = utf8.DecodeRune($subslice(new sliceType$4(rb.byte$1), inf.pos, (inf.pos + inf.size << 24 >>> 24)));
r = _tuple[0];
return r;
};
reorderBuffer.prototype.runeAt = function(n) { return this.$val.runeAt(n); };
reorderBuffer.ptr.prototype.bytesAt = function(n) {
var $ptr, inf, n, rb, x;
rb = this;
inf = $clone((x = rb.rune, ((n < 0 || n >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[n])), Properties);
return $subslice(new sliceType$4(rb.byte$1), inf.pos, (((inf.pos >> 0)) + ((inf.size >> 0)) >> 0));
};
reorderBuffer.prototype.bytesAt = function(n) { return this.$val.bytesAt(n); };
isHangul = function(b) {
var $ptr, b, b0, b1;
if (b.$length < 3) {
return false;
}
b0 = (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]);
if (b0 < 234) {
return false;
}
b1 = (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]);
if ((b0 === 234)) {
return b1 >= 176;
} else if (b0 < 237) {
return true;
} else if (b0 > 237) {
return false;
} else if (b1 < 158) {
return true;
}
return (b1 === 158) && (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]) < 164;
};
isHangulString = function(b) {
var $ptr, b, b0, b1;
if (b.length < 3) {
return false;
}
b0 = b.charCodeAt(0);
if (b0 < 234) {
return false;
}
b1 = b.charCodeAt(1);
if ((b0 === 234)) {
return b1 >= 176;
} else if (b0 < 237) {
return true;
} else if (b0 > 237) {
return false;
} else if (b1 < 158) {
return true;
}
return (b1 === 158) && b.charCodeAt(2) < 164;
};
isJamoVT = function(b) {
var $ptr, b;
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);
};
decomposeHangul = function(buf, r) {
var $ptr, _q, _q$1, _r, _r$1, buf, r, x;
r = r - (44032) >> 0;
x = (_r = r % 28, _r === _r ? _r : $throwRuntimeError("integer divide by zero"));
r = (_q = r / (28), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
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);
utf8.EncodeRune($subslice(buf, 3), 4449 + (_r$1 = r % 21, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) >> 0);
if (!((x === 0))) {
utf8.EncodeRune($subslice(buf, 6), 4519 + x >> 0);
return 9;
}
return 6;
};
reorderBuffer.ptr.prototype.decomposeHangul = function(r) {
var $ptr, _q, _q$1, _r, _r$1, r, rb, x;
rb = this;
r = r - (44032) >> 0;
x = (_r = r % 28, _r === _r ? _r : $throwRuntimeError("integer divide by zero"));
r = (_q = r / (28), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
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);
rb.appendRune(4449 + (_r$1 = r % 21, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) >> 0);
if (!((x === 0))) {
rb.appendRune(4519 + x >> 0);
}
};
reorderBuffer.prototype.decomposeHangul = function(r) { return this.$val.decomposeHangul(r); };
reorderBuffer.ptr.prototype.combineHangul = function(s, i, k) {
var $ptr, _r, b, bn, cccB, cccC, i, k, l, rb, s, v, x;
rb = this;
b = new sliceType$5(rb.rune);
bn = rb.nrune;
while (true) {
if (!(i < bn)) { break; }
cccB = (x = k - 1 >> 0, ((x < 0 || x >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x])).ccc;
cccC = ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]).ccc;
if (cccB === 0) {
s = k - 1 >> 0;
}
if (!((s === (k - 1 >> 0))) && cccB >= cccC) {
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]));
k = k + (1) >> 0;
} else {
l = rb.runeAt(s);
v = rb.runeAt(i);
if (4352 <= l && l < 4371 && 4449 <= v && v < 4470) {
rb.assignRune(s, (44032 + ($imul(((l - 4352 >> 0)), 588)) >> 0) + ($imul(((v - 4449 >> 0)), 28)) >> 0);
} else if (44032 <= l && l < 55204 && 4519 < v && v < 4547 && (((_r = ((l - 44032 >> 0)) % 28, _r === _r ? _r : $throwRuntimeError("integer divide by zero"))) === 0)) {
rb.assignRune(s, (l + v >> 0) - 4519 >> 0);
} else {
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]));
k = k + (1) >> 0;
}
}
i = i + (1) >> 0;
}
rb.nrune = k;
};
reorderBuffer.prototype.combineHangul = function(s, i, k) { return this.$val.combineHangul(s, i, k); };
reorderBuffer.ptr.prototype.compose = function() {
var $ptr, _tmp, _tmp$1, b, blocked, bn, cccB, cccC, combined, i, ii, k, rb, s, x;
rb = this;
bn = rb.nrune;
if (bn === 0) {
return;
}
k = 1;
b = new sliceType$5(rb.rune);
_tmp = 0;
_tmp$1 = 1;
s = _tmp;
i = _tmp$1;
while (true) {
if (!(i < bn)) { break; }
if (isJamoVT(rb.bytesAt(i))) {
rb.combineHangul(s, i, k);
return;
}
ii = $clone(((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]), Properties);
if ($clone(ii, Properties).combinesBackward()) {
cccB = (x = k - 1 >> 0, ((x < 0 || x >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x])).ccc;
cccC = ii.ccc;
blocked = false;
if (cccB === 0) {
s = k - 1 >> 0;
} else {
blocked = !((s === (k - 1 >> 0))) && cccB >= cccC;
}
if (!blocked) {
combined = combine(rb.runeAt(s), rb.runeAt(i));
if (!((combined === 0))) {
rb.assignRune(s, combined);
i = i + (1) >> 0;
continue;
}
}
}
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]));
k = k + (1) >> 0;
i = i + (1) >> 0;
}
rb.nrune = k;
};
reorderBuffer.prototype.compose = function() { return this.$val.compose(); };
init = function() {
var $ptr, _i, _ref, f, i;
formTable = $makeSlice(sliceType, 4);
_ref = formTable;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
f = new formInfo.ptr(0, false, false, $throwNilPointerError, $throwNilPointerError);
((i < 0 || i >= formTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : formTable.$array[formTable.$offset + i] = f);
f.form = ((i >> 0));
if ((((i >> 0)) === 3) || (((i >> 0)) === 2)) {
f.compatibility = true;
f.info = lookupInfoNFKC;
} else {
f.info = lookupInfoNFC;
}
f.nextMain = nextDecomposed;
if ((((i >> 0)) === 0) || (((i >> 0)) === 2)) {
f.nextMain = nextComposed;
f.composing = true;
}
_i++;
}
};
Properties.ptr.prototype.BoundaryBefore = function() {
var $ptr, p;
p = this;
if ((p.ccc === 0) && !$clone(p, Properties).combinesBackward()) {
return true;
}
return false;
};
Properties.prototype.BoundaryBefore = function() { return this.$val.BoundaryBefore(); };
Properties.ptr.prototype.BoundaryAfter = function() {
var $ptr, p;
p = this;
return $clone(p, Properties).isInert();
};
Properties.prototype.BoundaryAfter = function() { return this.$val.BoundaryAfter(); };
Properties.ptr.prototype.isYesC = function() {
var $ptr, p;
p = this;
return ((p.flags & 16) >>> 0) === 0;
};
Properties.prototype.isYesC = function() { return this.$val.isYesC(); };
Properties.ptr.prototype.isYesD = function() {
var $ptr, p;
p = this;
return ((p.flags & 4) >>> 0) === 0;
};
Properties.prototype.isYesD = function() { return this.$val.isYesD(); };
Properties.ptr.prototype.combinesBackward = function() {
var $ptr, p;
p = this;
return !((((p.flags & 8) >>> 0) === 0));
};
Properties.prototype.combinesBackward = function() { return this.$val.combinesBackward(); };
Properties.ptr.prototype.hasDecomposition = function() {
var $ptr, p;
p = this;
return !((((p.flags & 4) >>> 0) === 0));
};
Properties.prototype.hasDecomposition = function() { return this.$val.hasDecomposition(); };
Properties.ptr.prototype.isInert = function() {
var $ptr, p;
p = this;
return (((p.flags & 63) >>> 0) === 0) && (p.ccc === 0);
};
Properties.prototype.isInert = function() { return this.$val.isInert(); };
Properties.ptr.prototype.multiSegment = function() {
var $ptr, p;
p = this;
return p.index >= 6253 && p.index < 12128;
};
Properties.prototype.multiSegment = function() { return this.$val.multiSegment(); };
Properties.ptr.prototype.nLeadingNonStarters = function() {
var $ptr, p;
p = this;
return p.nLead;
};
Properties.prototype.nLeadingNonStarters = function() { return this.$val.nLeadingNonStarters(); };
Properties.ptr.prototype.nTrailingNonStarters = function() {
var $ptr, p;
p = this;
return ((((p.flags & 3) >>> 0) << 24 >>> 24));
};
Properties.prototype.nTrailingNonStarters = function() { return this.$val.nTrailingNonStarters(); };
Properties.ptr.prototype.Decomposition = function() {
var $ptr, i, n, p;
p = this;
if (p.index === 0) {
return sliceType$4.nil;
}
i = p.index;
n = (((i < 0 || i >= decomps.length) ? ($throwRuntimeError("index out of range"), undefined) : decomps[i]) & 63) >>> 0;
i = i + (1) << 16 >>> 16;
return $subslice(new sliceType$4(decomps), i, (i + ((n << 16 >>> 16)) << 16 >>> 16));
};
Properties.prototype.Decomposition = function() { return this.$val.Decomposition(); };
Properties.ptr.prototype.Size = function() {
var $ptr, p;
p = this;
return ((p.size >> 0));
};
Properties.prototype.Size = function() { return this.$val.Size(); };
Properties.ptr.prototype.CCC = function() {
var $ptr, p, x;
p = this;
if (p.index >= 19034) {
return 0;
}
return (x = p.ccc, ((x < 0 || x >= ccc.length) ? ($throwRuntimeError("index out of range"), undefined) : ccc[x]));
};
Properties.prototype.CCC = function() { return this.$val.CCC(); };
Properties.ptr.prototype.LeadCCC = function() {
var $ptr, p, x;
p = this;
return (x = p.ccc, ((x < 0 || x >= ccc.length) ? ($throwRuntimeError("index out of range"), undefined) : ccc[x]));
};
Properties.prototype.LeadCCC = function() { return this.$val.LeadCCC(); };
Properties.ptr.prototype.TrailCCC = function() {
var $ptr, p, x;
p = this;
return (x = p.tccc, ((x < 0 || x >= ccc.length) ? ($throwRuntimeError("index out of range"), undefined) : ccc[x]));
};
Properties.prototype.TrailCCC = function() { return this.$val.TrailCCC(); };
combine = function(a, b) {
var $ptr, _entry, a, b, key;
key = (((((a << 16 >>> 16)) >>> 0)) << 16 >>> 0) + ((((b << 16 >>> 16)) >>> 0)) >>> 0;
return (_entry = recompMap[$Uint32.keyFor(key)], _entry !== undefined ? _entry.v : 0);
};
lookupInfoNFC = function(b, i) {
var $ptr, _tuple, b, i, sz, v;
_tuple = b.charinfoNFC(i);
v = _tuple[0];
sz = _tuple[1];
return compInfo(v, sz);
};
lookupInfoNFKC = function(b, i) {
var $ptr, _tuple, b, i, sz, v;
_tuple = b.charinfoNFKC(i);
v = _tuple[0];
sz = _tuple[1];
return compInfo(v, sz);
};
Form.prototype.Properties = function(s) {
var $ptr, _tuple, _tuple$1, f, s;
f = this.$val;
if ((f === 0) || (f === 1)) {
_tuple = nfcData.lookup(s);
return compInfo(_tuple[0], _tuple[1]);
}
_tuple$1 = nfkcData.lookup(s);
return compInfo(_tuple$1[0], _tuple$1[1]);
};
$ptrType(Form).prototype.Properties = function(s) { return new Form(this.$get()).Properties(s); };
Form.prototype.PropertiesString = function(s) {
var $ptr, _tuple, _tuple$1, f, s;
f = this.$val;
if ((f === 0) || (f === 1)) {
_tuple = nfcData.lookupString(s);
return compInfo(_tuple[0], _tuple[1]);
}
_tuple$1 = nfkcData.lookupString(s);
return compInfo(_tuple$1[0], _tuple$1[1]);
};
$ptrType(Form).prototype.PropertiesString = function(s) { return new Form(this.$get()).PropertiesString(s); };
compInfo = function(v, sz) {
var $ptr, c, f, h, p, p$1, sz, v, x;
if (v === 0) {
return new Properties.ptr(0, ((sz << 24 >>> 24)), 0, 0, 0, 0, 0);
} else if (v >= 32768) {
p = new Properties.ptr(0, ((sz << 24 >>> 24)), ((v << 24 >>> 24)), ((v << 24 >>> 24)), 0, (((v >>> 8 << 16 >>> 16) << 24 >>> 24)), 0);
if (p.ccc > 0 || $clone(p, Properties).combinesBackward()) {
p.nLead = ((((p.flags & 3) >>> 0) << 24 >>> 24));
}
return p;
}
h = ((v < 0 || v >= decomps.length) ? ($throwRuntimeError("index out of range"), undefined) : decomps[v]);
f = (((((((h & 192) >>> 0) << 24 >>> 24)) >>> 2 << 24 >>> 24)) | 4) >>> 0;
p$1 = new Properties.ptr(0, ((sz << 24 >>> 24)), 0, 0, 0, f, v);
if (v >= 11422) {
v = v + ((((((h & 63) >>> 0) << 16 >>> 16)) + 1 << 16 >>> 16)) << 16 >>> 16;
c = ((v < 0 || v >= decomps.length) ? ($throwRuntimeError("index out of range"), undefined) : decomps[v]);
p$1.tccc = c >>> 2 << 24 >>> 24;
p$1.flags = (p$1.flags | (((((c & 3) >>> 0) << 24 >>> 24)))) >>> 0;
if (v >= 19012) {
p$1.nLead = (c & 3) >>> 0;
if (v >= 19073) {
p$1.flags = (p$1.flags & (3)) >>> 0;
p$1.index = 0;
return p$1;
}
p$1.ccc = (x = v + 1 << 16 >>> 16, ((x < 0 || x >= decomps.length) ? ($throwRuntimeError("index out of range"), undefined) : decomps[x]));
}
}
return p$1;
};
inputBytes = function(str) {
var $ptr, str;
return new input.ptr("", str);
};
inputString = function(str) {
var $ptr, str;
return new input.ptr(str, sliceType$4.nil);
};
input.ptr.prototype.setBytes = function(str) {
var $ptr, in$1, str;
in$1 = this;
in$1.str = "";
in$1.bytes = str;
};
input.prototype.setBytes = function(str) { return this.$val.setBytes(str); };
input.ptr.prototype.setString = function(str) {
var $ptr, in$1, str;
in$1 = this;
in$1.str = str;
in$1.bytes = sliceType$4.nil;
};
input.prototype.setString = function(str) { return this.$val.setString(str); };
input.ptr.prototype._byte = function(p) {
var $ptr, in$1, p, x;
in$1 = this;
if (in$1.bytes === sliceType$4.nil) {
return in$1.str.charCodeAt(p);
}
return (x = in$1.bytes, ((p < 0 || p >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + p]));
};
input.prototype._byte = function(p) { return this.$val._byte(p); };
input.ptr.prototype.skipASCII = function(p, max) {
var $ptr, in$1, max, p, x;
in$1 = this;
if (in$1.bytes === sliceType$4.nil) {
while (true) {
if (!(p < max && in$1.str.charCodeAt(p) < 128)) { break; }
p = p + (1) >> 0;
}
} else {
while (true) {
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; }
p = p + (1) >> 0;
}
}
return p;
};
input.prototype.skipASCII = function(p, max) { return this.$val.skipASCII(p, max); };
input.ptr.prototype.skipContinuationBytes = function(p) {
var $ptr, in$1, p, x;
in$1 = this;
if (in$1.bytes === sliceType$4.nil) {
while (true) {
if (!(p < in$1.str.length && !utf8.RuneStart(in$1.str.charCodeAt(p)))) { break; }
p = p + (1) >> 0;
}
} else {
while (true) {
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; }
p = p + (1) >> 0;
}
}
return p;
};
input.prototype.skipContinuationBytes = function(p) { return this.$val.skipContinuationBytes(p); };
input.ptr.prototype.appendSlice = function(buf, b, e) {
var $ptr, b, buf, e, i, in$1;
in$1 = this;
if (!(in$1.bytes === sliceType$4.nil)) {
return $appendSlice(buf, $subslice(in$1.bytes, b, e));
}
i = b;
while (true) {
if (!(i < e)) { break; }
buf = $append(buf, in$1.str.charCodeAt(i));
i = i + (1) >> 0;
}
return buf;
};
input.prototype.appendSlice = function(buf, b, e) { return this.$val.appendSlice(buf, b, e); };
input.ptr.prototype.copySlice = function(buf, b, e) {
var $ptr, b, buf, e, in$1;
in$1 = this;
if (in$1.bytes === sliceType$4.nil) {
return $copyString(buf, $substring(in$1.str, b, e));
}
return $copySlice(buf, $subslice(in$1.bytes, b, e));
};
input.prototype.copySlice = function(buf, b, e) { return this.$val.copySlice(buf, b, e); };
input.ptr.prototype.charinfoNFC = function(p) {
var $ptr, in$1, p;
in$1 = this;
if (in$1.bytes === sliceType$4.nil) {
return nfcData.lookupString($substring(in$1.str, p));
}
return nfcData.lookup($subslice(in$1.bytes, p));
};
input.prototype.charinfoNFC = function(p) { return this.$val.charinfoNFC(p); };
input.ptr.prototype.charinfoNFKC = function(p) {
var $ptr, in$1, p;
in$1 = this;
if (in$1.bytes === sliceType$4.nil) {
return nfkcData.lookupString($substring(in$1.str, p));
}
return nfkcData.lookup($subslice(in$1.bytes, p));
};
input.prototype.charinfoNFKC = function(p) { return this.$val.charinfoNFKC(p); };
input.ptr.prototype.hangul = function(p) {
var $ptr, _tuple, _tuple$1, in$1, p, r;
r = 0;
in$1 = this;
if (in$1.bytes === sliceType$4.nil) {
if (!isHangulString($substring(in$1.str, p))) {
r = 0;
return r;
}
_tuple = utf8.DecodeRuneInString($substring(in$1.str, p));
r = _tuple[0];
} else {
if (!isHangul($subslice(in$1.bytes, p))) {
r = 0;
return r;
}
_tuple$1 = utf8.DecodeRune($subslice(in$1.bytes, p));
r = _tuple$1[0];
}
r = r;
return r;
};
input.prototype.hangul = function(p) { return this.$val.hangul(p); };
Iter.ptr.prototype.Init = function(f, src) {
var $ptr, _r, f, i, src, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; f = $f.f; i = $f.i; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
i = this;
i.p = 0;
if (src.$length === 0) {
i.setDone();
i.rb.nsrc = 0;
$s = -1; return;
}
i.multiSeg = sliceType$4.nil;
i.rb.init(f, src);
i.next = i.rb.f.nextMain;
i.asciiF = nextASCIIBytes;
_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; }
Properties.copy(i.info, _r);
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Iter.ptr.prototype.Init }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.i = i; $f.src = src; $f.$s = $s; $f.$r = $r; return $f;
};
Iter.prototype.Init = function(f, src) { return this.$val.Init(f, src); };
Iter.ptr.prototype.InitString = function(f, src) {
var $ptr, _r, f, i, src, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; f = $f.f; i = $f.i; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
i = this;
i.p = 0;
if (src.length === 0) {
i.setDone();
i.rb.nsrc = 0;
$s = -1; return;
}
i.multiSeg = sliceType$4.nil;
i.rb.initString(f, src);
i.next = i.rb.f.nextMain;
i.asciiF = nextASCIIString;
_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; }
Properties.copy(i.info, _r);
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Iter.ptr.prototype.InitString }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.i = i; $f.src = src; $f.$s = $s; $f.$r = $r; return $f;
};
Iter.prototype.InitString = function(f, src) { return this.$val.InitString(f, src); };
Iter.ptr.prototype.Seek = function(offset, whence) {
var $ptr, _1, _r, _r$1, _r$2, abs, i, offset, whence, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
i = this;
abs = new $Int64(0, 0);
_1 = whence;
/* */ if (_1 === (0)) { $s = 2; continue; }
/* */ if (_1 === (1)) { $s = 3; continue; }
/* */ if (_1 === (2)) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (_1 === (0)) { */ case 2:
abs = offset;
$s = 6; continue;
/* } else if (_1 === (1)) { */ case 3:
abs = (x = (new $Int64(0, i.p)), new $Int64(x.$high + offset.$high, x.$low + offset.$low));
$s = 6; continue;
/* } else if (_1 === (2)) { */ case 4:
abs = (x$1 = (new $Int64(0, i.rb.nsrc)), new $Int64(x$1.$high + offset.$high, x$1.$low + offset.$low));
$s = 6; continue;
/* } else { */ case 5:
_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; }
$s = -1; return [new $Int64(0, 0), _r];
/* } */ case 6:
case 1:
/* */ if ((abs.$high < 0 || (abs.$high === 0 && abs.$low < 0))) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if ((abs.$high < 0 || (abs.$high === 0 && abs.$low < 0))) { */ case 8:
_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; }
$s = -1; return [new $Int64(0, 0), _r$1];
/* } */ case 9:
if ((((abs.$low + ((abs.$high >> 31) * 4294967296)) >> 0)) >= i.rb.nsrc) {
i.setDone();
$s = -1; return [(new $Int64(0, i.p)), $ifaceNil];
}
i.p = (((abs.$low + ((abs.$high >> 31) * 4294967296)) >> 0));
i.multiSeg = sliceType$4.nil;
i.next = i.rb.f.nextMain;
_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; }
Properties.copy(i.info, _r$2);
$s = -1; return [abs, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Iter.ptr.prototype.Seek }; } $f.$ptr = $ptr; $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.$s = $s; $f.$r = $r; return $f;
};
Iter.prototype.Seek = function(offset, whence) { return this.$val.Seek(offset, whence); };
Iter.ptr.prototype.returnSlice = function(a, b) {
var $ptr, a, b, i;
i = this;
if (i.rb.src.bytes === sliceType$4.nil) {
return $subslice(new sliceType$4(i.buf), 0, $copyString(new sliceType$4(i.buf), $substring(i.rb.src.str, a, b)));
}
return $subslice(i.rb.src.bytes, a, b);
};
Iter.prototype.returnSlice = function(a, b) { return this.$val.returnSlice(a, b); };
Iter.ptr.prototype.Pos = function() {
var $ptr, i;
i = this;
return i.p;
};
Iter.prototype.Pos = function() { return this.$val.Pos(); };
Iter.ptr.prototype.setDone = function() {
var $ptr, i;
i = this;
i.next = nextDone;
i.p = i.rb.nsrc;
};
Iter.prototype.setDone = function() { return this.$val.setDone(); };
Iter.ptr.prototype.Done = function() {
var $ptr, i;
i = this;
return i.p >= i.rb.nsrc;
};
Iter.prototype.Done = function() { return this.$val.Done(); };
Iter.ptr.prototype.Next = function() {
var $ptr, _r, i, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; i = $f.i; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
i = this;
_r = i.next(i); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Iter.ptr.prototype.Next }; } $f.$ptr = $ptr; $f._r = _r; $f.i = i; $f.$s = $s; $f.$r = $r; return $f;
};
Iter.prototype.Next = function() { return this.$val.Next(); };
nextASCIIBytes = function(i) {
var $ptr, _r, _r$1, i, p, p0, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
p = i.p + 1 >> 0;
if (p >= i.rb.nsrc) {
i.setDone();
$s = -1; return $subslice(i.rb.src.bytes, i.p, p);
}
if ((x = i.rb.src.bytes, ((p < 0 || p >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + p])) < 128) {
p0 = i.p;
i.p = p;
$s = -1; return $subslice(i.rb.src.bytes, p0, p);
}
_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; }
Properties.copy(i.info, _r);
i.next = i.rb.f.nextMain;
_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; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: nextASCIIBytes }; } $f.$ptr = $ptr; $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;
};
nextASCIIString = function(i) {
var $ptr, _r, _r$1, i, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
p = i.p + 1 >> 0;
if (p >= i.rb.nsrc) {
i.buf[0] = i.rb.src.str.charCodeAt(i.p);
i.setDone();
$s = -1; return $subslice(new sliceType$4(i.buf), 0, 1);
}
if (i.rb.src.str.charCodeAt(p) < 128) {
i.buf[0] = i.rb.src.str.charCodeAt(i.p);
i.p = p;
$s = -1; return $subslice(new sliceType$4(i.buf), 0, 1);
}
_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; }
Properties.copy(i.info, _r);
i.next = i.rb.f.nextMain;
_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; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: nextASCIIString }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.i = i; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
};
nextHangul = function(i) {
var $ptr, _r, _r$1, i, next, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; i = $f.i; next = $f.next; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
p = i.p;
next = p + 3 >> 0;
/* */ if (next >= i.rb.nsrc) { $s = 1; continue; }
/* */ if (i.rb.src.hangul(next) === 0) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (next >= i.rb.nsrc) { */ case 1:
i.setDone();
$s = 3; continue;
/* } else if (i.rb.src.hangul(next) === 0) { */ case 2:
_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; }
Properties.copy(i.info, _r);
i.next = i.rb.f.nextMain;
_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; }
$s = -1; return _r$1;
/* } */ case 3:
i.p = next;
$s = -1; return $subslice(new sliceType$4(i.buf), 0, decomposeHangul(new sliceType$4(i.buf), i.rb.src.hangul(p)));
/* */ } return; } if ($f === undefined) { $f = { $blk: nextHangul }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.i = i; $f.next = next; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
};
nextDone = function(i) {
var $ptr, i;
return sliceType$4.nil;
};
nextMulti = function(i) {
var $ptr, _r, _r$1, d, i, info, j, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
j = 0;
d = i.multiSeg;
j = 1;
while (true) {
if (!(j < d.$length && !utf8.RuneStart(((j < 0 || j >= d.$length) ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + j])))) { break; }
j = j + (1) >> 0;
}
/* while (true) { */ case 1:
/* if (!(j < d.$length)) { break; } */ if(!(j < d.$length)) { $s = 2; continue; }
_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; }
info = $clone(_r, Properties);
if ($clone(info, Properties).BoundaryBefore()) {
i.multiSeg = $subslice(d, j);
$s = -1; return $subslice(d, 0, j);
}
j = j + (((info.size >> 0))) >> 0;
/* } */ $s = 1; continue; case 2:
i.next = i.rb.f.nextMain;
_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; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: nextMulti }; } $f.$ptr = $ptr; $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;
};
nextMultiNorm = function(i) {
var $ptr, _r, _r$1, d, i, info, j, seg, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; d = $f.d; i = $f.i; info = $f.info; j = $f.j; seg = $f.seg; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
j = 0;
d = i.multiSeg;
/* while (true) { */ case 1:
/* if (!(j < d.$length)) { break; } */ if(!(j < d.$length)) { $s = 2; continue; }
_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; }
info = $clone(_r, Properties);
/* */ if ($clone(info, Properties).BoundaryBefore()) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if ($clone(info, Properties).BoundaryBefore()) { */ case 4:
i.rb.compose();
seg = $subslice(new sliceType$4(i.buf), 0, i.rb.flushCopy(new sliceType$4(i.buf)));
(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(info, Properties));
$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; }
i.multiSeg = $subslice(d, (j + ((info.size >> 0)) >> 0));
$s = -1; return seg;
/* } */ case 5:
(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(info, Properties));
$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; }
j = j + (((info.size >> 0))) >> 0;
/* } */ $s = 1; continue; case 2:
i.multiSeg = sliceType$4.nil;
i.next = nextComposed;
_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; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: nextMultiNorm }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.d = d; $f.i = i; $f.info = info; $f.j = j; $f.seg = seg; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
};
nextDecomposed = function(i) {
var $ptr, _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, ss, ss$24ptr, sz, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; ss = $f.ss; ss$24ptr = $f.ss$24ptr; sz = $f.sz; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
next = sliceType$4.nil;
outp = 0;
_tmp = i.p;
_tmp$1 = 0;
inCopyStart = _tmp;
outCopyStart = _tmp$1;
ss = mkStreamSafe($clone(i.info, Properties));
/* while (true) { */ case 1:
sz = ((i.info.size >> 0));
/* */ if (sz <= 1) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (sz <= 1) { */ case 3:
p = i.p;
i.p = i.p + (1) >> 0;
if (i.p >= i.rb.nsrc) {
i.setDone();
next = i.returnSlice(p, i.p);
$s = -1; return next;
} else if (i.rb.src._byte(i.p) < 128) {
i.next = i.asciiF;
next = i.returnSlice(p, i.p);
$s = -1; return next;
}
outp = outp + (1) >> 0;
$s = 5; continue;
/* } else { */ case 4:
d = $clone(i.info, Properties).Decomposition();
/* */ if (!(d === sliceType$4.nil)) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!(d === sliceType$4.nil)) { */ case 6:
p$1 = outp + d.$length >> 0;
/* */ if (outp > 0) { $s = 9; continue; }
/* */ if ($clone(i.info, Properties).multiSegment()) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (outp > 0) { */ case 9:
i.rb.src.copySlice($subslice(new sliceType$4(i.buf), outCopyStart), inCopyStart, i.p);
if (p$1 > 128) {
next = $subslice(new sliceType$4(i.buf), 0, outp);
$s = -1; return next;
}
$s = 11; continue;
/* } else if ($clone(i.info, Properties).multiSegment()) { */ case 10:
/* */ if (i.multiSeg === sliceType$4.nil) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (i.multiSeg === sliceType$4.nil) { */ case 12:
i.multiSeg = d;
i.next = nextMulti;
_r = nextMulti(i); /* */ $s = 14; case 14: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
next = _r;
$s = -1; return next;
/* } */ case 13:
d = i.multiSeg;
i.multiSeg = sliceType$4.nil;
p$1 = d.$length;
/* } */ case 11:
prevCC = i.info.tccc;
i.p = i.p + (sz) >> 0;
/* */ if (i.p >= i.rb.nsrc) { $s = 15; continue; }
/* */ $s = 16; continue;
/* if (i.p >= i.rb.nsrc) { */ case 15:
i.setDone();
Properties.copy(i.info, new Properties.ptr(0, 0, 0, 0, 0, 0, 0));
$s = 17; continue;
/* } else { */ case 16:
_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; }
Properties.copy(i.info, _r$1);
/* } */ case 17:
_1 = (ss$24ptr || (ss$24ptr = new ptrType$1(function() { return ss; }, function($v) { ss = $v; }))).next($clone(i.info, Properties));
if (_1 === (2)) {
i.next = nextCGJDecompose;
if (outp > 0) {
$copySlice($subslice(new sliceType$4(i.buf), outp), d);
next = $subslice(new sliceType$4(i.buf), 0, p$1);
$s = -1; return next;
}
next = d;
$s = -1; return next;
} else if (_1 === (1)) {
if (outp > 0) {
$copySlice($subslice(new sliceType$4(i.buf), outp), d);
next = $subslice(new sliceType$4(i.buf), 0, p$1);
$s = -1; return next;
}
next = d;
$s = -1; return next;
}
$copySlice($subslice(new sliceType$4(i.buf), outp), d);
outp = p$1;
_tmp$2 = i.p;
_tmp$3 = outp;
inCopyStart = _tmp$2;
outCopyStart = _tmp$3;
/* */ if (i.info.ccc < prevCC) { $s = 19; continue; }
/* */ $s = 20; continue;
/* if (i.info.ccc < prevCC) { */ case 19:
/* goto doNorm */ $s = 21; continue;
/* } */ case 20:
/* continue; */ $s = 1; continue;
$s = 8; continue;
/* } else { */ case 7:
r = i.rb.src.hangul(i.p);
if (!((r === 0))) {
outp = decomposeHangul(new sliceType$4(i.buf), r);
i.p = i.p + (3) >> 0;
_tmp$4 = i.p;
_tmp$5 = outp;
inCopyStart = _tmp$4;
outCopyStart = _tmp$5;
if (i.p >= i.rb.nsrc) {
i.setDone();
/* break; */ $s = 2; continue;
} else if (!((i.rb.src.hangul(i.p) === 0))) {
i.next = nextHangul;
next = $subslice(new sliceType$4(i.buf), 0, outp);
$s = -1; return next;
}
} else {
p$2 = outp + sz >> 0;
if (p$2 > 128) {
/* break; */ $s = 2; continue;
}
outp = p$2;
i.p = i.p + (sz) >> 0;
}
/* } */ case 8:
/* } */ case 5:
if (i.p >= i.rb.nsrc) {
i.setDone();
/* break; */ $s = 2; continue;
}
prevCC$1 = i.info.tccc;
_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; }
Properties.copy(i.info, _r$2);
v = (ss$24ptr || (ss$24ptr = new ptrType$1(function() { return ss; }, function($v) { ss = $v; }))).next($clone(i.info, Properties));
if (v === 1) {
/* break; */ $s = 2; continue;
} else if (v === 2) {
i.next = nextCGJDecompose;
/* break; */ $s = 2; continue;
}
/* */ if (i.info.ccc < prevCC$1) { $s = 23; continue; }
/* */ $s = 24; continue;
/* if (i.info.ccc < prevCC$1) { */ case 23:
/* goto doNorm */ $s = 21; continue;
/* } */ case 24:
/* } */ $s = 1; continue; case 2:
if (outCopyStart === 0) {
next = i.returnSlice(inCopyStart, i.p);
$s = -1; return next;
} else if (inCopyStart < i.p) {
i.rb.src.copySlice($subslice(new sliceType$4(i.buf), outCopyStart), inCopyStart, i.p);
}
next = $subslice(new sliceType$4(i.buf), 0, outp);
$s = -1; return next;
/* doNorm: */ case 21:
i.rb.src.copySlice($subslice(new sliceType$4(i.buf), outCopyStart), inCopyStart, i.p);
_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; }
_r$3;
_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; }
next = _r$4;
$s = -1; return next;
/* */ } return; } if ($f === undefined) { $f = { $blk: nextDecomposed }; } $f.$ptr = $ptr; $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.ss = ss; $f.ss$24ptr = ss$24ptr; $f.sz = sz; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
doNormDecomposed = function(i) {
var $ptr, _r, i, s, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
/* while (true) { */ case 1:
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));
if (s === 2) {
i.next = nextCGJDecompose;
/* break; */ $s = 2; continue;
}
$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; }
i.p = i.p + (((i.info.size >> 0))) >> 0;
if (i.p >= i.rb.nsrc) {
i.setDone();
/* break; */ $s = 2; continue;
}
_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; }
Properties.copy(i.info, _r);
if (i.info.ccc === 0) {
/* break; */ $s = 2; continue;
}
/* } */ $s = 1; continue; case 2:
$s = -1; return $subslice(new sliceType$4(i.buf), 0, i.rb.flushCopy(new sliceType$4(i.buf)));
/* */ } return; } if ($f === undefined) { $f = { $blk: doNormDecomposed }; } $f.$ptr = $ptr; $f._r = _r; $f.i = i; $f.s = s; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
nextCGJDecompose = function(i) {
var $ptr, _r, buf, i, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; buf = $f.buf; i = $f.i; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
i.rb.ss = 0;
i.rb.insertCGJ();
i.next = nextDecomposed;
_r = doNormDecomposed(i); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
buf = _r;
$s = -1; return buf;
/* */ } return; } if ($f === undefined) { $f = { $blk: nextCGJDecompose }; } $f.$ptr = $ptr; $f._r = _r; $f.buf = buf; $f.i = i; $f.$s = $s; $f.$r = $r; return $f;
};
nextComposed = function(i) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, d, i, info, outp, p, prevCC, ss, ss$24ptr, startp, sz, v, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; ss = $f.ss; ss$24ptr = $f.ss$24ptr; startp = $f.startp; sz = $f.sz; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_tmp = 0;
_tmp$1 = i.p;
outp = _tmp;
startp = _tmp$1;
prevCC = 0;
ss = mkStreamSafe($clone(i.info, Properties));
/* while (true) { */ case 1:
/* */ if (!$clone(i.info, Properties).isYesC()) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!$clone(i.info, Properties).isYesC()) { */ case 3:
/* goto doNorm */ $s = 5; continue;
/* } */ case 4:
prevCC = i.info.tccc;
sz = ((i.info.size >> 0));
if (sz === 0) {
sz = 1;
}
p = outp + sz >> 0;
if (p > 128) {
/* break; */ $s = 2; continue;
}
outp = p;
i.p = i.p + (sz) >> 0;
if (i.p >= i.rb.nsrc) {
i.setDone();
/* break; */ $s = 2; continue;
} else if (i.rb.src._byte(i.p) < 128) {
i.next = i.asciiF;
/* break; */ $s = 2; continue;
}
_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; }
Properties.copy(i.info, _r);
v = (ss$24ptr || (ss$24ptr = new ptrType$1(function() { return ss; }, function($v) { ss = $v; }))).next($clone(i.info, Properties));
if (v === 1) {
/* break; */ $s = 2; continue;
} else if (v === 2) {
i.next = nextCGJCompose;
/* break; */ $s = 2; continue;
}
/* */ if (i.info.ccc < prevCC) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (i.info.ccc < prevCC) { */ case 7:
/* goto doNorm */ $s = 5; continue;
/* } */ case 8:
/* } */ $s = 1; continue; case 2:
$s = -1; return i.returnSlice(startp, i.p);
/* doNorm: */ case 5:
i.p = startp;
_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; }
Properties.copy(i.info, _r$1);
/* */ if ($clone(i.info, Properties).multiSegment()) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if ($clone(i.info, Properties).multiSegment()) { */ case 10:
d = $clone(i.info, Properties).Decomposition();
_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; }
info = $clone(_r$2, Properties);
$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; }
i.multiSeg = $subslice(d, ((info.size >> 0)));
i.next = nextMultiNorm;
_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; }
$s = -1; return _r$3;
/* } */ case 11:
(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));
$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; }
_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; }
$s = -1; return _r$4;
/* */ } return; } if ($f === undefined) { $f = { $blk: nextComposed }; } $f.$ptr = $ptr; $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.ss = ss; $f.ss$24ptr = ss$24ptr; $f.startp = startp; $f.sz = sz; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
doNormComposed = function(i) {
var $ptr, _r, i, s, seg, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
/* while (true) { */ case 1:
i.p = i.p + (((i.info.size >> 0))) >> 0;
if (i.p >= i.rb.nsrc) {
i.setDone();
/* break; */ $s = 2; continue;
}
_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; }
Properties.copy(i.info, _r);
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));
if (s === 1) {
/* break; */ $s = 2; continue;
} else if (s === 2) {
i.next = nextCGJCompose;
/* break; */ $s = 2; continue;
}
$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; }
/* } */ $s = 1; continue; case 2:
i.rb.compose();
seg = $subslice(new sliceType$4(i.buf), 0, i.rb.flushCopy(new sliceType$4(i.buf)));
$s = -1; return seg;
/* */ } return; } if ($f === undefined) { $f = { $blk: doNormComposed }; } $f.$ptr = $ptr; $f._r = _r; $f.i = i; $f.s = s; $f.seg = seg; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
nextCGJCompose = function(i) {
var $ptr, _r, i, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; i = $f.i; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
i.rb.ss = 0;
i.rb.insertCGJ();
i.next = nextComposed;
(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));
$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; }
_r = doNormComposed(i); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: nextCGJCompose }; } $f.$ptr = $ptr; $f._r = _r; $f.i = i; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
};
Form.prototype.Bytes = function(b) {
var $ptr, _r, _r$1, _tuple, b, f, ft, n, ok, out, rb, src, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
rb = [rb];
f = this.$val;
src = $clone(inputBytes(b), input);
ft = ((f < 0 || f >= formTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : formTable.$array[formTable.$offset + f]);
_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; }
_tuple = _r;
n = _tuple[0];
ok = _tuple[1];
if (ok) {
$s = -1; return b;
}
out = $makeSlice(sliceType$4, n, b.$length);
$copySlice(out, $subslice(b, 0, n));
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);
_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; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.Bytes }; } $f.$ptr = $ptr; $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;
};
$ptrType(Form).prototype.Bytes = function(b) { return new Form(this.$get()).Bytes(b); };
Form.prototype.String = function(s) {
var $ptr, _r, _r$1, _tuple, f, ft, n, ok, out, rb, s, src, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
rb = [rb];
f = this.$val;
src = $clone(inputString(s), input);
ft = ((f < 0 || f >= formTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : formTable.$array[formTable.$offset + f]);
_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; }
_tuple = _r;
n = _tuple[0];
ok = _tuple[1];
if (ok) {
$s = -1; return s;
}
out = $makeSlice(sliceType$4, n, s.length);
$copyString(out, $substring(s, 0, n));
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);
_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; }
$s = -1; return ($bytesToString(_r$1));
/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.String }; } $f.$ptr = $ptr; $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;
};
$ptrType(Form).prototype.String = function(s) { return new Form(this.$get()).String(s); };
Form.prototype.IsNormal = function(b) {
var $ptr, _r, _r$1, _r$2, _tuple, _tuple$1, b, bp, f, ft, ok, rb, src, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
rb = [rb];
f = this.$val;
src = $clone(inputBytes(b), input);
ft = ((f < 0 || f >= formTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : formTable.$array[formTable.$offset + f]);
_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; }
_tuple = _r;
bp = _tuple[0];
ok = _tuple[1];
if (ok) {
$s = -1; return true;
}
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);
rb[0].setFlusher(sliceType$4.nil, cmpNormalBytes);
/* while (true) { */ case 2:
/* if (!(bp < b.$length)) { break; } */ if(!(bp < b.$length)) { $s = 3; continue; }
rb[0].out = $subslice(b, bp);
_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; }
bp = _r$1;
if (bp < 0) {
$s = -1; return false;
}
_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; }
_tuple$1 = _r$2;
bp = _tuple$1[0];
/* } */ $s = 2; continue; case 3:
$s = -1; return true;
/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.IsNormal }; } $f.$ptr = $ptr; $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;
};
$ptrType(Form).prototype.IsNormal = function(b) { return new Form(this.$get()).IsNormal(b); };
cmpNormalBytes = function(rb) {
var $ptr, b, i, info, p, pe, rb, x, x$1;
b = rb.out;
i = 0;
while (true) {
if (!(i < rb.nrune)) { break; }
info = $clone((x = rb.rune, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i])), Properties);
if (((info.size >> 0)) > b.$length) {
return false;
}
p = info.pos;
pe = p + info.size << 24 >>> 24;
while (true) {
if (!(p < pe)) { break; }
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]))))) {
return false;
}
b = $subslice(b, 1);
p = p + (1) << 24 >>> 24;
}
i = i + (1) >> 0;
}
return true;
};
Form.prototype.IsNormalString = function(s) {
var $ptr, _r, _r$1, _r$2, _tuple, _tuple$1, bp, f, ft, ok, rb, s, src, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
bp = [bp];
rb = [rb];
s = [s];
f = this.$val;
src = $clone(inputString(s[0]), input);
ft = ((f < 0 || f >= formTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : formTable.$array[formTable.$offset + f]);
_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; }
_tuple = _r;
bp[0] = _tuple[0];
ok = _tuple[1];
if (ok) {
$s = -1; return true;
}
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);
rb[0].setFlusher(sliceType$4.nil, (function(bp, rb, s) { return function(rb$1) {
var $ptr, i, info, p, pe, rb$1, x, x$1;
i = 0;
while (true) {
if (!(i < rb$1.nrune)) { break; }
info = $clone((x = rb$1.rune, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i])), Properties);
if ((bp[0] + ((info.size >> 0)) >> 0) > s[0].length) {
return false;
}
p = info.pos;
pe = p + info.size << 24 >>> 24;
while (true) {
if (!(p < pe)) { break; }
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]))))) {
return false;
}
bp[0] = bp[0] + (1) >> 0;
p = p + (1) << 24 >>> 24;
}
i = i + (1) >> 0;
}
return true;
}; })(bp, rb, s));
/* while (true) { */ case 2:
/* if (!(bp[0] < s[0].length)) { break; } */ if(!(bp[0] < s[0].length)) { $s = 3; continue; }
_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; }
bp[0] = _r$1;
if (bp[0] < 0) {
$s = -1; return false;
}
_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; }
_tuple$1 = _r$2;
bp[0] = _tuple$1[0];
/* } */ $s = 2; continue; case 3:
$s = -1; return true;
/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.IsNormalString }; } $f.$ptr = $ptr; $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;
};
$ptrType(Form).prototype.IsNormalString = function(s) { return new Form(this.$get()).IsNormalString(s); };
patchTail = function(rb) {
var $ptr, _r, _r$1, _r$2, _r$3, _tuple, buf, end, extra, info, p, rb, s, x, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = lastRuneStart(rb.f, rb.out); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
info = $clone(_tuple[0], Properties);
p = _tuple[1];
if ((p === -1) || (info.size === 0)) {
$s = -1; return true;
}
end = p + ((info.size >> 0)) >> 0;
extra = rb.out.$length - end >> 0;
/* */ if (extra > 0) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (extra > 0) { */ case 2:
x = $makeSlice(sliceType$4, 0);
x = $appendSlice(x, $subslice(rb.out, (rb.out.$length - extra >> 0)));
rb.out = $subslice(rb.out, 0, end);
$r = decomposeToLastBoundary(rb); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_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; }
_r$1;
rb.out = $appendSlice(rb.out, x);
$s = -1; return false;
/* } */ case 3:
buf = $subslice(rb.out, p);
rb.out = $subslice(rb.out, 0, p);
$r = decomposeToLastBoundary(rb); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
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));
/* */ if (s === 1) { $s = 7; continue; }
/* */ if (s === 2) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (s === 1) { */ case 7:
_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; }
_r$2;
(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));
$s = 9; continue;
/* } else if (s === 2) { */ case 8:
_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; }
_r$3;
rb.insertCGJ();
rb.ss = 0;
/* } */ case 9:
$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; }
$s = -1; return true;
/* */ } return; } if ($f === undefined) { $f = { $blk: patchTail }; } $f.$ptr = $ptr; $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;
};
appendQuick = function(rb, i) {
var $ptr, _r, _tuple, end, i, rb, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
if (rb.nsrc === i) {
$s = -1; return i;
}
_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; }
_tuple = _r;
end = _tuple[0];
rb.out = rb.src.appendSlice(rb.out, i, end);
$s = -1; return end;
/* */ } return; } if ($f === undefined) { $f = { $blk: appendQuick }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.end = end; $f.i = i; $f.rb = rb; $f.$s = $s; $f.$r = $r; return $f;
};
Form.prototype.Append = function(out, src) {
var $ptr, _r, f, out, src, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
f = this.$val;
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.Append }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.out = out; $f.src = src; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(Form).prototype.Append = function(out, src) { return new Form(this.$get()).Append(out, src); };
Form.prototype.doAppend = function(out, src, n) {
var $ptr, _r, _r$1, _r$2, _tuple, f, ft, n, out, p, rb, rb$1, src, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
rb = [rb];
rb$1 = [rb$1];
f = this.$val;
if (n === 0) {
$s = -1; return out;
}
ft = ((f < 0 || f >= formTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : formTable.$array[formTable.$offset + f]);
/* */ if (out.$length === 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (out.$length === 0) { */ case 1:
_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; }
_tuple = _r;
p = _tuple[0];
out = src.appendSlice(out, 0, p);
if (p === n) {
$s = -1; return out;
}
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);
_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; }
$s = -1; return _r$1;
/* } */ case 2:
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);
_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; }
$s = -1; return _r$2;
/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.doAppend }; } $f.$ptr = $ptr; $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;
};
$ptrType(Form).prototype.doAppend = function(out, src, n) { return new Form(this.$get()).doAppend(out, src, n); };
doAppend = function(rb, out, p) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
rb.setFlusher(out, appendFlush);
_tmp = $clone(rb.src, input);
_tmp$1 = rb.nsrc;
src = $clone(_tmp, input);
n = _tmp$1;
doMerge = out.$length > 0;
q = src.skipContinuationBytes(p);
/* */ if (q > p) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (q > p) { */ case 1:
rb.out = src.appendSlice(rb.out, p, q);
p = q;
_r = patchTail(rb); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
doMerge = _r;
/* } */ case 2:
fd = rb.f;
/* */ if (doMerge) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (doMerge) { */ case 4:
info = new Properties.ptr(0, 0, 0, 0, 0, 0, 0);
/* */ if (p < n) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (p < n) { */ case 6:
_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; }
Properties.copy(info, _r$1);
/* */ if (!$clone(info, Properties).BoundaryBefore() || $clone(info, Properties).nLeadingNonStarters() > 0) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (!$clone(info, Properties).BoundaryBefore() || $clone(info, Properties).nLeadingNonStarters() > 0) { */ case 9:
/* */ if (p === 0) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if (p === 0) { */ case 11:
$r = decomposeToLastBoundary(rb); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 12:
_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; }
p = _r$2;
/* } */ case 10:
/* } */ case 7:
/* */ if (info.size === 0) { $s = 15; continue; }
/* */ $s = 16; continue;
/* if (info.size === 0) { */ case 15:
_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; }
_r$3;
$s = -1; return src.appendSlice(rb.out, p, n);
/* } */ case 16:
/* */ if (rb.nrune > 0) { $s = 18; continue; }
/* */ $s = 19; continue;
/* if (rb.nrune > 0) { */ case 18:
_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; }
$s = -1; return _r$4;
/* } */ case 19:
/* } */ case 5:
_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; }
p = _r$5;
_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; }
$s = -1; return _r$6;
/* */ } return; } if ($f === undefined) { $f = { $blk: doAppend }; } $f.$ptr = $ptr; $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;
};
doAppendInner = function(rb, p) {
var $ptr, _r, _r$1, n, p, rb, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = rb.nsrc;
/* while (true) { */ case 1:
/* if (!(p < n)) { break; } */ if(!(p < n)) { $s = 2; continue; }
_r = decomposeSegment(rb, p, true); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
p = _r;
_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; }
p = _r$1;
/* } */ $s = 1; continue; case 2:
$s = -1; return rb.out;
/* */ } return; } if ($f === undefined) { $f = { $blk: doAppendInner }; } $f.$ptr = $ptr; $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;
};
Form.prototype.AppendString = function(out, src) {
var $ptr, _r, f, out, src, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
f = this.$val;
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.AppendString }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.out = out; $f.src = src; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(Form).prototype.AppendString = function(out, src) { return new Form(this.$get()).AppendString(out, src); };
Form.prototype.QuickSpan = function(b) {
var $ptr, _r, _tuple, b, f, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
f = this.$val;
_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; }
_tuple = _r;
n = _tuple[0];
$s = -1; return n;
/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.QuickSpan }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.f = f; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(Form).prototype.QuickSpan = function(b) { return new Form(this.$get()).QuickSpan(b); };
Form.prototype.Span = function(b, atEOF) {
var $ptr, _r, _tmp, _tmp$1, _tuple, atEOF, b, err, f, n, ok, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
f = this.$val;
_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; }
_tuple = _r;
n = _tuple[0];
ok = _tuple[1];
if (n < b.$length) {
if (!ok) {
err = transform.ErrEndOfSpan;
} else {
err = transform.ErrShortSrc;
}
}
_tmp = n;
_tmp$1 = err;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.Span }; } $f.$ptr = $ptr; $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;
};
$ptrType(Form).prototype.Span = function(b, atEOF) { return new Form(this.$get()).Span(b, atEOF); };
Form.prototype.SpanString = function(s, atEOF) {
var $ptr, _r, _tmp, _tmp$1, _tuple, atEOF, err, f, n, ok, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
f = this.$val;
_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; }
_tuple = _r;
n = _tuple[0];
ok = _tuple[1];
if (n < s.length) {
if (!ok) {
err = transform.ErrEndOfSpan;
} else {
err = transform.ErrShortSrc;
}
}
_tmp = n;
_tmp$1 = err;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.SpanString }; } $f.$ptr = $ptr; $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;
};
$ptrType(Form).prototype.SpanString = function(s, atEOF) { return new Form(this.$get()).SpanString(s, atEOF); };
formInfo.ptr.prototype.quickSpan = function(src, i, end, atEOF) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
ok = false;
f = this;
lastCC = 0;
ss = 0;
lastSegStart = i;
n = end;
/* while (true) { */ case 1:
/* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 2; continue; }
j = src.skipASCII(i, n);
if (!((i === j))) {
i = j;
lastSegStart = i - 1 >> 0;
lastCC = 0;
ss = 0;
/* continue; */ $s = 1; continue;
}
_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; }
info = $clone(_r, Properties);
if (info.size === 0) {
if (atEOF) {
_tmp = n;
_tmp$1 = true;
n = _tmp;
ok = _tmp$1;
$s = -1; return [n, ok];
}
_tmp$2 = lastSegStart;
_tmp$3 = true;
n = _tmp$2;
ok = _tmp$3;
$s = -1; return [n, ok];
}
_1 = (ss$24ptr || (ss$24ptr = new ptrType$1(function() { return ss; }, function($v) { ss = $v; }))).next($clone(info, Properties));
if (_1 === (1)) {
(ss$24ptr || (ss$24ptr = new ptrType$1(function() { return ss; }, function($v) { ss = $v; }))).first($clone(info, Properties));
lastSegStart = i;
} else if (_1 === (2)) {
_tmp$4 = lastSegStart;
_tmp$5 = false;
n = _tmp$4;
ok = _tmp$5;
$s = -1; return [n, ok];
} else if (_1 === (0)) {
if (lastCC > info.ccc) {
_tmp$6 = lastSegStart;
_tmp$7 = false;
n = _tmp$6;
ok = _tmp$7;
$s = -1; return [n, ok];
}
}
if (f.composing) {
if (!$clone(info, Properties).isYesC()) {
/* break; */ $s = 2; continue;
}
} else {
if (!$clone(info, Properties).isYesD()) {
/* break; */ $s = 2; continue;
}
}
lastCC = info.ccc;
i = i + (((info.size >> 0))) >> 0;
/* } */ $s = 1; continue; case 2:
if (i === n) {
if (!atEOF) {
n = lastSegStart;
}
_tmp$8 = n;
_tmp$9 = true;
n = _tmp$8;
ok = _tmp$9;
$s = -1; return [n, ok];
}
_tmp$10 = lastSegStart;
_tmp$11 = false;
n = _tmp$10;
ok = _tmp$11;
$s = -1; return [n, ok];
/* */ } return; } if ($f === undefined) { $f = { $blk: formInfo.ptr.prototype.quickSpan }; } $f.$ptr = $ptr; $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;
};
formInfo.prototype.quickSpan = function(src, i, end, atEOF) { return this.$val.quickSpan(src, i, end, atEOF); };
Form.prototype.QuickSpanString = function(s) {
var $ptr, _r, _tuple, f, n, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
f = this.$val;
_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; }
_tuple = _r;
n = _tuple[0];
$s = -1; return n;
/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.QuickSpanString }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.f = f; $f.n = n; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(Form).prototype.QuickSpanString = function(s) { return new Form(this.$get()).QuickSpanString(s); };
Form.prototype.FirstBoundary = function(b) {
var $ptr, _r, b, f, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; b = $f.b; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
f = this.$val;
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.FirstBoundary }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(Form).prototype.FirstBoundary = function(b) { return new Form(this.$get()).FirstBoundary(b); };
Form.prototype.firstBoundary = function(src, nsrc) {
var $ptr, _r, f, fd, i, info, nsrc, s, src, ss, ss$24ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
f = this.$val;
i = src.skipContinuationBytes(0);
if (i >= nsrc) {
$s = -1; return -1;
}
fd = ((f < 0 || f >= formTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : formTable.$array[formTable.$offset + f]);
ss = 0;
/* while (true) { */ case 1:
_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; }
info = $clone(_r, Properties);
if (info.size === 0) {
$s = -1; return -1;
}
s = (ss$24ptr || (ss$24ptr = new ptrType$1(function() { return ss; }, function($v) { ss = $v; }))).next($clone(info, Properties));
if (!((s === 0))) {
$s = -1; return i;
}
i = i + (((info.size >> 0))) >> 0;
if (i >= nsrc) {
if (!$clone(info, Properties).BoundaryAfter() && !new streamSafe(ss).isMax()) {
$s = -1; return -1;
}
$s = -1; return nsrc;
}
/* } */ $s = 1; continue; case 2:
$s = -1; return 0;
/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.firstBoundary }; } $f.$ptr = $ptr; $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;
};
$ptrType(Form).prototype.firstBoundary = function(src, nsrc) { return new Form(this.$get()).firstBoundary(src, nsrc); };
Form.prototype.FirstBoundaryInString = function(s) {
var $ptr, _r, f, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; f = $f.f; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
f = this.$val;
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.FirstBoundaryInString }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(Form).prototype.FirstBoundaryInString = function(s) { return new Form(this.$get()).FirstBoundaryInString(s); };
Form.prototype.NextBoundary = function(b, atEOF) {
var $ptr, _r, atEOF, b, f, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
f = this.$val;
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.NextBoundary }; } $f.$ptr = $ptr; $f._r = _r; $f.atEOF = atEOF; $f.b = b; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(Form).prototype.NextBoundary = function(b, atEOF) { return new Form(this.$get()).NextBoundary(b, atEOF); };
Form.prototype.NextBoundaryInString = function(s, atEOF) {
var $ptr, _r, atEOF, f, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
f = this.$val;
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.NextBoundaryInString }; } $f.$ptr = $ptr; $f._r = _r; $f.atEOF = atEOF; $f.f = f; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(Form).prototype.NextBoundaryInString = function(s, atEOF) { return new Form(this.$get()).NextBoundaryInString(s, atEOF); };
Form.prototype.nextBoundary = function(src, nsrc, atEOF) {
var $ptr, _r, _r$1, atEOF, f, fd, i, info, nsrc, s, src, ss, ss$24ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
f = this.$val;
if (nsrc === 0) {
if (atEOF) {
$s = -1; return 0;
}
$s = -1; return -1;
}
fd = ((f < 0 || f >= formTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : formTable.$array[formTable.$offset + f]);
_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; }
info = $clone(_r, Properties);
if (info.size === 0) {
if (atEOF) {
$s = -1; return 1;
}
$s = -1; return -1;
}
ss = 0;
(ss$24ptr || (ss$24ptr = new ptrType$1(function() { return ss; }, function($v) { ss = $v; }))).first($clone(info, Properties));
i = ((info.size >> 0));
/* while (true) { */ case 2:
/* if (!(i < nsrc)) { break; } */ if(!(i < nsrc)) { $s = 3; continue; }
_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; }
Properties.copy(info, _r$1);
if (info.size === 0) {
if (atEOF) {
$s = -1; return i;
}
$s = -1; return -1;
}
s = (ss$24ptr || (ss$24ptr = new ptrType$1(function() { return ss; }, function($v) { ss = $v; }))).next($clone(info, Properties));
if (!((s === 0))) {
$s = -1; return i;
}
i = i + (((info.size >> 0))) >> 0;
/* } */ $s = 2; continue; case 3:
if (!atEOF && !$clone(info, Properties).BoundaryAfter() && !new streamSafe(ss).isMax()) {
$s = -1; return -1;
}
$s = -1; return nsrc;
/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.nextBoundary }; } $f.$ptr = $ptr; $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;
};
$ptrType(Form).prototype.nextBoundary = function(src, nsrc, atEOF) { return new Form(this.$get()).nextBoundary(src, nsrc, atEOF); };
Form.prototype.LastBoundary = function(b) {
var $ptr, _r, b, f, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; b = $f.b; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
f = this.$val;
_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; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.LastBoundary }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(Form).prototype.LastBoundary = function(b) { return new Form(this.$get()).LastBoundary(b); };
lastBoundary = function(fd, b) {
var $ptr, _r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, b, fd, i, info, p, ss, ss$24ptr, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
i = b.$length;
_r = lastRuneStart(fd, b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
info = $clone(_tuple[0], Properties);
p = _tuple[1];
if (p === -1) {
$s = -1; return -1;
}
/* */ if (info.size === 0) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (info.size === 0) { */ case 2:
if (p === 0) {
$s = -1; return -1;
}
i = p;
_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; }
_tuple$1 = _r$1;
Properties.copy(info, _tuple$1[0]);
p = _tuple$1[1];
if (p === -1) {
$s = -1; return i;
}
/* } */ case 3:
if (!(((p + ((info.size >> 0)) >> 0) === i))) {
$s = -1; return i;
}
if ($clone(info, Properties).BoundaryAfter()) {
$s = -1; return i;
}
ss = 0;
v = (ss$24ptr || (ss$24ptr = new ptrType$1(function() { return ss; }, function($v) { ss = $v; }))).backwards($clone(info, Properties));
i = p;
/* while (true) { */ case 5:
/* if (!(i >= 0 && !((v === 1)))) { break; } */ if(!(i >= 0 && !((v === 1)))) { $s = 6; continue; }
_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; }
_tuple$2 = _r$2;
Properties.copy(info, _tuple$2[0]);
p = _tuple$2[1];
v = (ss$24ptr || (ss$24ptr = new ptrType$1(function() { return ss; }, function($v) { ss = $v; }))).backwards($clone(info, Properties));
if (v === 2) {
/* break; */ $s = 6; continue;
}
if (!(((p + ((info.size >> 0)) >> 0) === i))) {
if (p === -1) {
$s = -1; return -1;
}
$s = -1; return i;
}
i = p;
/* } */ $s = 5; continue; case 6:
$s = -1; return i;
/* */ } return; } if ($f === undefined) { $f = { $blk: lastBoundary }; } $f.$ptr = $ptr; $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;
};
decomposeSegment = function(rb, sp, atEOF) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, atEOF, err, err$1, info, rb, s, s$1, sp, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_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; }
info = $clone(_r, Properties);
if (info.size === 0) {
$s = -1; return 0;
}
/* */ if (rb.nrune > 0) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (rb.nrune > 0) { */ case 2:
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));
/* */ if (s === 1) { $s = 5; continue; }
/* */ if (s === 2) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (s === 1) { */ case 5:
/* goto end */ $s = 8; continue;
$s = 7; continue;
/* } else if (s === 2) { */ case 6:
rb.insertCGJ();
/* goto end */ $s = 8; continue;
/* } */ case 7:
$s = 4; continue;
/* } else { */ case 3:
(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));
/* } */ case 4:
_r$1 = rb.insertFlush($clone(rb.src, input), sp, $clone(info, Properties)); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
err = _r$1;
if (!((err === 0))) {
$s = -1; return ((err >> 0));
}
/* while (true) { */ case 10:
sp = sp + (((info.size >> 0))) >> 0;
if (sp >= rb.nsrc) {
if (!atEOF && !$clone(info, Properties).BoundaryAfter()) {
$s = -1; return -2;
}
/* break; */ $s = 11; continue;
}
_r$2 = rb.f.info($clone(rb.src, input), sp); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
Properties.copy(info, _r$2);
if (info.size === 0) {
if (!atEOF) {
$s = -1; return -2;
}
/* break; */ $s = 11; continue;
}
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));
if (s$1 === 1) {
/* break; */ $s = 11; continue;
} else if (s$1 === 2) {
rb.insertCGJ();
/* break; */ $s = 11; continue;
}
_r$3 = rb.insertFlush($clone(rb.src, input), sp, $clone(info, Properties)); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
err$1 = _r$3;
if (!((err$1 === 0))) {
$s = -1; return ((err$1 >> 0));
}
/* } */ $s = 10; continue; case 11:
/* end: */ case 8:
_r$4 = rb.doFlush(); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
/* */ if (!_r$4) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if (!_r$4) { */ case 14:
$s = -1; return -1;
/* } */ case 15:
$s = -1; return sp;
/* */ } return; } if ($f === undefined) { $f = { $blk: decomposeSegment }; } $f.$ptr = $ptr; $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;
};
lastRuneStart = function(fd, buf) {
var $ptr, _r, buf, fd, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
p = buf.$length - 1 >> 0;
while (true) {
if (!(p >= 0 && !utf8.RuneStart(((p < 0 || p >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + p])))) { break; }
p = p - (1) >> 0;
}
if (p < 0) {
$s = -1; return [new Properties.ptr(0, 0, 0, 0, 0, 0, 0), -1];
}
_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; }
$s = -1; return [_r, p];
/* */ } return; } if ($f === undefined) { $f = { $blk: lastRuneStart }; } $f.$ptr = $ptr; $f._r = _r; $f.buf = buf; $f.fd = fd; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
};
decomposeToLastBoundary = function(rb) {
var $ptr, _r, _r$1, _tuple, _tuple$1, add, buf, cp, fd, i, info, p, padd, rb, ss, ss$24ptr, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
fd = rb.f;
_r = lastRuneStart(fd, rb.out); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
info = $clone(_tuple[0], Properties);
i = _tuple[1];
if (!((((info.size >> 0)) === (rb.out.$length - i >> 0)))) {
$s = -1; return;
}
if ($clone(info, Properties).BoundaryAfter()) {
$s = -1; return;
}
add = arrayType$2.zero();
padd = 0;
ss = 0;
p = rb.out.$length;
/* while (true) { */ case 2:
Properties.copy(((padd < 0 || padd >= add.length) ? ($throwRuntimeError("index out of range"), undefined) : add[padd]), info);
v = (ss$24ptr || (ss$24ptr = new ptrType$1(function() { return ss; }, function($v) { ss = $v; }))).backwards($clone(info, Properties));
if (v === 2) {
/* break; */ $s = 3; continue;
}
padd = padd + (1) >> 0;
p = p - (((info.size >> 0))) >> 0;
if ((v === 1) || p < 0) {
/* break; */ $s = 3; continue;
}
_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; }
_tuple$1 = _r$1;
Properties.copy(info, _tuple$1[0]);
i = _tuple$1[1];
if (!((((info.size >> 0)) === (p - i >> 0)))) {
/* break; */ $s = 3; continue;
}
/* } */ $s = 2; continue; case 3:
rb.ss = ss;
buf = arrayType$1.zero();
cp = $subslice(new sliceType$4(buf), 0, $copySlice(new sliceType$4(buf), $subslice(rb.out, p)));
rb.out = $subslice(rb.out, 0, p);
padd = padd - (1) >> 0;
/* while (true) { */ case 5:
/* if (!(padd >= 0)) { break; } */ if(!(padd >= 0)) { $s = 6; continue; }
Properties.copy(info, ((padd < 0 || padd >= add.length) ? ($throwRuntimeError("index out of range"), undefined) : add[padd]));
$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; }
cp = $subslice(cp, info.size);
padd = padd - (1) >> 0;
/* } */ $s = 5; continue; case 6:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: decomposeToLastBoundary }; } $f.$ptr = $ptr; $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;
};
normWriter.ptr.prototype.Write = function(data) {
var $ptr, _r, _r$1, _r$2, _tmp, _tmp$1, _tuple, bn, data, err, i, m, n, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
n = 0;
err = $ifaceNil;
w = this;
/* while (true) { */ case 1:
/* if (!(data.$length > 0)) { break; } */ if(!(data.$length > 0)) { $s = 2; continue; }
m = data.$length;
if (m > 4000) {
m = 4000;
}
input.copy(w.rb.src, inputBytes($subslice(data, 0, m)));
w.rb.nsrc = m;
_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; }
w.buf = _r;
data = $subslice(data, m);
n = n + (m) >> 0;
_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; }
i = _r$1;
if (i === -1) {
i = 0;
}
/* */ if (i > 0) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (i > 0) { */ case 5:
_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; }
_tuple = _r$2;
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
/* break; */ $s = 2; continue;
}
bn = $copySlice(w.buf, $subslice(w.buf, i));
w.buf = $subslice(w.buf, 0, bn);
/* } */ case 6:
/* } */ $s = 1; continue; case 2:
_tmp = n;
_tmp$1 = err;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: normWriter.ptr.prototype.Write }; } $f.$ptr = $ptr; $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;
};
normWriter.prototype.Write = function(data) { return this.$val.Write(data); };
normWriter.ptr.prototype.Close = function() {
var $ptr, _r, _tuple, err, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
w = this;
/* */ if (w.buf.$length > 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (w.buf.$length > 0) { */ case 1:
_r = w.w.Write(w.buf); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
/* } */ case 2:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: normWriter.ptr.prototype.Close }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
normWriter.prototype.Close = function() { return this.$val.Close(); };
Form.prototype.Writer = function(w) {
var $ptr, f, w, wr;
f = this.$val;
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);
wr.rb.init(f, sliceType$4.nil);
return wr;
};
$ptrType(Form).prototype.Writer = function(w) { return new Form(this.$get()).Writer(w); };
normReader.ptr.prototype.Read = function(p) {
var $ptr, _r, _r$1, _r$2, _tmp, _tmp$1, _tuple, err, n, n$1, outn, p, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
r = this;
/* while (true) { */ case 1:
if ((r.lastBoundary - r.bufStart >> 0) > 0) {
n = $copySlice(p, $subslice(r.outbuf, r.bufStart, r.lastBoundary));
r.bufStart = r.bufStart + (n) >> 0;
if ((r.lastBoundary - r.bufStart >> 0) > 0) {
$s = -1; return [n, $ifaceNil];
}
$s = -1; return [n, r.err];
}
if (!($interfaceIsEqual(r.err, $ifaceNil))) {
$s = -1; return [0, r.err];
}
outn = $copySlice(r.outbuf, $subslice(r.outbuf, r.lastBoundary));
r.outbuf = $subslice(r.outbuf, 0, outn);
r.bufStart = 0;
_r = r.r.Read(r.inbuf); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n$1 = _tuple[0];
err = _tuple[1];
input.copy(r.rb.src, inputBytes($subslice(r.inbuf, 0, n$1)));
_tmp = n$1;
_tmp$1 = err;
r.rb.nsrc = _tmp;
r.err = _tmp$1;
/* */ if (n$1 > 0) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (n$1 > 0) { */ case 4:
_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; }
r.outbuf = _r$1;
/* } */ case 5:
/* */ if ($interfaceIsEqual(err, io.EOF)) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if ($interfaceIsEqual(err, io.EOF)) { */ case 7:
r.lastBoundary = r.outbuf.$length;
$s = 9; continue;
/* } else { */ case 8:
_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; }
r.lastBoundary = _r$2;
if (r.lastBoundary === -1) {
r.lastBoundary = 0;
}
/* } */ case 9:
/* } */ $s = 1; continue; case 2:
$s = -1; return [0, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: normReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $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;
};
normReader.prototype.Read = function(p) { return this.$val.Read(p); };
Form.prototype.Reader = function(r) {
var $ptr, buf, f, r, rr;
f = this.$val;
buf = $makeSlice(sliceType$4, 4000);
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);
rr.rb.init(f, buf);
return rr;
};
$ptrType(Form).prototype.Reader = function(r) { return new Form(this.$get()).Reader(r); };
nfcTrie.ptr.prototype.lookup = function(s) {
var $ptr, _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;
v = 0;
sz = 0;
t = this;
c0 = (0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]);
if (c0 < 128) {
_tmp = ((c0 < 0 || c0 >= nfcValues.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcValues[c0]);
_tmp$1 = 1;
v = _tmp;
sz = _tmp$1;
return [v, sz];
} else if (c0 < 194) {
_tmp$2 = 0;
_tmp$3 = 1;
v = _tmp$2;
sz = _tmp$3;
return [v, sz];
} else if (c0 < 224) {
if (s.$length < 2) {
_tmp$4 = 0;
_tmp$5 = 0;
v = _tmp$4;
sz = _tmp$5;
return [v, sz];
}
i = ((c0 < 0 || c0 >= nfcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcIndex[c0]);
c1 = (1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]);
if (c1 < 128 || 192 <= c1) {
_tmp$6 = 0;
_tmp$7 = 1;
v = _tmp$6;
sz = _tmp$7;
return [v, sz];
}
_tmp$8 = t.lookupValue(((i >>> 0)), c1);
_tmp$9 = 2;
v = _tmp$8;
sz = _tmp$9;
return [v, sz];
} else if (c0 < 240) {
if (s.$length < 3) {
_tmp$10 = 0;
_tmp$11 = 0;
v = _tmp$10;
sz = _tmp$11;
return [v, sz];
}
i$1 = ((c0 < 0 || c0 >= nfcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcIndex[c0]);
c1$1 = (1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]);
if (c1$1 < 128 || 192 <= c1$1) {
_tmp$12 = 0;
_tmp$13 = 1;
v = _tmp$12;
sz = _tmp$13;
return [v, sz];
}
o = (((i$1 >>> 0)) << 6 >>> 0) + ((c1$1 >>> 0)) >>> 0;
i$1 = ((o < 0 || o >= nfcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcIndex[o]);
c2 = (2 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 2]);
if (c2 < 128 || 192 <= c2) {
_tmp$14 = 0;
_tmp$15 = 2;
v = _tmp$14;
sz = _tmp$15;
return [v, sz];
}
_tmp$16 = t.lookupValue(((i$1 >>> 0)), c2);
_tmp$17 = 3;
v = _tmp$16;
sz = _tmp$17;
return [v, sz];
} else if (c0 < 248) {
if (s.$length < 4) {
_tmp$18 = 0;
_tmp$19 = 0;
v = _tmp$18;
sz = _tmp$19;
return [v, sz];
}
i$2 = ((c0 < 0 || c0 >= nfcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcIndex[c0]);
c1$2 = (1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]);
if (c1$2 < 128 || 192 <= c1$2) {
_tmp$20 = 0;
_tmp$21 = 1;
v = _tmp$20;
sz = _tmp$21;
return [v, sz];
}
o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c1$2 >>> 0)) >>> 0;
i$2 = ((o$1 < 0 || o$1 >= nfcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcIndex[o$1]);
c2$1 = (2 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 2]);
if (c2$1 < 128 || 192 <= c2$1) {
_tmp$22 = 0;
_tmp$23 = 2;
v = _tmp$22;
sz = _tmp$23;
return [v, sz];
}
o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c2$1 >>> 0)) >>> 0;
i$2 = ((o$1 < 0 || o$1 >= nfcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcIndex[o$1]);
c3 = (3 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 3]);
if (c3 < 128 || 192 <= c3) {
_tmp$24 = 0;
_tmp$25 = 3;
v = _tmp$24;
sz = _tmp$25;
return [v, sz];
}
_tmp$26 = t.lookupValue(((i$2 >>> 0)), c3);
_tmp$27 = 4;
v = _tmp$26;
sz = _tmp$27;
return [v, sz];
}
_tmp$28 = 0;
_tmp$29 = 1;
v = _tmp$28;
sz = _tmp$29;
return [v, sz];
};
nfcTrie.prototype.lookup = function(s) { return this.$val.lookup(s); };
nfcTrie.ptr.prototype.lookupString = function(s) {
var $ptr, _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;
v = 0;
sz = 0;
t = this;
c0 = s.charCodeAt(0);
if (c0 < 128) {
_tmp = ((c0 < 0 || c0 >= nfcValues.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcValues[c0]);
_tmp$1 = 1;
v = _tmp;
sz = _tmp$1;
return [v, sz];
} else if (c0 < 194) {
_tmp$2 = 0;
_tmp$3 = 1;
v = _tmp$2;
sz = _tmp$3;
return [v, sz];
} else if (c0 < 224) {
if (s.length < 2) {
_tmp$4 = 0;
_tmp$5 = 0;
v = _tmp$4;
sz = _tmp$5;
return [v, sz];
}
i = ((c0 < 0 || c0 >= nfcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcIndex[c0]);
c1 = s.charCodeAt(1);
if (c1 < 128 || 192 <= c1) {
_tmp$6 = 0;
_tmp$7 = 1;
v = _tmp$6;
sz = _tmp$7;
return [v, sz];
}
_tmp$8 = t.lookupValue(((i >>> 0)), c1);
_tmp$9 = 2;
v = _tmp$8;
sz = _tmp$9;
return [v, sz];
} else if (c0 < 240) {
if (s.length < 3) {
_tmp$10 = 0;
_tmp$11 = 0;
v = _tmp$10;
sz = _tmp$11;
return [v, sz];
}
i$1 = ((c0 < 0 || c0 >= nfcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcIndex[c0]);
c1$1 = s.charCodeAt(1);
if (c1$1 < 128 || 192 <= c1$1) {
_tmp$12 = 0;
_tmp$13 = 1;
v = _tmp$12;
sz = _tmp$13;
return [v, sz];
}
o = (((i$1 >>> 0)) << 6 >>> 0) + ((c1$1 >>> 0)) >>> 0;
i$1 = ((o < 0 || o >= nfcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcIndex[o]);
c2 = s.charCodeAt(2);
if (c2 < 128 || 192 <= c2) {
_tmp$14 = 0;
_tmp$15 = 2;
v = _tmp$14;
sz = _tmp$15;
return [v, sz];
}
_tmp$16 = t.lookupValue(((i$1 >>> 0)), c2);
_tmp$17 = 3;
v = _tmp$16;
sz = _tmp$17;
return [v, sz];
} else if (c0 < 248) {
if (s.length < 4) {
_tmp$18 = 0;
_tmp$19 = 0;
v = _tmp$18;
sz = _tmp$19;
return [v, sz];
}
i$2 = ((c0 < 0 || c0 >= nfcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcIndex[c0]);
c1$2 = s.charCodeAt(1);
if (c1$2 < 128 || 192 <= c1$2) {
_tmp$20 = 0;
_tmp$21 = 1;
v = _tmp$20;
sz = _tmp$21;
return [v, sz];
}
o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c1$2 >>> 0)) >>> 0;
i$2 = ((o$1 < 0 || o$1 >= nfcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcIndex[o$1]);
c2$1 = s.charCodeAt(2);
if (c2$1 < 128 || 192 <= c2$1) {
_tmp$22 = 0;
_tmp$23 = 2;
v = _tmp$22;
sz = _tmp$23;
return [v, sz];
}
o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c2$1 >>> 0)) >>> 0;
i$2 = ((o$1 < 0 || o$1 >= nfcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcIndex[o$1]);
c3 = s.charCodeAt(3);
if (c3 < 128 || 192 <= c3) {
_tmp$24 = 0;
_tmp$25 = 3;
v = _tmp$24;
sz = _tmp$25;
return [v, sz];
}
_tmp$26 = t.lookupValue(((i$2 >>> 0)), c3);
_tmp$27 = 4;
v = _tmp$26;
sz = _tmp$27;
return [v, sz];
}
_tmp$28 = 0;
_tmp$29 = 1;
v = _tmp$28;
sz = _tmp$29;
return [v, sz];
};
nfcTrie.prototype.lookupString = function(s) { return this.$val.lookupString(s); };
newNfcTrie = function(i) {
var $ptr, i;
return new nfcTrie.ptr();
};
nfcTrie.ptr.prototype.lookupValue = function(n, b) {
var $ptr, b, n, t, x;
t = this;
if (n < 44) {
return ((x = (n << 6 >>> 0) + ((b >>> 0)) >>> 0, ((x < 0 || x >= nfcValues.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcValues[x])));
} else {
n = n - (44) >>> 0;
return (nfcSparse.lookup(n, b));
}
};
nfcTrie.prototype.lookupValue = function(n, b) { return this.$val.lookupValue(n, b); };
nfkcTrie.ptr.prototype.lookup = function(s) {
var $ptr, _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;
v = 0;
sz = 0;
t = this;
c0 = (0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]);
if (c0 < 128) {
_tmp = ((c0 < 0 || c0 >= nfkcValues.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcValues[c0]);
_tmp$1 = 1;
v = _tmp;
sz = _tmp$1;
return [v, sz];
} else if (c0 < 194) {
_tmp$2 = 0;
_tmp$3 = 1;
v = _tmp$2;
sz = _tmp$3;
return [v, sz];
} else if (c0 < 224) {
if (s.$length < 2) {
_tmp$4 = 0;
_tmp$5 = 0;
v = _tmp$4;
sz = _tmp$5;
return [v, sz];
}
i = ((c0 < 0 || c0 >= nfkcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcIndex[c0]);
c1 = (1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]);
if (c1 < 128 || 192 <= c1) {
_tmp$6 = 0;
_tmp$7 = 1;
v = _tmp$6;
sz = _tmp$7;
return [v, sz];
}
_tmp$8 = t.lookupValue(((i >>> 0)), c1);
_tmp$9 = 2;
v = _tmp$8;
sz = _tmp$9;
return [v, sz];
} else if (c0 < 240) {
if (s.$length < 3) {
_tmp$10 = 0;
_tmp$11 = 0;
v = _tmp$10;
sz = _tmp$11;
return [v, sz];
}
i$1 = ((c0 < 0 || c0 >= nfkcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcIndex[c0]);
c1$1 = (1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]);
if (c1$1 < 128 || 192 <= c1$1) {
_tmp$12 = 0;
_tmp$13 = 1;
v = _tmp$12;
sz = _tmp$13;
return [v, sz];
}
o = (((i$1 >>> 0)) << 6 >>> 0) + ((c1$1 >>> 0)) >>> 0;
i$1 = ((o < 0 || o >= nfkcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcIndex[o]);
c2 = (2 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 2]);
if (c2 < 128 || 192 <= c2) {
_tmp$14 = 0;
_tmp$15 = 2;
v = _tmp$14;
sz = _tmp$15;
return [v, sz];
}
_tmp$16 = t.lookupValue(((i$1 >>> 0)), c2);
_tmp$17 = 3;
v = _tmp$16;
sz = _tmp$17;
return [v, sz];
} else if (c0 < 248) {
if (s.$length < 4) {
_tmp$18 = 0;
_tmp$19 = 0;
v = _tmp$18;
sz = _tmp$19;
return [v, sz];
}
i$2 = ((c0 < 0 || c0 >= nfkcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcIndex[c0]);
c1$2 = (1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]);
if (c1$2 < 128 || 192 <= c1$2) {
_tmp$20 = 0;
_tmp$21 = 1;
v = _tmp$20;
sz = _tmp$21;
return [v, sz];
}
o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c1$2 >>> 0)) >>> 0;
i$2 = ((o$1 < 0 || o$1 >= nfkcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcIndex[o$1]);
c2$1 = (2 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 2]);
if (c2$1 < 128 || 192 <= c2$1) {
_tmp$22 = 0;
_tmp$23 = 2;
v = _tmp$22;
sz = _tmp$23;
return [v, sz];
}
o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c2$1 >>> 0)) >>> 0;
i$2 = ((o$1 < 0 || o$1 >= nfkcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcIndex[o$1]);
c3 = (3 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 3]);
if (c3 < 128 || 192 <= c3) {
_tmp$24 = 0;
_tmp$25 = 3;
v = _tmp$24;
sz = _tmp$25;
return [v, sz];
}
_tmp$26 = t.lookupValue(((i$2 >>> 0)), c3);
_tmp$27 = 4;
v = _tmp$26;
sz = _tmp$27;
return [v, sz];
}
_tmp$28 = 0;
_tmp$29 = 1;
v = _tmp$28;
sz = _tmp$29;
return [v, sz];
};
nfkcTrie.prototype.lookup = function(s) { return this.$val.lookup(s); };
nfkcTrie.ptr.prototype.lookupString = function(s) {
var $ptr, _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;
v = 0;
sz = 0;
t = this;
c0 = s.charCodeAt(0);
if (c0 < 128) {
_tmp = ((c0 < 0 || c0 >= nfkcValues.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcValues[c0]);
_tmp$1 = 1;
v = _tmp;
sz = _tmp$1;
return [v, sz];
} else if (c0 < 194) {
_tmp$2 = 0;
_tmp$3 = 1;
v = _tmp$2;
sz = _tmp$3;
return [v, sz];
} else if (c0 < 224) {
if (s.length < 2) {
_tmp$4 = 0;
_tmp$5 = 0;
v = _tmp$4;
sz = _tmp$5;
return [v, sz];
}
i = ((c0 < 0 || c0 >= nfkcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcIndex[c0]);
c1 = s.charCodeAt(1);
if (c1 < 128 || 192 <= c1) {
_tmp$6 = 0;
_tmp$7 = 1;
v = _tmp$6;
sz = _tmp$7;
return [v, sz];
}
_tmp$8 = t.lookupValue(((i >>> 0)), c1);
_tmp$9 = 2;
v = _tmp$8;
sz = _tmp$9;
return [v, sz];
} else if (c0 < 240) {
if (s.length < 3) {
_tmp$10 = 0;
_tmp$11 = 0;
v = _tmp$10;
sz = _tmp$11;
return [v, sz];
}
i$1 = ((c0 < 0 || c0 >= nfkcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcIndex[c0]);
c1$1 = s.charCodeAt(1);
if (c1$1 < 128 || 192 <= c1$1) {
_tmp$12 = 0;
_tmp$13 = 1;
v = _tmp$12;
sz = _tmp$13;
return [v, sz];
}
o = (((i$1 >>> 0)) << 6 >>> 0) + ((c1$1 >>> 0)) >>> 0;
i$1 = ((o < 0 || o >= nfkcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcIndex[o]);
c2 = s.charCodeAt(2);
if (c2 < 128 || 192 <= c2) {
_tmp$14 = 0;
_tmp$15 = 2;
v = _tmp$14;
sz = _tmp$15;
return [v, sz];
}
_tmp$16 = t.lookupValue(((i$1 >>> 0)), c2);
_tmp$17 = 3;
v = _tmp$16;
sz = _tmp$17;
return [v, sz];
} else if (c0 < 248) {
if (s.length < 4) {
_tmp$18 = 0;
_tmp$19 = 0;
v = _tmp$18;
sz = _tmp$19;
return [v, sz];
}
i$2 = ((c0 < 0 || c0 >= nfkcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcIndex[c0]);
c1$2 = s.charCodeAt(1);
if (c1$2 < 128 || 192 <= c1$2) {
_tmp$20 = 0;
_tmp$21 = 1;
v = _tmp$20;
sz = _tmp$21;
return [v, sz];
}
o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c1$2 >>> 0)) >>> 0;
i$2 = ((o$1 < 0 || o$1 >= nfkcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcIndex[o$1]);
c2$1 = s.charCodeAt(2);
if (c2$1 < 128 || 192 <= c2$1) {
_tmp$22 = 0;
_tmp$23 = 2;
v = _tmp$22;
sz = _tmp$23;
return [v, sz];
}
o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c2$1 >>> 0)) >>> 0;
i$2 = ((o$1 < 0 || o$1 >= nfkcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcIndex[o$1]);
c3 = s.charCodeAt(3);
if (c3 < 128 || 192 <= c3) {
_tmp$24 = 0;
_tmp$25 = 3;
v = _tmp$24;
sz = _tmp$25;
return [v, sz];
}
_tmp$26 = t.lookupValue(((i$2 >>> 0)), c3);
_tmp$27 = 4;
v = _tmp$26;
sz = _tmp$27;
return [v, sz];
}
_tmp$28 = 0;
_tmp$29 = 1;
v = _tmp$28;
sz = _tmp$29;
return [v, sz];
};
nfkcTrie.prototype.lookupString = function(s) { return this.$val.lookupString(s); };
newNfkcTrie = function(i) {
var $ptr, i;
return new nfkcTrie.ptr();
};
nfkcTrie.ptr.prototype.lookupValue = function(n, b) {
var $ptr, b, n, t, x;
t = this;
if (n < 90) {
return ((x = (n << 6 >>> 0) + ((b >>> 0)) >>> 0, ((x < 0 || x >= nfkcValues.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcValues[x])));
} else {
n = n - (90) >>> 0;
return (nfkcSparse.lookup(n, b));
}
};
nfkcTrie.prototype.lookupValue = function(n, b) { return this.$val.lookupValue(n, b); };
Form.prototype.Reset = function() {
var $ptr;
};
$ptrType(Form).prototype.Reset = function() { return new Form(this.$get()).Reset(); };
Form.prototype.Transform = function(dst, src, atEOF) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
nDst = 0;
nSrc = 0;
err = $ifaceNil;
f = this.$val;
n = 0;
b = src;
eof = atEOF;
ns = dst.$length;
if (ns < b.$length) {
err = transform.ErrShortDst;
eof = false;
b = $subslice(b, 0, ns);
}
_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; }
_tuple = _r;
i = _tuple[0];
ok = _tuple[1];
n = n + ($copySlice($subslice(dst, n), $subslice(b, n, i))) >> 0;
/* */ if (!ok) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!ok) { */ case 2:
_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; }
_tuple$1 = _r$1;
nDst = _tuple$1[0];
nSrc = _tuple$1[1];
err = _tuple$1[2];
_tmp = nDst + n >> 0;
_tmp$1 = nSrc + n >> 0;
_tmp$2 = err;
nDst = _tmp;
nSrc = _tmp$1;
err = _tmp$2;
$s = -1; return [nDst, nSrc, err];
/* } */ case 3:
if (n < src.$length && !atEOF) {
err = transform.ErrShortSrc;
}
_tmp$3 = n;
_tmp$4 = n;
_tmp$5 = err;
nDst = _tmp$3;
nSrc = _tmp$4;
err = _tmp$5;
$s = -1; return [nDst, nSrc, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.Transform }; } $f.$ptr = $ptr; $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;
};
$ptrType(Form).prototype.Transform = function(dst, src, atEOF) { return new Form(this.$get()).Transform(dst, src, atEOF); };
flushTransform = function(rb) {
var $ptr, rb;
if (rb.out.$length < ($imul(rb.nrune, 4))) {
return false;
}
rb.out = $subslice(rb.out, rb.flushCopy(rb.out));
return true;
};
Form.prototype.transform = function(dst, src, atEOF) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
rb = [rb];
nDst = 0;
nSrc = 0;
err = $ifaceNil;
f = this.$val;
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);
rb[0].init(f, src);
/* while (true) { */ case 1:
rb[0].setFlusher($subslice(dst, nDst), flushTransform);
_r = decomposeSegment(rb[0], nSrc, atEOF); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
end = _r;
if (end < 0) {
_tmp = nDst;
_tmp$1 = nSrc;
_tmp$2 = (x = -end, ((x < 0 || x >= errs.$length) ? ($throwRuntimeError("index out of range"), undefined) : errs.$array[errs.$offset + x]));
nDst = _tmp;
nSrc = _tmp$1;
err = _tmp$2;
$s = -1; return [nDst, nSrc, err];
}
nDst = dst.$length - rb[0].out.$length >> 0;
nSrc = end;
end = rb[0].nsrc;
eof = atEOF;
n = (nSrc + dst.$length >> 0) - nDst >> 0;
if (n < end) {
err = transform.ErrShortDst;
end = n;
eof = false;
}
_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; }
_tuple = _r$1;
end = _tuple[0];
ok = _tuple[1];
n$1 = $copySlice($subslice(dst, nDst), $subslice(rb[0].src.bytes, nSrc, end));
nSrc = nSrc + (n$1) >> 0;
nDst = nDst + (n$1) >> 0;
if (ok) {
if (n$1 < rb[0].nsrc && !atEOF) {
err = transform.ErrShortSrc;
}
_tmp$3 = nDst;
_tmp$4 = nSrc;
_tmp$5 = err;
nDst = _tmp$3;
nSrc = _tmp$4;
err = _tmp$5;
$s = -1; return [nDst, nSrc, err];
}
/* } */ $s = 1; continue; case 2:
$s = -1; return [nDst, nSrc, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.transform }; } $f.$ptr = $ptr; $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;
};
$ptrType(Form).prototype.transform = function(dst, src, atEOF) { return new Form(this.$get()).transform(dst, src, atEOF); };
sparseBlocks.ptr.prototype.lookup = function(n, b) {
var $ptr, _q, b, header, hi, lo, m, n, offset, r, t, x, x$1, x$2;
t = this;
offset = (x = t.offset, ((n < 0 || n >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + n]));
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);
lo = offset + 1 << 16 >>> 16;
hi = lo + ((header.lo << 16 >>> 16)) << 16 >>> 16;
while (true) {
if (!(lo < hi)) { break; }
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;
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);
if (r.lo <= b && b <= r.hi) {
return r.value + ((((b - r.lo << 24 >>> 24) << 16 >>> 16)) * header.value << 16 >>> 16) << 16 >>> 16;
}
if (b < r.lo) {
hi = m;
} else {
lo = m + 1 << 16 >>> 16;
}
}
return 0;
};
sparseBlocks.prototype.lookup = function(n, b) { return this.$val.lookup(n, b); };
streamSafe.methods = [{prop: "isMax", name: "isMax", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([], [$Bool], false)}];
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)}];
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)}];
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)}];
ptrType.methods = [{prop: "quickSpan", name: "quickSpan", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([input, $Int, $Int, $Bool], [$Int, $Bool], false)}];
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)}];
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)}];
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)}];
ptrType$5.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$4], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
ptrType$6.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$4], [$Int, $error], false)}];
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)}];
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)}];
ptrType$9.methods = [{prop: "lookup", name: "lookup", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([$Uint32, $Uint8], [$Uint16], false)}];
reorderBuffer.init("vendor/golang_org/x/text/unicode/norm", [{prop: "rune", name: "rune", exported: false, typ: arrayType, tag: ""}, {prop: "byte$1", name: "byte", exported: false, typ: arrayType$1, tag: ""}, {prop: "nbyte", name: "nbyte", exported: false, typ: $Uint8, tag: ""}, {prop: "ss", name: "ss", exported: false, typ: streamSafe, tag: ""}, {prop: "nrune", name: "nrune", exported: false, typ: $Int, tag: ""}, {prop: "f", name: "f", exported: false, typ: formInfo, tag: ""}, {prop: "src", name: "src", exported: false, typ: input, tag: ""}, {prop: "nsrc", name: "nsrc", exported: false, typ: $Int, tag: ""}, {prop: "tmpBytes", name: "tmpBytes", exported: false, typ: input, tag: ""}, {prop: "out", name: "out", exported: false, typ: sliceType$4, tag: ""}, {prop: "flushF", name: "flushF", exported: false, typ: funcType, tag: ""}]);
Properties.init("vendor/golang_org/x/text/unicode/norm", [{prop: "pos", name: "pos", exported: false, typ: $Uint8, tag: ""}, {prop: "size", name: "size", exported: false, typ: $Uint8, tag: ""}, {prop: "ccc", name: "ccc", exported: false, typ: $Uint8, tag: ""}, {prop: "tccc", name: "tccc", exported: false, typ: $Uint8, tag: ""}, {prop: "nLead", name: "nLead", exported: false, typ: $Uint8, tag: ""}, {prop: "flags", name: "flags", exported: false, typ: qcInfo, tag: ""}, {prop: "index", name: "index", exported: false, typ: $Uint16, tag: ""}]);
lookupFunc.init([input, $Int], [Properties], false);
formInfo.init("vendor/golang_org/x/text/unicode/norm", [{prop: "form", name: "form", exported: false, typ: Form, tag: ""}, {prop: "composing", name: "composing", exported: false, typ: $Bool, tag: ""}, {prop: "compatibility", name: "compatibility", exported: false, typ: $Bool, tag: ""}, {prop: "info", name: "info", exported: false, typ: lookupFunc, tag: ""}, {prop: "nextMain", name: "nextMain", exported: false, typ: iterFunc, tag: ""}]);
input.init("vendor/golang_org/x/text/unicode/norm", [{prop: "str", name: "str", exported: false, typ: $String, tag: ""}, {prop: "bytes", name: "bytes", exported: false, typ: sliceType$4, tag: ""}]);
Iter.init("vendor/golang_org/x/text/unicode/norm", [{prop: "rb", name: "rb", exported: false, typ: reorderBuffer, tag: ""}, {prop: "buf", name: "buf", exported: false, typ: arrayType$1, tag: ""}, {prop: "info", name: "info", exported: false, typ: Properties, tag: ""}, {prop: "next", name: "next", exported: false, typ: iterFunc, tag: ""}, {prop: "asciiF", name: "asciiF", exported: false, typ: iterFunc, tag: ""}, {prop: "p", name: "p", exported: false, typ: $Int, tag: ""}, {prop: "multiSeg", name: "multiSeg", exported: false, typ: sliceType$4, tag: ""}]);
iterFunc.init([ptrType$4], [sliceType$4], false);
normWriter.init("vendor/golang_org/x/text/unicode/norm", [{prop: "rb", name: "rb", exported: false, typ: reorderBuffer, tag: ""}, {prop: "w", name: "w", exported: false, typ: io.Writer, tag: ""}, {prop: "buf", name: "buf", exported: false, typ: sliceType$4, tag: ""}]);
normReader.init("vendor/golang_org/x/text/unicode/norm", [{prop: "rb", name: "rb", exported: false, typ: reorderBuffer, tag: ""}, {prop: "r", name: "r", exported: false, typ: io.Reader, tag: ""}, {prop: "inbuf", name: "inbuf", exported: false, typ: sliceType$4, tag: ""}, {prop: "outbuf", name: "outbuf", exported: false, typ: sliceType$4, tag: ""}, {prop: "bufStart", name: "bufStart", exported: false, typ: $Int, tag: ""}, {prop: "lastBoundary", name: "lastBoundary", exported: false, typ: $Int, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}]);
nfcTrie.init("", []);
nfkcTrie.init("", []);
valueRange.init("vendor/golang_org/x/text/unicode/norm", [{prop: "value", name: "value", exported: false, typ: $Uint16, tag: ""}, {prop: "lo", name: "lo", exported: false, typ: $Uint8, tag: ""}, {prop: "hi", name: "hi", exported: false, typ: $Uint8, tag: ""}]);
sparseBlocks.init("vendor/golang_org/x/text/unicode/norm", [{prop: "values", name: "values", exported: false, typ: sliceType$3, tag: ""}, {prop: "offset", name: "offset", exported: false, typ: sliceType$1, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = utf8.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = transform.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
formTable = sliceType.nil;
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]);
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, 67, 225, 133, 161, 1, 67, 225, 133, 162, 1, 67, 225, 133, 163, 1, 67, 225, 133, 164, 1, 67, 225, 133, 165, 1, 67, 225, 133, 166, 1, 67, 225, 133, 167, 1, 67, 225, 133, 168, 1, 67, 225, 133, 169, 1, 67, 225, 133, 170, 1, 67, 225, 133, 171, 1, 67, 225, 133, 172, 1, 67, 225, 133, 173, 1, 67, 225, 133, 174, 1, 67, 225, 133, 175, 1, 67, 225, 133, 176, 1, 67, 225, 133, 177, 1, 67, 225, 133, 178, 1, 67, 225, 133, 179, 1, 67, 225, 133, 180, 1, 67, 225, 133, 181, 1, 67, 225, 134, 170, 1, 67, 225, 134, 172, 1, 67, 225, 134, 173, 1, 67, 225, 134, 176, 1, 67, 225, 134, 177, 1, 67, 225, 134, 178, 1, 67, 225, 134, 179, 1, 67, 225, 134, 180, 1, 67, 225, 134, 181, 1, 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, 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]);
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, 18206, 12153, 18221, 18226, 40960, 18236, 12258, 12263, 18241, 12283, 12398, 12403, 12408, 18261, 0, 12548, 12583, 12588, 18271, 18276, 18291, 0, 40960, 12723, 12728, 12733, 18341, 12853, 0, 0, 12923, 12928, 18351, 12933, 18366, 18371, 40960, 18381, 13038, 13043, 18386, 13063, 13183, 13188, 13193, 18406, 0, 13333, 13368, 13373, 18416, 18421, 18436, 0, 40960, 13513, 13518, 13523, 18486, 13648, 0, 13673, 12158, 12938, 18211, 18356, 12188, 12968, 12208, 12988, 12213, 12993, 12218, 12998, 12223, 13003, 12233, 13013, 0, 0, 18246, 18391, 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, 18281, 18426, 12593, 13378, 12603, 13388, 0, 0, 12633, 13418, 12658, 13443, 12643, 13428, 18316, 18461, 12668, 13453, 12683, 13468, 18321, 18466, 12708, 13498, 12693, 13483, 0, 0, 18331, 18476, 18336, 18481, 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, 18306, 18451, 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, 18216, 18361, 18256, 18401, 14687, 15086, 14652, 15051, 18286, 18431, 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, 19012, 19017, 39218, 19022, 19027, 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, 18580, 13975, 18622, 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, 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, 18266, 18411, 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, 18311, 18456, 14743, 15142, 12663, 13448, 12673, 13458, 18326, 18471, 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, 18231, 18376, 12163, 12943, 14456, 14855, 14449, 14848, 14470, 14869, 14463, 14862, 14526, 14925, 14484, 14883, 14477, 14876, 14498, 14897, 14491, 14890, 14533, 14932, 18251, 18396, 12288, 13068, 12268, 13048, 14554, 14953, 14547, 14946, 14568, 14967, 14561, 14960, 14589, 14988, 12433, 13213, 12453, 13233, 18301, 18446, 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, 18586, 18592, 18868, 18892, 18876, 18900, 18884, 18908, 18496, 18502, 18724, 18748, 18732, 18756, 18740, 18764, 18604, 18610, 15800, 15816, 15808, 15824, 0, 0, 18508, 18514, 15592, 15608, 15600, 15616, 0, 0, 18628, 18634, 18916, 18940, 18924, 18948, 18932, 18956, 18520, 18526, 18772, 18796, 18780, 18804, 18788, 18812, 18652, 18658, 15896, 15920, 15904, 15928, 15912, 15936, 18532, 18538, 15640, 15664, 15648, 15672, 15656, 15680, 18664, 18670, 15944, 15960, 15952, 15968, 0, 0, 18544, 18550, 15688, 15704, 15696, 15712, 0, 0, 18682, 18688, 16000, 16024, 16008, 16032, 16016, 16040, 0, 18556, 0, 15720, 0, 15728, 0, 15736, 18706, 18712, 18964, 18988, 18972, 18996, 18980, 19004, 18562, 18568, 18820, 18844, 18828, 18852, 18836, 18860, 18574, 17332, 13969, 17338, 18616, 17344, 13987, 17350, 14017, 17356, 14041, 17362, 18694, 17368, 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, 18598, 15792, 13813, 13807, 13795, 17284, 13819, 33024, 467, 41216, 33024, 13735, 15832, 13981, 15840, 0, 18640, 15864, 13825, 17290, 13837, 17296, 13849, 15247, 15254, 15261, 14005, 13999, 15872, 17786, 0, 0, 14011, 15888, 13873, 13867, 13855, 17302, 0, 15268, 15275, 15282, 14059, 14053, 15976, 17794, 14029, 14035, 14065, 15992, 13921, 13915, 13903, 17314, 13897, 13723, 17278, 129, 0, 0, 16048, 14071, 16056, 0, 18718, 16080, 13885, 17308, 13933, 17326, 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]);
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, 44, 1, 2, 3, 45, 4, 5, 0, 46, 47, 6, 7, 8, 48, 9, 49, 50, 10, 0, 0, 11, 51, 52, 12, 0, 53, 54, 55, 0, 56, 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, 57, 58, 0, 59, 60, 61, 62, 63, 64, 65, 66, 67, 62, 68, 69, 70, 0, 71, 72, 73, 74, 75, 0, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 86, 0, 87, 88, 89, 90, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 93, 0, 0, 94, 0, 95, 0, 0, 0, 96, 97, 98, 0, 13, 99, 100, 101, 102, 0, 0, 103, 0, 0, 0, 104, 14, 15, 16, 17, 18, 19, 20, 21, 105, 0, 0, 106, 107, 0, 108, 109, 110, 22, 23, 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, 24, 25, 26, 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, 27, 28, 29, 30, 31, 32, 33, 34, 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, 62, 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, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 179, 180, 0, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 36, 37, 38, 39, 40, 41, 42, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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]);
nfcSparseOffset = new sliceType$1([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, 199, 206, 214, 217, 219, 221, 223, 228, 245, 257, 259, 265, 267, 269, 271, 273, 275, 277, 280, 283, 285, 288, 291, 295, 300, 309, 311, 314, 316, 327, 343, 347, 361, 364, 370, 376, 387, 391, 393, 395, 397, 399, 401, 407, 411, 413, 415, 423, 427, 430, 432, 434, 436, 439, 441, 443, 445, 447, 453, 456, 458, 465, 471, 477, 485, 491, 497, 503, 507, 521, 530, 533, 536, 538, 541, 543, 547, 552, 554, 556, 561, 567, 569, 571, 573, 579, 582, 585, 593, 600, 603, 606, 608, 616, 619, 626, 629, 635, 637, 640, 642, 644, 646, 648, 661, 671, 673, 675, 681, 683, 686]);
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(18296, 160, 161), new valueRange.ptr(18346, 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(18646, 138, 138), new valueRange.ptr(18676, 139, 139), new valueRange.ptr(14023, 140, 140), new valueRange.ptr(14047, 141, 141), new valueRange.ptr(18700, 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(17842, 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(17906, 156, 157), new valueRange.ptr(17922, 159, 159), new valueRange.ptr(0, 3, 0), new valueRange.ptr(17962, 179, 179), new valueRange.ptr(17970, 182, 182), new valueRange.ptr(33026, 188, 188), new valueRange.ptr(8, 3, 0), new valueRange.ptr(33028, 141, 141), new valueRange.ptr(17930, 153, 155), new valueRange.ptr(17954, 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(17978, 156, 156), new valueRange.ptr(17986, 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, 1, 0), 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(19046, 179, 179), new valueRange.ptr(33064, 180, 180), new valueRange.ptr(19055, 181, 181), new valueRange.ptr(17994, 182, 182), new valueRange.ptr(33280, 183, 183), new valueRange.ptr(18002, 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(19064, 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(0, 15, 0), new valueRange.ptr(33074, 128, 129), new valueRange.ptr(33069, 130, 130), new valueRange.ptr(33074, 131, 137), new valueRange.ptr(33069, 138, 138), new valueRange.ptr(33074, 139, 140), new valueRange.ptr(33077, 141, 141), new valueRange.ptr(33066, 142, 142), new valueRange.ptr(33069, 143, 143), new valueRange.ptr(33065, 144, 144), new valueRange.ptr(33074, 145, 181), new valueRange.ptr(33074, 187, 187), new valueRange.ptr(33076, 188, 188), new valueRange.ptr(33069, 189, 189), new valueRange.ptr(33074, 190, 190), new valueRange.ptr(33069, 191, 191), 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(17779, 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(19073, 179, 179), new valueRange.ptr(19073, 181, 182), new valueRange.ptr(19073, 186, 191), new valueRange.ptr(0, 1, 0), new valueRange.ptr(19073, 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(17446, 157, 157), new valueRange.ptr(33045, 158, 158), new valueRange.ptr(17560, 159, 159), new valueRange.ptr(17542, 170, 171), new valueRange.ptr(17802, 172, 172), new valueRange.ptr(17810, 173, 173), new valueRange.ptr(17374, 174, 177), new valueRange.ptr(17404, 178, 180), new valueRange.ptr(17428, 181, 182), new valueRange.ptr(17440, 184, 184), new valueRange.ptr(17452, 185, 187), new valueRange.ptr(17476, 188, 188), new valueRange.ptr(17482, 190, 190), new valueRange.ptr(6, 8, 0), new valueRange.ptr(17488, 128, 129), new valueRange.ptr(17500, 131, 132), new valueRange.ptr(17518, 134, 137), new valueRange.ptr(17554, 138, 138), new valueRange.ptr(17422, 139, 139), new valueRange.ptr(17398, 140, 140), new valueRange.ptr(17470, 141, 141), new valueRange.ptr(17512, 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(19073, 158, 159), new valueRange.ptr(19073, 163, 163), new valueRange.ptr(19073, 165, 166), new valueRange.ptr(19073, 170, 175), new valueRange.ptr(0, 5, 0), new valueRange.ptr(19073, 130, 135), new valueRange.ptr(19073, 138, 143), new valueRange.ptr(19073, 146, 151), new valueRange.ptr(19073, 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(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(18018, 158, 158), new valueRange.ptr(18028, 159, 159), new valueRange.ptr(18080, 160, 160), new valueRange.ptr(18094, 161, 161), new valueRange.ptr(18108, 162, 162), new valueRange.ptr(18122, 163, 163), new valueRange.ptr(18136, 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(18038, 187, 187), new valueRange.ptr(18048, 188, 188), new valueRange.ptr(18150, 189, 189), new valueRange.ptr(18178, 190, 190), new valueRange.ptr(18164, 191, 191), new valueRange.ptr(0, 1, 0), new valueRange.ptr(18192, 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)]);
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, 18206, 12153, 18221, 18226, 40960, 18236, 12258, 12263, 18241, 12283, 12398, 12403, 12408, 18261, 0, 12548, 12583, 12588, 18271, 18276, 18291, 0, 40960, 12723, 12728, 12733, 18341, 12853, 0, 0, 12923, 12928, 18351, 12933, 18366, 18371, 40960, 18381, 13038, 13043, 18386, 13063, 13183, 13188, 13193, 18406, 0, 13333, 13368, 13373, 18416, 18421, 18436, 0, 40960, 13513, 13518, 13523, 18486, 13648, 0, 13673, 12158, 12938, 18211, 18356, 12188, 12968, 12208, 12988, 12213, 12993, 12218, 12998, 12223, 13003, 12233, 13013, 0, 0, 18246, 18391, 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, 18281, 18426, 12593, 13378, 12603, 13388, 0, 0, 12633, 13418, 12658, 13443, 12643, 13428, 18316, 18461, 12668, 13453, 12683, 13468, 18321, 18466, 12708, 13498, 12693, 13483, 0, 0, 18331, 18476, 18336, 18481, 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, 18306, 18451, 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, 18216, 18361, 18256, 18401, 14687, 15086, 14652, 15051, 18286, 18431, 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, 19012, 19017, 39218, 19022, 19027, 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, 17681, 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, 18580, 13975, 18622, 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, 18646, 18676, 14023, 14047, 18700, 0, 446, 464, 428, 17314, 17320, 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, 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, 18266, 18411, 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, 18311, 18456, 14743, 15142, 12663, 13448, 12673, 13458, 18326, 18471, 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, 18231, 18376, 12163, 12943, 14456, 14855, 14449, 14848, 14470, 14869, 14463, 14862, 14526, 14925, 14484, 14883, 14477, 14876, 14498, 14897, 14491, 14890, 14533, 14932, 18251, 18396, 12288, 13068, 12268, 13048, 14554, 14953, 14547, 14946, 14568, 14967, 14561, 14960, 14589, 14988, 12433, 13213, 12453, 13233, 18301, 18446, 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, 18586, 18592, 18868, 18892, 18876, 18900, 18884, 18908, 18496, 18502, 18724, 18748, 18732, 18756, 18740, 18764, 18604, 18610, 15800, 15816, 15808, 15824, 0, 0, 18508, 18514, 15592, 15608, 15600, 15616, 0, 0, 18628, 18634, 18916, 18940, 18924, 18948, 18932, 18956, 18520, 18526, 18772, 18796, 18780, 18804, 18788, 18812, 18652, 18658, 15896, 15920, 15904, 15928, 15912, 15936, 18532, 18538, 15640, 15664, 15648, 15672, 15656, 15680, 18664, 18670, 15944, 15960, 15952, 15968, 0, 0, 18544, 18550, 15688, 15704, 15696, 15712, 0, 0, 18682, 18688, 16000, 16024, 16008, 16032, 16016, 16040, 0, 18556, 0, 15720, 0, 15728, 0, 15736, 18706, 18712, 18964, 18988, 18972, 18996, 18980, 19004, 18562, 18568, 18820, 18844, 18828, 18852, 18836, 18860, 18574, 17332, 13969, 17338, 18616, 17344, 13987, 17350, 14017, 17356, 14041, 17362, 18694, 17368, 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, 18598, 15792, 13813, 13807, 13795, 17284, 13819, 17031, 467, 17031, 17056, 17688, 15832, 13981, 15840, 0, 18640, 15864, 13825, 17290, 13837, 17296, 13849, 17695, 17702, 17709, 14005, 13999, 15872, 17786, 0, 0, 14011, 15888, 13873, 13867, 13855, 17302, 0, 17716, 17723, 17730, 14059, 14053, 15976, 17794, 14029, 14035, 14065, 15992, 13921, 13915, 13903, 17314, 13897, 17674, 17681, 129, 0, 0, 16048, 14071, 16056, 0, 18718, 16080, 13885, 17308, 13933, 17326, 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, 17266, 17272, 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, 17116, 17121, 17126, 17131, 17136, 17141, 17146, 17151, 17156, 17161, 17166, 17171, 17176, 17181, 17186, 17191, 17196, 17201, 17206, 17211, 17216, 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, 17446, 33045, 17560, 557, 533, 542, 545, 548, 551, 554, 560, 563, 23, 17542, 17548, 17802, 17810, 17374, 17380, 17386, 17392, 17404, 17410, 17416, 17428, 17434, 0, 17440, 17452, 17458, 17464, 17476, 0, 17482, 0, 17488, 17494, 0, 17500, 17506, 0, 17518, 17524, 17530, 17536, 17554, 17422, 17398, 17470, 17512, 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, 17668, 17668, 749, 749, 749, 749, 746, 746, 746, 746, 776, 776, 17662, 17662, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 17590, 17596, 17650, 17737, 17744, 17751, 17758, 17765, 17772, 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, 17650, 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, 17638, 8216, 8221, 8226, 8241, 8251, 9684, 9698, 7586, 7596, 7636, 7646, 7676, 7686, 7786, 7791, 7826, 7831, 8046, 8051, 8086, 8166, 8176, 8241, 8251, 17818, 17826, 17834, 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, 17566, 17566, 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, 17602, 17071, 0, 17076, 0, 17081, 17608, 17086, 17614, 17091, 17620, 17096, 17626, 17101, 17632, 566, 17572, 17572, 17578, 17578, 17644, 17644, 17584, 17584, 17656, 17656, 17656, 17656, 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, 19034, 19040, 963, 787, 791, 17221, 795, 17226, 17231, 799, 803, 807, 17236, 17241, 17246, 17251, 17256, 17261, 871, 811, 815, 819, 891, 823, 827, 831, 835, 839, 843, 847, 851, 855, 859, 0, 0, 0, 17116, 17121, 17126, 17131, 17136, 17141, 0, 0, 17146, 17151, 17156, 17161, 17166, 17171, 0, 0, 17176, 17181, 17186, 17191, 17196, 17201, 0, 0, 17206, 17211, 17216, 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, 18010, 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]);
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, 90, 1, 2, 3, 91, 4, 5, 0, 92, 93, 6, 7, 8, 9, 10, 94, 95, 11, 0, 0, 12, 96, 97, 13, 0, 98, 99, 100, 0, 101, 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, 102, 103, 0, 104, 105, 106, 107, 108, 109, 110, 111, 112, 107, 113, 114, 115, 0, 116, 117, 118, 119, 120, 0, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 0, 131, 132, 133, 134, 135, 136, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, 139, 0, 0, 140, 0, 141, 0, 0, 0, 142, 143, 144, 0, 14, 145, 146, 147, 148, 0, 0, 149, 150, 15, 16, 151, 17, 18, 19, 20, 21, 22, 23, 24, 152, 153, 154, 155, 25, 26, 156, 157, 158, 27, 28, 159, 160, 0, 0, 0, 0, 29, 30, 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, 31, 32, 33, 171, 172, 34, 35, 36, 173, 37, 38, 0, 39, 40, 41, 42, 43, 44, 45, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 197, 71, 72, 73, 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, 107, 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, 0, 0, 0, 0, 0, 0, 0, 0, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, 222, 223, 0, 224, 0, 0, 0, 0, 0, 0, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 74, 235, 236, 237, 238, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, 241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 77, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 242, 243, 0, 80, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 82, 83, 84, 85, 86, 87, 88, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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]);
nfkcSparseOffset = new sliceType$1([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, 212, 219, 227, 231, 233, 236, 240, 246, 263, 275, 277, 283, 285, 287, 289, 291, 293, 295, 297, 300, 303, 305, 308, 311, 315, 320, 329, 331, 334, 336, 347, 358, 374, 388, 402, 418, 432, 439, 445, 460, 464, 466, 470, 472, 475, 477, 480, 482, 485, 487, 489, 491, 503, 513, 523, 526, 530, 532, 534, 536, 538, 541, 543, 545, 547, 549, 555, 558, 562, 564, 571, 577, 583, 591, 597, 603, 609, 613, 615, 617, 619, 621, 627, 630, 633, 641, 648, 651, 654, 656, 664, 667, 674, 677, 683, 685, 687, 690, 692, 694, 696, 698, 711, 721, 723, 725, 729, 734, 746, 751, 760, 766, 771, 775, 780, 784, 800, 814, 828, 842, 848, 850, 853, 863, 865]);
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(18296, 160, 161), new valueRange.ptr(18346, 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(17842, 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(17906, 156, 157), new valueRange.ptr(17922, 159, 159), new valueRange.ptr(0, 3, 0), new valueRange.ptr(17962, 179, 179), new valueRange.ptr(17970, 182, 182), new valueRange.ptr(33026, 188, 188), new valueRange.ptr(8, 3, 0), new valueRange.ptr(33028, 141, 141), new valueRange.ptr(17930, 153, 155), new valueRange.ptr(17954, 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(17978, 156, 156), new valueRange.ptr(17986, 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, 1, 0), 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(19046, 179, 179), new valueRange.ptr(33064, 180, 180), new valueRange.ptr(19055, 181, 181), new valueRange.ptr(17994, 182, 182), new valueRange.ptr(18058, 183, 183), new valueRange.ptr(18002, 184, 184), new valueRange.ptr(18069, 185, 185), new valueRange.ptr(33063, 186, 189), new valueRange.ptr(0, 11, 0), new valueRange.ptr(33063, 128, 128), new valueRange.ptr(19064, 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, 15, 0), new valueRange.ptr(33074, 128, 129), new valueRange.ptr(33069, 130, 130), new valueRange.ptr(33074, 131, 137), new valueRange.ptr(33069, 138, 138), new valueRange.ptr(33074, 139, 140), new valueRange.ptr(33077, 141, 141), new valueRange.ptr(33066, 142, 142), new valueRange.ptr(33069, 143, 143), new valueRange.ptr(33065, 144, 144), new valueRange.ptr(33074, 145, 181), new valueRange.ptr(33074, 187, 187), new valueRange.ptr(33076, 188, 188), new valueRange.ptr(33069, 189, 189), new valueRange.ptr(33074, 190, 190), new valueRange.ptr(33069, 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(17779, 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(5, 9, 0), new valueRange.ptr(787, 177, 177), new valueRange.ptr(791, 178, 178), new valueRange.ptr(17221, 179, 179), new valueRange.ptr(795, 180, 180), new valueRange.ptr(17226, 181, 182), new valueRange.ptr(799, 183, 183), new valueRange.ptr(803, 184, 184), new valueRange.ptr(807, 185, 185), new valueRange.ptr(17236, 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(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(18018, 158, 158), new valueRange.ptr(18028, 159, 159), new valueRange.ptr(18080, 160, 160), new valueRange.ptr(18094, 161, 161), new valueRange.ptr(18108, 162, 162), new valueRange.ptr(18122, 163, 163), new valueRange.ptr(18136, 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(18038, 187, 187), new valueRange.ptr(18048, 188, 188), new valueRange.ptr(18150, 189, 189), new valueRange.ptr(18178, 190, 190), new valueRange.ptr(18164, 191, 191), new valueRange.ptr(0, 1, 0), new valueRange.ptr(18192, 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)]);
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 }]);
errs = new sliceType$2([$ifaceNil, transform.ErrShortDst, transform.ErrShortSrc]);
nfcSparse = new sparseBlocks.ptr(new sliceType$3(nfcSparseValues), nfcSparseOffset);
nfkcSparse = new sparseBlocks.ptr(new sliceType$3(nfkcSparseValues), nfkcSparseOffset);
nfcData = newNfcTrie(0);
nfkcData = newNfkcTrie(0);
init();
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["vendor/golang_org/x/text/width"] = (function() {
var $pkg = {}, $init, fmt, utf8, transform, widthTrie, foldTransform, Transformer, arrayType, sliceType$1, ptrType, widthValues, widthIndex, inverseData, trie, x, newWidthTrie;
fmt = $packages["fmt"];
utf8 = $packages["unicode/utf8"];
transform = $packages["vendor/golang_org/x/text/transform"];
widthTrie = $pkg.widthTrie = $newType(0, $kindStruct, "width.widthTrie", true, "vendor/golang_org/x/text/width", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
foldTransform = $pkg.foldTransform = $newType(0, $kindStruct, "width.foldTransform", true, "vendor/golang_org/x/text/width", false, function(NopResetter_) {
this.$val = this;
if (arguments.length === 0) {
this.NopResetter = new transform.NopResetter.ptr();
return;
}
this.NopResetter = NopResetter_;
});
Transformer = $pkg.Transformer = $newType(0, $kindStruct, "width.Transformer", true, "vendor/golang_org/x/text/width", true, function(t_) {
this.$val = this;
if (arguments.length === 0) {
this.t = $ifaceNil;
return;
}
this.t = t_;
});
arrayType = $arrayType($Uint8, 4);
sliceType$1 = $sliceType($Uint8);
ptrType = $ptrType(widthTrie);
widthTrie.ptr.prototype.lookup = function(s) {
var $ptr, _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;
v = 0;
sz = 0;
t = this;
c0 = (0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]);
if (c0 < 128) {
_tmp = ((c0 < 0 || c0 >= widthValues.length) ? ($throwRuntimeError("index out of range"), undefined) : widthValues[c0]);
_tmp$1 = 1;
v = _tmp;
sz = _tmp$1;
return [v, sz];
} else if (c0 < 194) {
_tmp$2 = 0;
_tmp$3 = 1;
v = _tmp$2;
sz = _tmp$3;
return [v, sz];
} else if (c0 < 224) {
if (s.$length < 2) {
_tmp$4 = 0;
_tmp$5 = 0;
v = _tmp$4;
sz = _tmp$5;
return [v, sz];
}
i = ((c0 < 0 || c0 >= widthIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : widthIndex[c0]);
c1 = (1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]);
if (c1 < 128 || 192 <= c1) {
_tmp$6 = 0;
_tmp$7 = 1;
v = _tmp$6;
sz = _tmp$7;
return [v, sz];
}
_tmp$8 = t.lookupValue(((i >>> 0)), c1);
_tmp$9 = 2;
v = _tmp$8;
sz = _tmp$9;
return [v, sz];
} else if (c0 < 240) {
if (s.$length < 3) {
_tmp$10 = 0;
_tmp$11 = 0;
v = _tmp$10;
sz = _tmp$11;
return [v, sz];
}
i$1 = ((c0 < 0 || c0 >= widthIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : widthIndex[c0]);
c1$1 = (1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]);
if (c1$1 < 128 || 192 <= c1$1) {
_tmp$12 = 0;
_tmp$13 = 1;
v = _tmp$12;
sz = _tmp$13;
return [v, sz];
}
o = (((i$1 >>> 0)) << 6 >>> 0) + ((c1$1 >>> 0)) >>> 0;
i$1 = ((o < 0 || o >= widthIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : widthIndex[o]);
c2 = (2 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 2]);
if (c2 < 128 || 192 <= c2) {
_tmp$14 = 0;
_tmp$15 = 2;
v = _tmp$14;
sz = _tmp$15;
return [v, sz];
}
_tmp$16 = t.lookupValue(((i$1 >>> 0)), c2);
_tmp$17 = 3;
v = _tmp$16;
sz = _tmp$17;
return [v, sz];
} else if (c0 < 248) {
if (s.$length < 4) {
_tmp$18 = 0;
_tmp$19 = 0;
v = _tmp$18;
sz = _tmp$19;
return [v, sz];
}
i$2 = ((c0 < 0 || c0 >= widthIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : widthIndex[c0]);
c1$2 = (1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]);
if (c1$2 < 128 || 192 <= c1$2) {
_tmp$20 = 0;
_tmp$21 = 1;
v = _tmp$20;
sz = _tmp$21;
return [v, sz];
}
o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c1$2 >>> 0)) >>> 0;
i$2 = ((o$1 < 0 || o$1 >= widthIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : widthIndex[o$1]);
c2$1 = (2 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 2]);
if (c2$1 < 128 || 192 <= c2$1) {
_tmp$22 = 0;
_tmp$23 = 2;
v = _tmp$22;
sz = _tmp$23;
return [v, sz];
}
o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c2$1 >>> 0)) >>> 0;
i$2 = ((o$1 < 0 || o$1 >= widthIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : widthIndex[o$1]);
c3 = (3 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 3]);
if (c3 < 128 || 192 <= c3) {
_tmp$24 = 0;
_tmp$25 = 3;
v = _tmp$24;
sz = _tmp$25;
return [v, sz];
}
_tmp$26 = t.lookupValue(((i$2 >>> 0)), c3);
_tmp$27 = 4;
v = _tmp$26;
sz = _tmp$27;
return [v, sz];
}
_tmp$28 = 0;
_tmp$29 = 1;
v = _tmp$28;
sz = _tmp$29;
return [v, sz];
};
widthTrie.prototype.lookup = function(s) { return this.$val.lookup(s); };
newWidthTrie = function(i) {
var $ptr, i;
return new widthTrie.ptr();
};
widthTrie.ptr.prototype.lookupValue = function(n, b) {
var $ptr, b, n, t, x$3;
t = this;
return ((x$3 = (n << 6 >>> 0) + ((b >>> 0)) >>> 0, ((x$3 < 0 || x$3 >= widthValues.length) ? ($throwRuntimeError("index out of range"), undefined) : widthValues[x$3])));
};
widthTrie.prototype.lookupValue = function(n, b) { return this.$val.lookupValue(n, b); };
foldTransform.ptr.prototype.Span = function(src, atEOF) {
var $ptr, _tmp, _tmp$1, _tuple, atEOF, err, n, size, src, v;
n = 0;
err = $ifaceNil;
while (true) {
if (!(n < src.$length)) { break; }
if (((n < 0 || n >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + n]) < 128) {
n = n + (1) >> 0;
while (true) {
if (!(n < src.$length && ((n < 0 || n >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + n]) < 128)) { break; }
n = n + (1) >> 0;
}
continue;
}
_tuple = trie.lookup($subslice(src, n));
v = _tuple[0];
size = _tuple[1];
if (size === 0) {
if (!atEOF) {
err = transform.ErrShortSrc;
} else {
n = src.$length;
}
break;
}
if (!((((((v << 16 >>> 16)) & 4096) >>> 0) === 0))) {
err = transform.ErrEndOfSpan;
break;
}
n = n + (size) >> 0;
}
_tmp = n;
_tmp$1 = err;
n = _tmp;
err = _tmp$1;
return [n, err];
};
foldTransform.prototype.Span = function(src, atEOF) { return this.$val.Span(src, atEOF); };
foldTransform.ptr.prototype.Transform = function(dst, src, atEOF) {
var $ptr, _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, atEOF, d, data, dst, end, end$1, err, i, n, nDst, nSrc, size, src, start, v, x$3, x$4;
nDst = 0;
nSrc = 0;
err = $ifaceNil;
while (true) {
if (!(nSrc < src.$length)) { break; }
if (((nSrc < 0 || nSrc >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + nSrc]) < 128) {
_tmp = nSrc;
_tmp$1 = src.$length;
start = _tmp;
end = _tmp$1;
d = dst.$length - nDst >> 0;
if (d < (end - start >> 0)) {
end = nSrc + d >> 0;
}
nSrc = nSrc + (1) >> 0;
while (true) {
if (!(nSrc < end && ((nSrc < 0 || nSrc >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + nSrc]) < 128)) { break; }
nSrc = nSrc + (1) >> 0;
}
n = $copySlice($subslice(dst, nDst), $subslice(src, start, nSrc));
nDst = nDst + (n) >> 0;
if (nDst === dst.$length) {
nSrc = start + n >> 0;
if (nSrc === src.$length) {
_tmp$2 = nDst;
_tmp$3 = nSrc;
_tmp$4 = $ifaceNil;
nDst = _tmp$2;
nSrc = _tmp$3;
err = _tmp$4;
return [nDst, nSrc, err];
}
if (((nSrc < 0 || nSrc >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + nSrc]) < 128) {
_tmp$5 = nDst;
_tmp$6 = nSrc;
_tmp$7 = transform.ErrShortDst;
nDst = _tmp$5;
nSrc = _tmp$6;
err = _tmp$7;
return [nDst, nSrc, err];
}
}
continue;
}
_tuple = trie.lookup($subslice(src, nSrc));
v = _tuple[0];
size = _tuple[1];
if (size === 0) {
if (!atEOF) {
_tmp$8 = nDst;
_tmp$9 = nSrc;
_tmp$10 = transform.ErrShortSrc;
nDst = _tmp$8;
nSrc = _tmp$9;
err = _tmp$10;
return [nDst, nSrc, err];
}
size = 1;
}
if (((((v << 16 >>> 16)) & 4096) >>> 0) === 0) {
if (!((size === $copySlice($subslice(dst, nDst), $subslice(src, nSrc, (nSrc + size >> 0)))))) {
_tmp$11 = nDst;
_tmp$12 = nSrc;
_tmp$13 = transform.ErrShortDst;
nDst = _tmp$11;
nSrc = _tmp$12;
err = _tmp$13;
return [nDst, nSrc, err];
}
nDst = nDst + (size) >> 0;
} else {
data = $clone((x$3 = ((v << 24 >>> 24)), ((x$3 < 0 || x$3 >= inverseData.length) ? ($throwRuntimeError("index out of range"), undefined) : inverseData[x$3])), arrayType);
if ((dst.$length - nDst >> 0) < ((data[0] >> 0))) {
_tmp$14 = nDst;
_tmp$15 = nSrc;
_tmp$16 = transform.ErrShortDst;
nDst = _tmp$14;
nSrc = _tmp$15;
err = _tmp$16;
return [nDst, nSrc, err];
}
i = 1;
end$1 = ((data[0] >> 0));
while (true) {
if (!(i < end$1)) { break; }
((nDst < 0 || nDst >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + nDst] = ((i < 0 || i >= data.length) ? ($throwRuntimeError("index out of range"), undefined) : data[i]));
nDst = nDst + (1) >> 0;
i = i + (1) >> 0;
}
((nDst < 0 || nDst >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + nDst] = ((((i < 0 || i >= data.length) ? ($throwRuntimeError("index out of range"), undefined) : data[i]) ^ (x$4 = (nSrc + size >> 0) - 1 >> 0, ((x$4 < 0 || x$4 >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + x$4]))) << 24 >>> 24));
nDst = nDst + (1) >> 0;
}
nSrc = nSrc + (size) >> 0;
}
_tmp$17 = nDst;
_tmp$18 = nSrc;
_tmp$19 = $ifaceNil;
nDst = _tmp$17;
nSrc = _tmp$18;
err = _tmp$19;
return [nDst, nSrc, err];
};
foldTransform.prototype.Transform = function(dst, src, atEOF) { return this.$val.Transform(dst, src, atEOF); };
Transformer.ptr.prototype.Reset = function() {
var $ptr, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
$r = t.t.Reset(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Transformer.ptr.prototype.Reset }; } $f.$ptr = $ptr; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
Transformer.prototype.Reset = function() { return this.$val.Reset(); };
Transformer.ptr.prototype.Transform = function(dst, src, atEOF) {
var $ptr, _r, _tuple, atEOF, dst, err, nDst, nSrc, src, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; atEOF = $f.atEOF; dst = $f.dst; err = $f.err; nDst = $f.nDst; nSrc = $f.nSrc; src = $f.src; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
nDst = 0;
nSrc = 0;
err = $ifaceNil;
t = this;
_r = t.t.Transform(dst, src, atEOF); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
nDst = _tuple[0];
nSrc = _tuple[1];
err = _tuple[2];
$s = -1; return [nDst, nSrc, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Transformer.ptr.prototype.Transform }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.atEOF = atEOF; $f.dst = dst; $f.err = err; $f.nDst = nDst; $f.nSrc = nSrc; $f.src = src; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
Transformer.prototype.Transform = function(dst, src, atEOF) { return this.$val.Transform(dst, src, atEOF); };
Transformer.ptr.prototype.Span = function(src, atEOF) {
var $ptr, _r, _tuple, atEOF, err, n, src, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; atEOF = $f.atEOF; err = $f.err; n = $f.n; src = $f.src; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
n = 0;
err = $ifaceNil;
t = this;
_r = t.t.Span(src, atEOF); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Transformer.ptr.prototype.Span }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.atEOF = atEOF; $f.err = err; $f.n = n; $f.src = src; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
Transformer.prototype.Span = function(src, atEOF) { return this.$val.Span(src, atEOF); };
Transformer.ptr.prototype.Bytes = function(b) {
var $ptr, _r, _tuple, b, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; b = $f.b; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
_r = transform.Bytes(new t.constructor.elem(t), b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
b = _tuple[0];
$s = -1; return b;
/* */ } return; } if ($f === undefined) { $f = { $blk: Transformer.ptr.prototype.Bytes }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
Transformer.prototype.Bytes = function(b) { return this.$val.Bytes(b); };
Transformer.ptr.prototype.String = function(s) {
var $ptr, _r, _tuple, s, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; s = $f.s; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
_r = transform.String(new t.constructor.elem(t), s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
s = _tuple[0];
$s = -1; return s;
/* */ } return; } if ($f === undefined) { $f = { $blk: Transformer.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.s = s; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
Transformer.prototype.String = function(s) { return this.$val.String(s); };
ptrType.methods = [{prop: "lookup", name: "lookup", pkg: "vendor/golang_org/x/text/width", typ: $funcType([sliceType$1], [$Uint16, $Int], false)}, {prop: "lookupUnsafe", name: "lookupUnsafe", pkg: "vendor/golang_org/x/text/width", typ: $funcType([sliceType$1], [$Uint16], false)}, {prop: "lookupString", name: "lookupString", pkg: "vendor/golang_org/x/text/width", typ: $funcType([$String], [$Uint16, $Int], false)}, {prop: "lookupStringUnsafe", name: "lookupStringUnsafe", pkg: "vendor/golang_org/x/text/width", typ: $funcType([$String], [$Uint16], false)}, {prop: "lookupValue", name: "lookupValue", pkg: "vendor/golang_org/x/text/width", typ: $funcType([$Uint32, $Uint8], [$Uint16], false)}];
foldTransform.methods = [{prop: "Span", name: "Span", pkg: "", typ: $funcType([sliceType$1, $Bool], [$Int, $error], false)}, {prop: "Transform", name: "Transform", pkg: "", typ: $funcType([sliceType$1, sliceType$1, $Bool], [$Int, $Int, $error], false)}];
Transformer.methods = [{prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "Transform", name: "Transform", pkg: "", typ: $funcType([sliceType$1, sliceType$1, $Bool], [$Int, $Int, $error], false)}, {prop: "Span", name: "Span", pkg: "", typ: $funcType([sliceType$1, $Bool], [$Int, $error], false)}, {prop: "Bytes", name: "Bytes", pkg: "", typ: $funcType([sliceType$1], [sliceType$1], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([$String], [$String], false)}];
widthTrie.init("", []);
foldTransform.init("", [{prop: "NopResetter", name: "", exported: true, typ: transform.NopResetter, tag: ""}]);
Transformer.init("vendor/golang_org/x/text/width", [{prop: "t", name: "t", exported: false, typ: transform.SpanningTransformer, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = utf8.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = transform.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
widthValues = $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, 24577, 24578, 24578, 24578, 24578, 24578, 24578, 24578, 24578, 24578, 24578, 24578, 24578, 24578, 24578, 24578, 24578, 24578, 24578, 24578, 24578, 24578, 24578, 24578, 24578, 24578, 24578, 24578, 24578, 24578, 24578, 24578, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24579, 24580, 24580, 24580, 24580, 24580, 24580, 24580, 24580, 24580, 24580, 24580, 24580, 24580, 24580, 24580, 24580, 24580, 24580, 24580, 24580, 24580, 24580, 24580, 24580, 24580, 24580, 24580, 24580, 24580, 24580, 24580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 24581, 24581, 8192, 24582, 24581, 8192, 8192, 0, 8192, 0, 24583, 8192, 8192, 24584, 8192, 8192, 8192, 8192, 8192, 0, 8192, 8192, 8192, 8192, 8192, 0, 8192, 8192, 8192, 8192, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 8192, 8192, 0, 0, 0, 0, 0, 8192, 8192, 8192, 8192, 0, 0, 0, 0, 8192, 0, 8192, 8192, 8192, 0, 8192, 8192, 0, 0, 8192, 0, 8192, 8192, 0, 0, 0, 8192, 8192, 8192, 8192, 0, 8192, 0, 8192, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 8192, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 8192, 8192, 8192, 0, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 8192, 8192, 8192, 8192, 0, 8192, 0, 0, 0, 8192, 8192, 8192, 8192, 0, 8192, 0, 0, 0, 0, 8192, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 8192, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 8192, 0, 8192, 0, 8192, 0, 8192, 0, 8192, 0, 8192, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 8192, 0, 8192, 8192, 8192, 0, 8192, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 8192, 8192, 8192, 8192, 0, 8192, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 0, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 0, 0, 0, 0, 0, 0, 0, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 0, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 8192, 8192, 8192, 8192, 0, 8192, 8192, 0, 0, 8192, 8192, 0, 0, 8192, 8192, 8192, 0, 8192, 8192, 8192, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 8192, 8192, 0, 8192, 0, 0, 0, 0, 0, 8192, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 8192, 8192, 8192, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40969, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 8192, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 8192, 0, 0, 0, 8192, 0, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 8192, 0, 0, 0, 0, 0, 0, 8192, 8192, 8192, 8192, 0, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 0, 0, 0, 0, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 8202, 8203, 8202, 8204, 8192, 8192, 8192, 8192, 8192, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 8192, 8192, 0, 0, 0, 8192, 8192, 0, 0, 8192, 0, 0, 0, 8192, 0, 8192, 0, 0, 0, 8192, 0, 0, 0, 0, 8192, 0, 0, 8192, 8192, 8192, 8192, 0, 0, 8192, 0, 8192, 0, 8192, 8192, 8192, 8192, 8192, 8192, 0, 8192, 0, 0, 0, 0, 0, 8192, 8192, 8192, 8192, 0, 0, 0, 0, 8192, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 8192, 0, 0, 8192, 8192, 8192, 8192, 0, 0, 8192, 8192, 0, 0, 8192, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 8192, 0, 0, 8192, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 0, 0, 0, 16384, 0, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 0, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8205, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 0, 0, 0, 0, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 0, 0, 8192, 8192, 8192, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8206, 8192, 0, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 8192, 0, 0, 8192, 8192, 0, 0, 0, 0, 8192, 8192, 0, 0, 8192, 8192, 0, 0, 0, 0, 8192, 8192, 8192, 0, 0, 8207, 0, 0, 8192, 8192, 8192, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 8192, 8192, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 0, 0, 0, 0, 0, 0, 8192, 8192, 0, 0, 8192, 0, 0, 0, 0, 8192, 8192, 0, 0, 0, 0, 16384, 16384, 0, 0, 0, 0, 0, 0, 8192, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 8192, 0, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 8192, 0, 8192, 8192, 8192, 0, 8192, 8192, 8192, 8192, 0, 8192, 8192, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 8192, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 8192, 0, 0, 0, 0, 16384, 16384, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 16384, 8192, 8192, 8192, 8192, 8192, 16384, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 0, 8192, 0, 0, 0, 0, 8192, 8192, 16384, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 16384, 16384, 8192, 16384, 8192, 8192, 8192, 8192, 16384, 8192, 8192, 16384, 8192, 8192, 0, 0, 0, 0, 0, 16384, 0, 0, 0, 0, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 0, 16384, 0, 0, 0, 0, 16384, 16384, 16384, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24592, 24593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 0, 0, 0, 0, 16384, 8192, 8192, 8192, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 36882, 16403, 16404, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16405, 16405, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 16406, 16407, 16384, 16384, 16384, 16384, 16384, 16384, 16408, 16409, 16410, 16411, 16412, 16413, 16414, 16415, 16416, 16417, 16418, 16384, 16400, 16384, 16419, 16384, 16420, 16384, 16421, 16384, 16422, 16384, 16410, 16384, 16423, 16384, 16424, 16384, 16416, 16384, 16425, 16384, 16426, 16384, 16427, 16428, 16384, 16407, 16384, 16429, 16384, 16430, 16431, 16432, 16407, 16406, 16407, 16384, 16384, 16433, 16384, 16384, 16433, 16384, 16384, 16434, 16384, 16384, 16434, 16384, 16384, 16435, 16430, 16436, 16437, 16436, 16438, 16439, 16420, 16437, 16421, 16440, 16440, 16441, 16441, 16442, 16442, 16384, 16437, 16384, 16384, 16443, 16444, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16445, 16412, 16384, 16384, 16384, 0, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 16446, 16446, 16446, 16446, 16446, 16446, 16446, 16446, 16446, 16446, 16446, 16446, 16446, 16446, 16446, 16439, 16439, 16439, 16439, 16439, 16439, 16439, 16439, 16439, 16439, 16439, 16439, 16439, 16439, 16439, 16398, 16447, 16448, 16449, 16448, 16447, 16450, 16451, 16452, 16448, 16449, 16448, 16453, 16393, 16453, 16454, 16453, 16455, 16395, 16394, 16396, 16456, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36882, 36882, 36882, 36882, 36882, 36882, 36882, 36882, 36882, 36882, 36882, 36882, 36882, 36882, 36882, 36882, 36882, 36882, 36882, 36882, 36882, 36882, 36882, 36882, 36882, 36882, 36882, 36882, 36882, 36882, 36882, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36937, 36938, 36939, 45132, 45133, 45133, 45134, 45135, 45136, 45137, 45138, 45139, 45140, 45141, 45142, 45143, 45144, 45145, 45146, 45147, 45148, 45149, 45150, 45151, 45152, 45153, 45154, 45155, 45156, 45157, 45138, 45158, 45159, 45141, 45160, 45161, 45162, 45163, 45146, 45142, 45164, 45165, 45163, 45166, 45163, 45167, 45167, 45168, 45168, 45169, 45142, 45170, 45171, 45170, 45172, 45171, 45173, 45173, 45174, 45174, 45175, 45175, 45171, 45176, 45177, 45159, 45178, 45179, 45179, 45179, 45179, 45179, 45179, 45179, 45179, 45179, 45179, 45179, 45179, 45179, 45179, 45179, 45180, 45180, 45180, 45180, 45180, 45180, 45180, 45180, 45180, 45180, 45180, 45180, 45180, 45180, 45180, 0, 0, 0, 45181, 45182, 45183, 45184, 45183, 45182, 0, 0, 45185, 45186, 45187, 45183, 45184, 45183, 0, 0, 45188, 45189, 45188, 45190, 45188, 45191, 0, 0, 45192, 45193, 45194, 0, 0, 0, 37003, 37003, 37004, 37005, 37003, 37006, 37007, 0, 45200, 45201, 45202, 45201, 45203, 45204, 45205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 0, 0, 0, 0, 0, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 0, 0, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 0, 0, 0, 0, 0, 0, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 16384, 8192, 8192, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 16384, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 16384, 0, 0, 0, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 0, 0]);
widthIndex = $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, 3, 4, 0, 5, 0, 6, 0, 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 6, 6, 6, 6, 7, 6, 6, 8, 9, 10, 15, 0, 0, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 18, 0, 19, 20, 21, 22, 23, 24, 25, 0, 26, 0, 0, 27, 0, 28, 8, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 46, 14, 14, 14, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 14, 58, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 59, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 64, 0, 0, 65, 66, 67, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 70, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 74, 75, 76, 77, 0, 78, 79, 0, 0, 80, 81, 82, 83, 58, 84, 14, 85, 86, 87, 88, 89, 14, 90, 14, 91, 0, 0, 0, 0, 0, 0, 0, 0, 92, 93, 94, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 6, 12, 0, 0, 13, 0, 0, 0, 14, 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, 0, 0, 0, 0, 8, 8, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 17, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
inverseData = $toNativeArray($kindArray, [$toNativeArray($kindUint8, [0, 0, 0, 0]), $toNativeArray($kindUint8, [3, 227, 128, 160]), $toNativeArray($kindUint8, [3, 239, 188, 160]), $toNativeArray($kindUint8, [3, 239, 188, 224]), $toNativeArray($kindUint8, [3, 239, 189, 224]), $toNativeArray($kindUint8, [3, 239, 191, 2]), $toNativeArray($kindUint8, [3, 239, 191, 0]), $toNativeArray($kindUint8, [3, 239, 191, 14]), $toNativeArray($kindUint8, [3, 239, 191, 12]), $toNativeArray($kindUint8, [3, 239, 191, 15]), $toNativeArray($kindUint8, [3, 239, 191, 57]), $toNativeArray($kindUint8, [3, 239, 191, 59]), $toNativeArray($kindUint8, [3, 239, 191, 63]), $toNativeArray($kindUint8, [3, 239, 191, 42]), $toNativeArray($kindUint8, [3, 239, 191, 13]), $toNativeArray($kindUint8, [3, 239, 191, 37]), $toNativeArray($kindUint8, [3, 239, 189, 26]), $toNativeArray($kindUint8, [3, 239, 189, 38]), $toNativeArray($kindUint8, [1, 160, 0, 0]), $toNativeArray($kindUint8, [3, 239, 189, 37]), $toNativeArray($kindUint8, [3, 239, 189, 35]), $toNativeArray($kindUint8, [3, 239, 189, 46]), $toNativeArray($kindUint8, [3, 239, 190, 7]), $toNativeArray($kindUint8, [3, 239, 190, 5]), $toNativeArray($kindUint8, [3, 239, 189, 6]), $toNativeArray($kindUint8, [3, 239, 189, 19]), $toNativeArray($kindUint8, [3, 239, 189, 11]), $toNativeArray($kindUint8, [3, 239, 189, 22]), $toNativeArray($kindUint8, [3, 239, 189, 12]), $toNativeArray($kindUint8, [3, 239, 189, 21]), $toNativeArray($kindUint8, [3, 239, 189, 13]), $toNativeArray($kindUint8, [3, 239, 189, 28]), $toNativeArray($kindUint8, [3, 239, 189, 2]), $toNativeArray($kindUint8, [3, 239, 189, 31]), $toNativeArray($kindUint8, [3, 239, 189, 29]), $toNativeArray($kindUint8, [3, 239, 189, 23]), $toNativeArray($kindUint8, [3, 239, 189, 8]), $toNativeArray($kindUint8, [3, 239, 189, 9]), $toNativeArray($kindUint8, [3, 239, 189, 14]), $toNativeArray($kindUint8, [3, 239, 189, 4]), $toNativeArray($kindUint8, [3, 239, 189, 5]), $toNativeArray($kindUint8, [3, 239, 190, 63]), $toNativeArray($kindUint8, [3, 239, 190, 0]), $toNativeArray($kindUint8, [3, 239, 189, 44]), $toNativeArray($kindUint8, [3, 239, 190, 6]), $toNativeArray($kindUint8, [3, 239, 190, 12]), $toNativeArray($kindUint8, [3, 239, 190, 15]), $toNativeArray($kindUint8, [3, 239, 190, 13]), $toNativeArray($kindUint8, [3, 239, 190, 11]), $toNativeArray($kindUint8, [3, 239, 190, 25]), $toNativeArray($kindUint8, [3, 239, 190, 21]), $toNativeArray($kindUint8, [3, 239, 190, 17]), $toNativeArray($kindUint8, [3, 239, 190, 49]), $toNativeArray($kindUint8, [3, 239, 190, 51]), $toNativeArray($kindUint8, [3, 239, 189, 15]), $toNativeArray($kindUint8, [3, 239, 190, 48]), $toNativeArray($kindUint8, [3, 239, 190, 62]), $toNativeArray($kindUint8, [3, 239, 190, 50]), $toNativeArray($kindUint8, [3, 239, 190, 54]), $toNativeArray($kindUint8, [3, 239, 189, 20]), $toNativeArray($kindUint8, [3, 239, 190, 46]), $toNativeArray($kindUint8, [3, 239, 189, 30]), $toNativeArray($kindUint8, [3, 239, 190, 16]), $toNativeArray($kindUint8, [3, 239, 191, 19]), $toNativeArray($kindUint8, [3, 239, 191, 21]), $toNativeArray($kindUint8, [3, 239, 191, 23]), $toNativeArray($kindUint8, [3, 239, 191, 31]), $toNativeArray($kindUint8, [3, 239, 191, 29]), $toNativeArray($kindUint8, [3, 239, 191, 27]), $toNativeArray($kindUint8, [3, 239, 191, 9]), $toNativeArray($kindUint8, [3, 239, 191, 11]), $toNativeArray($kindUint8, [3, 239, 191, 55]), $toNativeArray($kindUint8, [3, 239, 190, 4]), $toNativeArray($kindUint8, [1, 224, 0, 0]), $toNativeArray($kindUint8, [3, 226, 166, 26]), $toNativeArray($kindUint8, [3, 226, 166, 38]), $toNativeArray($kindUint8, [3, 227, 128, 35]), $toNativeArray($kindUint8, [3, 227, 128, 46]), $toNativeArray($kindUint8, [3, 227, 128, 37]), $toNativeArray($kindUint8, [3, 227, 131, 30]), $toNativeArray($kindUint8, [3, 227, 131, 20]), $toNativeArray($kindUint8, [3, 227, 130, 6]), $toNativeArray($kindUint8, [3, 227, 130, 11]), $toNativeArray($kindUint8, [3, 227, 130, 12]), $toNativeArray($kindUint8, [3, 227, 130, 13]), $toNativeArray($kindUint8, [3, 227, 130, 2]), $toNativeArray($kindUint8, [3, 227, 131, 15]), $toNativeArray($kindUint8, [3, 227, 131, 8]), $toNativeArray($kindUint8, [3, 227, 131, 9]), $toNativeArray($kindUint8, [3, 227, 131, 44]), $toNativeArray($kindUint8, [3, 227, 131, 12]), $toNativeArray($kindUint8, [3, 227, 130, 19]), $toNativeArray($kindUint8, [3, 227, 130, 22]), $toNativeArray($kindUint8, [3, 227, 130, 21]), $toNativeArray($kindUint8, [3, 227, 130, 28]), $toNativeArray($kindUint8, [3, 227, 130, 31]), $toNativeArray($kindUint8, [3, 227, 130, 29]), $toNativeArray($kindUint8, [3, 227, 130, 26]), $toNativeArray($kindUint8, [3, 227, 130, 23]), $toNativeArray($kindUint8, [3, 227, 130, 8]), $toNativeArray($kindUint8, [3, 227, 130, 9]), $toNativeArray($kindUint8, [3, 227, 130, 14]), $toNativeArray($kindUint8, [3, 227, 130, 4]), $toNativeArray($kindUint8, [3, 227, 130, 5]), $toNativeArray($kindUint8, [3, 227, 130, 63]), $toNativeArray($kindUint8, [3, 227, 131, 0]), $toNativeArray($kindUint8, [3, 227, 131, 6]), $toNativeArray($kindUint8, [3, 227, 131, 5]), $toNativeArray($kindUint8, [3, 227, 131, 13]), $toNativeArray($kindUint8, [3, 227, 131, 11]), $toNativeArray($kindUint8, [3, 227, 131, 7]), $toNativeArray($kindUint8, [3, 227, 131, 25]), $toNativeArray($kindUint8, [3, 227, 131, 21]), $toNativeArray($kindUint8, [3, 227, 131, 17]), $toNativeArray($kindUint8, [3, 227, 131, 49]), $toNativeArray($kindUint8, [3, 227, 131, 51]), $toNativeArray($kindUint8, [3, 227, 131, 48]), $toNativeArray($kindUint8, [3, 227, 131, 62]), $toNativeArray($kindUint8, [3, 227, 131, 50]), $toNativeArray($kindUint8, [3, 227, 131, 54]), $toNativeArray($kindUint8, [3, 227, 131, 46]), $toNativeArray($kindUint8, [3, 227, 130, 7]), $toNativeArray($kindUint8, [3, 227, 133, 4]), $toNativeArray($kindUint8, [3, 227, 132, 16]), $toNativeArray($kindUint8, [3, 227, 133, 48]), $toNativeArray($kindUint8, [3, 227, 133, 13]), $toNativeArray($kindUint8, [3, 227, 133, 19]), $toNativeArray($kindUint8, [3, 227, 133, 21]), $toNativeArray($kindUint8, [3, 227, 133, 23]), $toNativeArray($kindUint8, [3, 227, 133, 31]), $toNativeArray($kindUint8, [3, 227, 133, 29]), $toNativeArray($kindUint8, [3, 227, 133, 27]), $toNativeArray($kindUint8, [3, 227, 133, 9]), $toNativeArray($kindUint8, [3, 227, 133, 15]), $toNativeArray($kindUint8, [3, 227, 133, 11]), $toNativeArray($kindUint8, [3, 227, 133, 55]), $toNativeArray($kindUint8, [3, 227, 133, 59]), $toNativeArray($kindUint8, [3, 227, 133, 57]), $toNativeArray($kindUint8, [3, 227, 133, 63]), $toNativeArray($kindUint8, [2, 194, 2, 0]), $toNativeArray($kindUint8, [2, 194, 14, 0]), $toNativeArray($kindUint8, [2, 194, 12, 0]), $toNativeArray($kindUint8, [2, 194, 0, 0]), $toNativeArray($kindUint8, [3, 226, 130, 15]), $toNativeArray($kindUint8, [3, 226, 148, 42]), $toNativeArray($kindUint8, [3, 226, 134, 57]), $toNativeArray($kindUint8, [3, 226, 134, 59]), $toNativeArray($kindUint8, [3, 226, 134, 63]), $toNativeArray($kindUint8, [3, 226, 150, 13]), $toNativeArray($kindUint8, [3, 226, 151, 37])]);
trie = newWidthTrie(0);
$pkg.Fold = new Transformer.ptr((x = new foldTransform.ptr(new transform.NopResetter.ptr()), new x.constructor.elem(x)));
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["net/http"] = (function() {
var $pkg = {}, $init, bufio, bytes, gzip, list, context, rand, tls, base64, binary, errors, fmt, js, io, ioutil, log, math, mime, multipart, net, httptrace, internal, textproto, url, os, path, filepath, reflect, runtime, sort, strconv, strings, sync, atomic, time, utf8, hpack, idna, httplex, norm, width, streamReader, fetchTransport, noTransport, XHRTransport, Client, RoundTripper, cancelTimerBody, Cookie, http2ClientConnPool, http2clientConnPoolIdleCloser, http2clientConnPool, http2dialCall, http2addConnCall, http2noDialClientConnPool, http2noDialH2RoundTripper, http2ErrCode, http2ConnectionError, http2StreamError, http2goAwayFlowError, http2connError, http2pseudoHeaderError, http2duplicatePseudoHeaderError, http2headerFieldNameError, http2headerFieldValueError, http2fixedBuffer, http2flow, http2FrameType, http2Flags, http2FrameHeader, http2Frame, http2Framer, 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, http2ServeConnOpts, http2serverConn, http2stream, http2readFrameResult, http2frameWriteResult, http2requestParam, http2bodyReadMsg, http2requestBody, http2responseWriter, http2responseWriterState, http2chunkWriter, http2pushOptions, http2startPushRequest, http2Transport, http2ClientConn, http2clientStream, http2stickyErrWriter, 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, http2randomWriteScheduler, Header, writeStringer, stringWriter, keyValues, headerSorter, contextKey, noBody, PushOptions, CookieJar, ProtocolError, badStringError, Request, 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, transferWriter, transferReader, body, bodyLocked, finishAsyncByteRead, Transport, transportRequest, transportReadFromServerError, persistConnWriter, connectMethod, connectMethodKey, persistConn, nothingWrittenError, responseAndError, requestAndChan, writeRequest, httpError, bodyEOFSignal, gzipReader, tlsHandshakeTimeoutError, fakeLocker, connLRU, canceler, I, I$1, requestTooLarger, dialRes, ptrType, sliceType, ptrType$1, ptrType$2, sliceType$1, ptrType$3, sliceType$2, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, chanType, sliceType$3, sliceType$4, sliceType$5, ptrType$12, ptrType$13, ptrType$14, ptrType$15, funcType, ptrType$16, mapType, funcType$1, ptrType$17, funcType$2, ptrType$18, ptrType$19, ptrType$20, structType, ptrType$21, ptrType$22, sliceType$6, ptrType$23, ptrType$24, sliceType$7, arrayType, ptrType$27, sliceType$9, ptrType$28, ptrType$29, sliceType$10, ptrType$30, sliceType$11, arrayType$2, sliceType$12, sliceType$13, ptrType$31, ptrType$32, arrayType$3, ptrType$33, ptrType$34, ptrType$35, arrayType$4, sliceType$14, ptrType$36, ptrType$37, 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, ptrType$55, sliceType$15, sliceType$16, ptrType$56, ptrType$57, ptrType$58, ptrType$59, ptrType$60, ptrType$61, ptrType$62, ptrType$63, ptrType$64, ptrType$65, ptrType$66, ptrType$67, ptrType$68, sliceType$17, ptrType$69, ptrType$70, ptrType$71, ptrType$72, sliceType$18, ptrType$73, ptrType$76, ptrType$78, ptrType$79, ptrType$80, ptrType$81, ptrType$82, ptrType$83, ptrType$84, sliceType$20, arrayType$5, sliceType$21, structType$1, ptrType$85, ptrType$86, ptrType$87, ptrType$88, ptrType$89, ptrType$90, ptrType$91, ptrType$92, ptrType$93, arrayType$6, arrayType$7, ptrType$94, ptrType$95, ptrType$96, ptrType$97, mapType$1, ptrType$98, sliceType$22, ptrType$99, ptrType$100, ptrType$101, ptrType$102, ptrType$103, mapType$2, funcType$3, funcType$4, ptrType$104, funcType$5, ptrType$105, mapType$3, mapType$4, mapType$5, mapType$6, chanType$2, ptrType$108, ptrType$109, funcType$6, funcType$7, funcType$8, ptrType$110, chanType$3, funcType$9, funcType$10, funcType$11, funcType$12, funcType$13, funcType$14, funcType$15, funcType$16, funcType$17, ptrType$111, funcType$18, funcType$19, chanType$4, chanType$5, chanType$6, chanType$7, chanType$8, funcType$20, chanType$9, mapType$7, mapType$8, chanType$10, chanType$11, chanType$12, funcType$21, mapType$9, mapType$10, chanType$13, ptrType$112, ptrType$113, ptrType$114, ptrType$115, funcType$22, ptrType$116, ptrType$118, mapType$12, mapType$13, ptrType$119, ptrType$120, ptrType$121, funcType$24, ptrType$122, ptrType$123, ptrType$124, mapType$14, funcType$25, mapType$15, funcType$26, mapType$16, mapType$17, ptrType$127, ptrType$128, ptrType$129, ptrType$130, chanType$14, ptrType$131, ptrType$132, chanType$15, mapType$18, mapType$19, mapType$20, funcType$27, funcType$28, funcType$29, funcType$30, mapType$21, ptrType$134, chanType$16, chanType$17, funcType$31, chanType$18, chanType$19, chanType$20, ptrType$135, funcType$32, funcType$33, ptrType$136, ptrType$137, mapType$22, cookieNameSanitizer, errSeeker, errNoOverlap, unixEpochTime, http2errCodeName, http2errMixPseudoHeaderTypes, http2errPseudoAfterRegular, http2errReadEmpty, http2errWriteFull, http2padZeros, http2frameName, http2flagName, http2frameParsers, http2fhBytes, http2ErrFrameTooLarge, http2errStreamID, http2errDepStreamID, http2errPadLength, 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, http2errChanPool, http2writeDataPool, http2errHandlerPanicked, http2reqBodyCache, http2ErrRecursivePush, http2ErrPushLimitReached, http2connHeaders, http2badTrailer, http2testh1ServerShutdownChan, http2errTransportVersion, http2ErrNoCachedConn, http2errClientConnClosed, http2errClientConnUnusable, http2errClientConnGotGoAway, http2errClientConnGotGoAwayAfterSomeReqBody, http2errRequestCanceled, http2errStopReqBodyWrite, http2errStopReqBodyWriteAndCancel, http2errClosedResponseBody, http2errInvalidTrailers, http2errResponseHeaderListSize, http2errPseudoTrailers, http2noBody, headerNewlineToSpace, headerSorterPool, aLongTimeAgo, reqWriteExcludeHeader, multipartByReader, errMissingHost, textprotoReaderPool, respExcludeHeader, crlf, colonSpace, bufioReaderPool, bufioWriter2kPool, bufioWriter2kPool$24ptr, bufioWriter4kPool, bufioWriter4kPool$24ptr, copyBufPool, errTooLarge, extraHeaderKeys, headerContentLength, headerDate, statusMu, statusLines, connStateInterface, 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, errServerClosedIdle, errIdleConnTimeout, errNotCachingH2Conn, zeroDialer, errTimeout, errRequestCanceled, errRequestCanceledConn, testHookEnterRoundTrip, testHookWaitResLoop, testHookRoundTripRetried, testHookPrePendingDial, testHookPostPendingDial, testHookMu, testHookReadLoopBeforeNextRead, portMap, errReadOnClosedResBody, x, x$1, x$2, refererForURL, send, setRequestCancel, basicAuth, Get, alwaysFalse, redirectBehavior, defaultCheckRedirect, shouldCopyHeaderOnRedirect, isDomainOrSubdomain, readSetCookies, readCookies, validCookieDomain, validCookieExpires, isCookieDomainName, sanitizeCookieName, sanitizeCookieValue, validCookieValueByte, sanitizeCookiePath, validCookiePathByte, sanitizeOrWarn, parseCookieValue, isCookieNameValid, http2filterOutClientConn, http2configureTransport, http2registerHTTPSProtocol, http2streamError, http2typeFrameParser, http2readFrameHeader, http2NewFramer, http2terminalReadFrameError, http2parseDataFrame, http2validStreamIDOrZero, http2validStreamID, http2parseSettingsFrame, http2parsePingFrame, http2parseGoAwayFrame, http2parseUnknownFrame, http2parseWindowUpdateFrame, http2parseHeadersFrame, http2parsePriorityFrame, http2parseRSTStreamFrame, http2parseContinuationFrame, http2parsePushPromise, http2readByte, http2readUint32, http2summarizeFrame, http2transportExpectContinueTimeout, http2isBadCipher, http2serverConnBaseContext, http2contextWithCancel, http2requestWithContext, http2reqContext, http2setResponseUncompressed, http2traceGotConn, http2traceWroteHeaders, http2traceGot100Continue, http2traceWait100Continue, http2traceWroteRequest, http2traceFirstResponseByte, http2requestTrace, http2cloneTLSConfig, http2configureServer18, http2shouldLogPanic, http2reqGetBody, http2reqBodyIsNoBody, http2newGoroutineLock, http2curGoroutineID, http2parseUintBytes, http2cutoff64, init, http2lowerHeader, init$1, http2validWireHeaderFieldName, init$2, http2httpCodeString, http2newBufferedWriter, http2mustUint31, http2bodyAllowedForStatus, http2validPseudoPath, http2ConfigureServer, http2errno, http2isClosedConnError, http2checkPriority, http2getRequestBodyBuf, http2putRequestBodyBuf, http2handleHeaderListTooLong, http2cloneHeader, http2foreachHeaderElement, http2checkValidHTTP2RequestHeaders, http2new400Handler, http2ValidTrailerHeader, http2h1ServerShutdownChan, http2h1ServerKeepAlivesDisabled, http2authorityAddr, http2shouldRetryRequest, http2commaSeparatedTrailers, http2checkConnHeaders, http2actualContentLength, http2shouldSendReqContentLength, http2isEOFOrNetReadError, http2strSliceContains, http2isConnectionCloseRequest, http2writeEndsStream, http2splitHeaderBlock, http2encKV, http2encodeHeaders, 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, foreachHeaderElement, statusLine, validNPN, isCommonNetReadError, registerOnHitEOF, requestBodyRemains, Error, NotFound, NotFoundHandler, Redirect, htmlEscape, RedirectHandler, pathMatch, cleanPath, newLoggingConn, numLeadingCRorLF, strSliceContains, DetectContentType, isWS, StatusText, newTransferWriter, noResponseBodyExpected, bodyAllowedForStatus, suppressedHeaders, readTransfer, chunked, isIdentity, fixLength, shouldClose, fixTrailer, seeUpcomingDoubleCRLF, mergeSetHeader, parseContentLength, nop, canonicalAddr, cloneTLSConfig, validPort;
bufio = $packages["bufio"];
bytes = $packages["bytes"];
gzip = $packages["compress/gzip"];
list = $packages["container/list"];
context = $packages["context"];
rand = $packages["crypto/rand"];
tls = $packages["crypto/tls"];
base64 = $packages["encoding/base64"];
binary = $packages["encoding/binary"];
errors = $packages["errors"];
fmt = $packages["fmt"];
js = $packages["github.com/gopherjs/gopherjs/js"];
io = $packages["io"];
ioutil = $packages["io/ioutil"];
log = $packages["log"];
math = $packages["math"];
mime = $packages["mime"];
multipart = $packages["mime/multipart"];
net = $packages["net"];
httptrace = $packages["net/http/httptrace"];
internal = $packages["net/http/internal"];
textproto = $packages["net/textproto"];
url = $packages["net/url"];
os = $packages["os"];
path = $packages["path"];
filepath = $packages["path/filepath"];
reflect = $packages["reflect"];
runtime = $packages["runtime"];
sort = $packages["sort"];
strconv = $packages["strconv"];
strings = $packages["strings"];
sync = $packages["sync"];
atomic = $packages["sync/atomic"];
time = $packages["time"];
utf8 = $packages["unicode/utf8"];
hpack = $packages["vendor/golang_org/x/net/http2/hpack"];
idna = $packages["vendor/golang_org/x/net/idna"];
httplex = $packages["vendor/golang_org/x/net/lex/httplex"];
norm = $packages["vendor/golang_org/x/text/unicode/norm"];
width = $packages["vendor/golang_org/x/text/width"];
streamReader = $pkg.streamReader = $newType(0, $kindStruct, "http.streamReader", true, "net/http", false, function(pending_, stream_) {
this.$val = this;
if (arguments.length === 0) {
this.pending = sliceType$2.nil;
this.stream = null;
return;
}
this.pending = pending_;
this.stream = stream_;
});
fetchTransport = $pkg.fetchTransport = $newType(0, $kindStruct, "http.fetchTransport", true, "net/http", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
noTransport = $pkg.noTransport = $newType(0, $kindStruct, "http.noTransport", true, "net/http", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
XHRTransport = $pkg.XHRTransport = $newType(0, $kindStruct, "http.XHRTransport", true, "net/http", true, function(inflight_) {
this.$val = this;
if (arguments.length === 0) {
this.inflight = false;
return;
}
this.inflight = inflight_;
});
Client = $pkg.Client = $newType(0, $kindStruct, "http.Client", true, "net/http", true, function(Transport_, CheckRedirect_, Jar_, Timeout_) {
this.$val = this;
if (arguments.length === 0) {
this.Transport = $ifaceNil;
this.CheckRedirect = $throwNilPointerError;
this.Jar = $ifaceNil;
this.Timeout = new time.Duration(0, 0);
return;
}
this.Transport = Transport_;
this.CheckRedirect = CheckRedirect_;
this.Jar = Jar_;
this.Timeout = Timeout_;
});
RoundTripper = $pkg.RoundTripper = $newType(8, $kindInterface, "http.RoundTripper", true, "net/http", true, null);
cancelTimerBody = $pkg.cancelTimerBody = $newType(0, $kindStruct, "http.cancelTimerBody", true, "net/http", false, function(stop_, rc_, reqDidTimeout_) {
this.$val = this;
if (arguments.length === 0) {
this.stop = $throwNilPointerError;
this.rc = $ifaceNil;
this.reqDidTimeout = $throwNilPointerError;
return;
}
this.stop = stop_;
this.rc = rc_;
this.reqDidTimeout = reqDidTimeout_;
});
Cookie = $pkg.Cookie = $newType(0, $kindStruct, "http.Cookie", true, "net/http", true, function(Name_, Value_, Path_, Domain_, Expires_, RawExpires_, MaxAge_, Secure_, HttpOnly_, Raw_, Unparsed_) {
this.$val = this;
if (arguments.length === 0) {
this.Name = "";
this.Value = "";
this.Path = "";
this.Domain = "";
this.Expires = new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil);
this.RawExpires = "";
this.MaxAge = 0;
this.Secure = false;
this.HttpOnly = false;
this.Raw = "";
this.Unparsed = sliceType$1.nil;
return;
}
this.Name = Name_;
this.Value = Value_;
this.Path = Path_;
this.Domain = Domain_;
this.Expires = Expires_;
this.RawExpires = RawExpires_;
this.MaxAge = MaxAge_;
this.Secure = Secure_;
this.HttpOnly = HttpOnly_;
this.Raw = Raw_;
this.Unparsed = Unparsed_;
});
http2ClientConnPool = $pkg.http2ClientConnPool = $newType(8, $kindInterface, "http.http2ClientConnPool", true, "net/http", false, null);
http2clientConnPoolIdleCloser = $pkg.http2clientConnPoolIdleCloser = $newType(8, $kindInterface, "http.http2clientConnPoolIdleCloser", true, "net/http", false, null);
http2clientConnPool = $pkg.http2clientConnPool = $newType(0, $kindStruct, "http.http2clientConnPool", true, "net/http", false, function(t_, mu_, conns_, dialing_, keys_, addConnCalls_) {
this.$val = this;
if (arguments.length === 0) {
this.t = ptrType$14.nil;
this.mu = new sync.Mutex.ptr(0, 0);
this.conns = false;
this.dialing = false;
this.keys = false;
this.addConnCalls = false;
return;
}
this.t = t_;
this.mu = mu_;
this.conns = conns_;
this.dialing = dialing_;
this.keys = keys_;
this.addConnCalls = addConnCalls_;
});
http2dialCall = $pkg.http2dialCall = $newType(0, $kindStruct, "http.http2dialCall", true, "net/http", false, function(p_, done_, res_, err_) {
this.$val = this;
if (arguments.length === 0) {
this.p = ptrType$3.nil;
this.done = $chanNil;
this.res = ptrType$27.nil;
this.err = $ifaceNil;
return;
}
this.p = p_;
this.done = done_;
this.res = res_;
this.err = err_;
});
http2addConnCall = $pkg.http2addConnCall = $newType(0, $kindStruct, "http.http2addConnCall", true, "net/http", false, function(p_, done_, err_) {
this.$val = this;
if (arguments.length === 0) {
this.p = ptrType$3.nil;
this.done = $chanNil;
this.err = $ifaceNil;
return;
}
this.p = p_;
this.done = done_;
this.err = err_;
});
http2noDialClientConnPool = $pkg.http2noDialClientConnPool = $newType(0, $kindStruct, "http.http2noDialClientConnPool", true, "net/http", false, function(http2clientConnPool_) {
this.$val = this;
if (arguments.length === 0) {
this.http2clientConnPool = ptrType$3.nil;
return;
}
this.http2clientConnPool = http2clientConnPool_;
});
http2noDialH2RoundTripper = $pkg.http2noDialH2RoundTripper = $newType(0, $kindStruct, "http.http2noDialH2RoundTripper", true, "net/http", false, function(t_) {
this.$val = this;
if (arguments.length === 0) {
this.t = ptrType$14.nil;
return;
}
this.t = t_;
});
http2ErrCode = $pkg.http2ErrCode = $newType(4, $kindUint32, "http.http2ErrCode", true, "net/http", false, null);
http2ConnectionError = $pkg.http2ConnectionError = $newType(4, $kindUint32, "http.http2ConnectionError", true, "net/http", false, null);
http2StreamError = $pkg.http2StreamError = $newType(0, $kindStruct, "http.http2StreamError", true, "net/http", false, function(StreamID_, Code_, Cause_) {
this.$val = this;
if (arguments.length === 0) {
this.StreamID = 0;
this.Code = 0;
this.Cause = $ifaceNil;
return;
}
this.StreamID = StreamID_;
this.Code = Code_;
this.Cause = Cause_;
});
http2goAwayFlowError = $pkg.http2goAwayFlowError = $newType(0, $kindStruct, "http.http2goAwayFlowError", true, "net/http", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
http2connError = $pkg.http2connError = $newType(0, $kindStruct, "http.http2connError", true, "net/http", false, function(Code_, Reason_) {
this.$val = this;
if (arguments.length === 0) {
this.Code = 0;
this.Reason = "";
return;
}
this.Code = Code_;
this.Reason = Reason_;
});
http2pseudoHeaderError = $pkg.http2pseudoHeaderError = $newType(8, $kindString, "http.http2pseudoHeaderError", true, "net/http", false, null);
http2duplicatePseudoHeaderError = $pkg.http2duplicatePseudoHeaderError = $newType(8, $kindString, "http.http2duplicatePseudoHeaderError", true, "net/http", false, null);
http2headerFieldNameError = $pkg.http2headerFieldNameError = $newType(8, $kindString, "http.http2headerFieldNameError", true, "net/http", false, null);
http2headerFieldValueError = $pkg.http2headerFieldValueError = $newType(8, $kindString, "http.http2headerFieldValueError", true, "net/http", false, null);
http2fixedBuffer = $pkg.http2fixedBuffer = $newType(0, $kindStruct, "http.http2fixedBuffer", true, "net/http", false, function(buf_, r_, w_) {
this.$val = this;
if (arguments.length === 0) {
this.buf = sliceType$2.nil;
this.r = 0;
this.w = 0;
return;
}
this.buf = buf_;
this.r = r_;
this.w = w_;
});
http2flow = $pkg.http2flow = $newType(0, $kindStruct, "http.http2flow", true, "net/http", false, function(n_, conn_) {
this.$val = this;
if (arguments.length === 0) {
this.n = 0;
this.conn = ptrType$31.nil;
return;
}
this.n = n_;
this.conn = conn_;
});
http2FrameType = $pkg.http2FrameType = $newType(1, $kindUint8, "http.http2FrameType", true, "net/http", false, null);
http2Flags = $pkg.http2Flags = $newType(1, $kindUint8, "http.http2Flags", true, "net/http", false, null);
http2FrameHeader = $pkg.http2FrameHeader = $newType(0, $kindStruct, "http.http2FrameHeader", true, "net/http", false, function(valid_, Type_, Flags_, Length_, StreamID_) {
this.$val = this;
if (arguments.length === 0) {
this.valid = false;
this.Type = 0;
this.Flags = 0;
this.Length = 0;
this.StreamID = 0;
return;
}
this.valid = valid_;
this.Type = Type_;
this.Flags = Flags_;
this.Length = Length_;
this.StreamID = StreamID_;
});
http2Frame = $pkg.http2Frame = $newType(8, $kindInterface, "http.http2Frame", true, "net/http", false, null);
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_) {
this.$val = this;
if (arguments.length === 0) {
this.r = $ifaceNil;
this.lastFrame = $ifaceNil;
this.errDetail = $ifaceNil;
this.lastHeaderStream = 0;
this.maxReadSize = 0;
this.headerBuf = arrayType$3.zero();
this.getReadBuf = $throwNilPointerError;
this.readBuf = sliceType$2.nil;
this.maxWriteSize = 0;
this.w = $ifaceNil;
this.wbuf = sliceType$2.nil;
this.AllowIllegalWrites = false;
this.AllowIllegalReads = false;
this.ReadMetaHeaders = ptrType$33.nil;
this.MaxHeaderListSize = 0;
this.logReads = false;
this.logWrites = false;
this.debugFramer = ptrType$32.nil;
this.debugFramerBuf = ptrType$34.nil;
this.debugReadLoggerf = $throwNilPointerError;
this.debugWriteLoggerf = $throwNilPointerError;
return;
}
this.r = r_;
this.lastFrame = lastFrame_;
this.errDetail = errDetail_;
this.lastHeaderStream = lastHeaderStream_;
this.maxReadSize = maxReadSize_;
this.headerBuf = headerBuf_;
this.getReadBuf = getReadBuf_;
this.readBuf = readBuf_;
this.maxWriteSize = maxWriteSize_;
this.w = w_;
this.wbuf = wbuf_;
this.AllowIllegalWrites = AllowIllegalWrites_;
this.AllowIllegalReads = AllowIllegalReads_;
this.ReadMetaHeaders = ReadMetaHeaders_;
this.MaxHeaderListSize = MaxHeaderListSize_;
this.logReads = logReads_;
this.logWrites = logWrites_;
this.debugFramer = debugFramer_;
this.debugFramerBuf = debugFramerBuf_;
this.debugReadLoggerf = debugReadLoggerf_;
this.debugWriteLoggerf = debugWriteLoggerf_;
});
http2DataFrame = $pkg.http2DataFrame = $newType(0, $kindStruct, "http.http2DataFrame", true, "net/http", false, function(http2FrameHeader_, data_) {
this.$val = this;
if (arguments.length === 0) {
this.http2FrameHeader = new http2FrameHeader.ptr(false, 0, 0, 0, 0);
this.data = sliceType$2.nil;
return;
}
this.http2FrameHeader = http2FrameHeader_;
this.data = data_;
});
http2SettingsFrame = $pkg.http2SettingsFrame = $newType(0, $kindStruct, "http.http2SettingsFrame", true, "net/http", false, function(http2FrameHeader_, p_) {
this.$val = this;
if (arguments.length === 0) {
this.http2FrameHeader = new http2FrameHeader.ptr(false, 0, 0, 0, 0);
this.p = sliceType$2.nil;
return;
}
this.http2FrameHeader = http2FrameHeader_;
this.p = p_;
});
http2PingFrame = $pkg.http2PingFrame = $newType(0, $kindStruct, "http.http2PingFrame", true, "net/http", false, function(http2FrameHeader_, Data_) {
this.$val = this;
if (arguments.length === 0) {
this.http2FrameHeader = new http2FrameHeader.ptr(false, 0, 0, 0, 0);
this.Data = arrayType$4.zero();
return;
}
this.http2FrameHeader = http2FrameHeader_;
this.Data = Data_;
});
http2GoAwayFrame = $pkg.http2GoAwayFrame = $newType(0, $kindStruct, "http.http2GoAwayFrame", true, "net/http", false, function(http2FrameHeader_, LastStreamID_, ErrCode_, debugData_) {
this.$val = this;
if (arguments.length === 0) {
this.http2FrameHeader = new http2FrameHeader.ptr(false, 0, 0, 0, 0);
this.LastStreamID = 0;
this.ErrCode = 0;
this.debugData = sliceType$2.nil;
return;
}
this.http2FrameHeader = http2FrameHeader_;
this.LastStreamID = LastStreamID_;
this.ErrCode = ErrCode_;
this.debugData = debugData_;
});
http2UnknownFrame = $pkg.http2UnknownFrame = $newType(0, $kindStruct, "http.http2UnknownFrame", true, "net/http", false, function(http2FrameHeader_, p_) {
this.$val = this;
if (arguments.length === 0) {
this.http2FrameHeader = new http2FrameHeader.ptr(false, 0, 0, 0, 0);
this.p = sliceType$2.nil;
return;
}
this.http2FrameHeader = http2FrameHeader_;
this.p = p_;
});
http2WindowUpdateFrame = $pkg.http2WindowUpdateFrame = $newType(0, $kindStruct, "http.http2WindowUpdateFrame", true, "net/http", false, function(http2FrameHeader_, Increment_) {
this.$val = this;
if (arguments.length === 0) {
this.http2FrameHeader = new http2FrameHeader.ptr(false, 0, 0, 0, 0);
this.Increment = 0;
return;
}
this.http2FrameHeader = http2FrameHeader_;
this.Increment = Increment_;
});
http2HeadersFrame = $pkg.http2HeadersFrame = $newType(0, $kindStruct, "http.http2HeadersFrame", true, "net/http", false, function(http2FrameHeader_, Priority_, headerFragBuf_) {
this.$val = this;
if (arguments.length === 0) {
this.http2FrameHeader = new http2FrameHeader.ptr(false, 0, 0, 0, 0);
this.Priority = new http2PriorityParam.ptr(0, false, 0);
this.headerFragBuf = sliceType$2.nil;
return;
}
this.http2FrameHeader = http2FrameHeader_;
this.Priority = Priority_;
this.headerFragBuf = headerFragBuf_;
});
http2HeadersFrameParam = $pkg.http2HeadersFrameParam = $newType(0, $kindStruct, "http.http2HeadersFrameParam", true, "net/http", false, function(StreamID_, BlockFragment_, EndStream_, EndHeaders_, PadLength_, Priority_) {
this.$val = this;
if (arguments.length === 0) {
this.StreamID = 0;
this.BlockFragment = sliceType$2.nil;
this.EndStream = false;
this.EndHeaders = false;
this.PadLength = 0;
this.Priority = new http2PriorityParam.ptr(0, false, 0);
return;
}
this.StreamID = StreamID_;
this.BlockFragment = BlockFragment_;
this.EndStream = EndStream_;
this.EndHeaders = EndHeaders_;
this.PadLength = PadLength_;
this.Priority = Priority_;
});
http2PriorityFrame = $pkg.http2PriorityFrame = $newType(0, $kindStruct, "http.http2PriorityFrame", true, "net/http", false, function(http2FrameHeader_, http2PriorityParam_) {
this.$val = this;
if (arguments.length === 0) {
this.http2FrameHeader = new http2FrameHeader.ptr(false, 0, 0, 0, 0);
this.http2PriorityParam = new http2PriorityParam.ptr(0, false, 0);
return;
}
this.http2FrameHeader = http2FrameHeader_;
this.http2PriorityParam = http2PriorityParam_;
});
http2PriorityParam = $pkg.http2PriorityParam = $newType(0, $kindStruct, "http.http2PriorityParam", true, "net/http", false, function(StreamDep_, Exclusive_, Weight_) {
this.$val = this;
if (arguments.length === 0) {
this.StreamDep = 0;
this.Exclusive = false;
this.Weight = 0;
return;
}
this.StreamDep = StreamDep_;
this.Exclusive = Exclusive_;
this.Weight = Weight_;
});
http2RSTStreamFrame = $pkg.http2RSTStreamFrame = $newType(0, $kindStruct, "http.http2RSTStreamFrame", true, "net/http", false, function(http2FrameHeader_, ErrCode_) {
this.$val = this;
if (arguments.length === 0) {
this.http2FrameHeader = new http2FrameHeader.ptr(false, 0, 0, 0, 0);
this.ErrCode = 0;
return;
}
this.http2FrameHeader = http2FrameHeader_;
this.ErrCode = ErrCode_;
});
http2ContinuationFrame = $pkg.http2ContinuationFrame = $newType(0, $kindStruct, "http.http2ContinuationFrame", true, "net/http", false, function(http2FrameHeader_, headerFragBuf_) {
this.$val = this;
if (arguments.length === 0) {
this.http2FrameHeader = new http2FrameHeader.ptr(false, 0, 0, 0, 0);
this.headerFragBuf = sliceType$2.nil;
return;
}
this.http2FrameHeader = http2FrameHeader_;
this.headerFragBuf = headerFragBuf_;
});
http2PushPromiseFrame = $pkg.http2PushPromiseFrame = $newType(0, $kindStruct, "http.http2PushPromiseFrame", true, "net/http", false, function(http2FrameHeader_, PromiseID_, headerFragBuf_) {
this.$val = this;
if (arguments.length === 0) {
this.http2FrameHeader = new http2FrameHeader.ptr(false, 0, 0, 0, 0);
this.PromiseID = 0;
this.headerFragBuf = sliceType$2.nil;
return;
}
this.http2FrameHeader = http2FrameHeader_;
this.PromiseID = PromiseID_;
this.headerFragBuf = headerFragBuf_;
});
http2PushPromiseParam = $pkg.http2PushPromiseParam = $newType(0, $kindStruct, "http.http2PushPromiseParam", true, "net/http", false, function(StreamID_, PromiseID_, BlockFragment_, EndHeaders_, PadLength_) {
this.$val = this;
if (arguments.length === 0) {
this.StreamID = 0;
this.PromiseID = 0;
this.BlockFragment = sliceType$2.nil;
this.EndHeaders = false;
this.PadLength = 0;
return;
}
this.StreamID = StreamID_;
this.PromiseID = PromiseID_;
this.BlockFragment = BlockFragment_;
this.EndHeaders = EndHeaders_;
this.PadLength = PadLength_;
});
http2MetaHeadersFrame = $pkg.http2MetaHeadersFrame = $newType(0, $kindStruct, "http.http2MetaHeadersFrame", true, "net/http", false, function(http2HeadersFrame_, Fields_, Truncated_) {
this.$val = this;
if (arguments.length === 0) {
this.http2HeadersFrame = ptrType$35.nil;
this.Fields = sliceType$14.nil;
this.Truncated = false;
return;
}
this.http2HeadersFrame = http2HeadersFrame_;
this.Fields = Fields_;
this.Truncated = Truncated_;
});
http2contextContext = $pkg.http2contextContext = $newType(8, $kindInterface, "http.http2contextContext", true, "net/http", false, null);
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_) {
this.$val = this;
if (arguments.length === 0) {
this.GetConn = $throwNilPointerError;
this.GotConn = $throwNilPointerError;
this.PutIdleConn = $throwNilPointerError;
this.GotFirstResponseByte = $throwNilPointerError;
this.Got100Continue = $throwNilPointerError;
this.DNSStart = $throwNilPointerError;
this.DNSDone = $throwNilPointerError;
this.ConnectStart = $throwNilPointerError;
this.ConnectDone = $throwNilPointerError;
this.TLSHandshakeStart = $throwNilPointerError;
this.TLSHandshakeDone = $throwNilPointerError;
this.WroteHeaders = $throwNilPointerError;
this.Wait100Continue = $throwNilPointerError;
this.WroteRequest = $throwNilPointerError;
return;
}
this.GetConn = GetConn_;
this.GotConn = GotConn_;
this.PutIdleConn = PutIdleConn_;
this.GotFirstResponseByte = GotFirstResponseByte_;
this.Got100Continue = Got100Continue_;
this.DNSStart = DNSStart_;
this.DNSDone = DNSDone_;
this.ConnectStart = ConnectStart_;
this.ConnectDone = ConnectDone_;
this.TLSHandshakeStart = TLSHandshakeStart_;
this.TLSHandshakeDone = TLSHandshakeDone_;
this.WroteHeaders = WroteHeaders_;
this.Wait100Continue = Wait100Continue_;
this.WroteRequest = WroteRequest_;
});
http2goroutineLock = $pkg.http2goroutineLock = $newType(8, $kindUint64, "http.http2goroutineLock", true, "net/http", false, null);
http2streamState = $pkg.http2streamState = $newType(4, $kindInt, "http.http2streamState", true, "net/http", false, null);
http2Setting = $pkg.http2Setting = $newType(0, $kindStruct, "http.http2Setting", true, "net/http", false, function(ID_, Val_) {
this.$val = this;
if (arguments.length === 0) {
this.ID = 0;
this.Val = 0;
return;
}
this.ID = ID_;
this.Val = Val_;
});
http2SettingID = $pkg.http2SettingID = $newType(2, $kindUint16, "http.http2SettingID", true, "net/http", false, null);
http2gate = $pkg.http2gate = $newType(4, $kindChan, "http.http2gate", true, "net/http", false, null);
http2closeWaiter = $pkg.http2closeWaiter = $newType(4, $kindChan, "http.http2closeWaiter", true, "net/http", false, null);
http2bufferedWriter = $pkg.http2bufferedWriter = $newType(0, $kindStruct, "http.http2bufferedWriter", true, "net/http", false, function(w_, bw_) {
this.$val = this;
if (arguments.length === 0) {
this.w = $ifaceNil;
this.bw = ptrType$10.nil;
return;
}
this.w = w_;
this.bw = bw_;
});
http2httpError = $pkg.http2httpError = $newType(0, $kindStruct, "http.http2httpError", true, "net/http", false, function(msg_, timeout_) {
this.$val = this;
if (arguments.length === 0) {
this.msg = "";
this.timeout = false;
return;
}
this.msg = msg_;
this.timeout = timeout_;
});
http2connectionStater = $pkg.http2connectionStater = $newType(8, $kindInterface, "http.http2connectionStater", true, "net/http", false, null);
http2sorter = $pkg.http2sorter = $newType(0, $kindStruct, "http.http2sorter", true, "net/http", false, function(v_) {
this.$val = this;
if (arguments.length === 0) {
this.v = sliceType$1.nil;
return;
}
this.v = v_;
});
http2pipe = $pkg.http2pipe = $newType(0, $kindStruct, "http.http2pipe", true, "net/http", false, function(mu_, c_, b_, err_, breakErr_, donec_, readFn_) {
this.$val = this;
if (arguments.length === 0) {
this.mu = new sync.Mutex.ptr(0, 0);
this.c = new sync.Cond.ptr(new sync.noCopy.ptr(), $ifaceNil, new sync.notifyList.ptr(0, 0, 0, 0, 0), 0, 0, $chanNil);
this.b = $ifaceNil;
this.err = $ifaceNil;
this.breakErr = $ifaceNil;
this.donec = $chanNil;
this.readFn = $throwNilPointerError;
return;
}
this.mu = mu_;
this.c = c_;
this.b = b_;
this.err = err_;
this.breakErr = breakErr_;
this.donec = donec_;
this.readFn = readFn_;
});
http2pipeBuffer = $pkg.http2pipeBuffer = $newType(8, $kindInterface, "http.http2pipeBuffer", true, "net/http", false, null);
http2Server = $pkg.http2Server = $newType(0, $kindStruct, "http.http2Server", true, "net/http", false, function(MaxHandlers_, MaxConcurrentStreams_, MaxReadFrameSize_, PermitProhibitedCipherSuites_, IdleTimeout_, NewWriteScheduler_) {
this.$val = this;
if (arguments.length === 0) {
this.MaxHandlers = 0;
this.MaxConcurrentStreams = 0;
this.MaxReadFrameSize = 0;
this.PermitProhibitedCipherSuites = false;
this.IdleTimeout = new time.Duration(0, 0);
this.NewWriteScheduler = $throwNilPointerError;
return;
}
this.MaxHandlers = MaxHandlers_;
this.MaxConcurrentStreams = MaxConcurrentStreams_;
this.MaxReadFrameSize = MaxReadFrameSize_;
this.PermitProhibitedCipherSuites = PermitProhibitedCipherSuites_;
this.IdleTimeout = IdleTimeout_;
this.NewWriteScheduler = NewWriteScheduler_;
});
http2ServeConnOpts = $pkg.http2ServeConnOpts = $newType(0, $kindStruct, "http.http2ServeConnOpts", true, "net/http", false, function(BaseConfig_, Handler_) {
this.$val = this;
if (arguments.length === 0) {
this.BaseConfig = ptrType$44.nil;
this.Handler = $ifaceNil;
return;
}
this.BaseConfig = BaseConfig_;
this.Handler = Handler_;
});
http2serverConn = $pkg.http2serverConn = $newType(0, $kindStruct, "http.http2serverConn", true, "net/http", false, function(srv_, hs_, conn_, bw_, handler_, baseCtx_, framer_, doneServing_, readFrameCh_, wantWriteFrameCh_, wantStartPushCh_, wroteFrameCh_, bodyReadCh_, testHookCh_, flow_, inflow_, tlsState_, remoteAddrStr_, writeSched_, serveG_, pushEnabled_, sawFirstSettings_, needToSendSettingsAck_, unackedSettings_, clientMaxStreams_, advMaxStreams_, curClientStreams_, curPushedStreams_, maxClientStreamID_, maxPushPromiseID_, streams_, initialWindowSize_, maxFrameSize_, headerTableSize_, peerMaxHeaderListSize_, canonHeader_, writingFrame_, writingFrameAsync_, needsFrameFlush_, inGoAway_, inFrameScheduleLoop_, needToSendGoAway_, goAwayCode_, shutdownTimerCh_, shutdownTimer_, idleTimer_, idleTimerCh_, headerWriteBuf_, hpackEncoder_) {
this.$val = this;
if (arguments.length === 0) {
this.srv = ptrType$49.nil;
this.hs = ptrType$44.nil;
this.conn = $ifaceNil;
this.bw = ptrType$52.nil;
this.handler = $ifaceNil;
this.baseCtx = $ifaceNil;
this.framer = ptrType$32.nil;
this.doneServing = $chanNil;
this.readFrameCh = $chanNil;
this.wantWriteFrameCh = $chanNil;
this.wantStartPushCh = $chanNil;
this.wroteFrameCh = $chanNil;
this.bodyReadCh = $chanNil;
this.testHookCh = $chanNil;
this.flow = new http2flow.ptr(0, ptrType$31.nil);
this.inflow = new http2flow.ptr(0, ptrType$31.nil);
this.tlsState = ptrType$17.nil;
this.remoteAddrStr = "";
this.writeSched = $ifaceNil;
this.serveG = new http2goroutineLock(0, 0);
this.pushEnabled = false;
this.sawFirstSettings = false;
this.needToSendSettingsAck = false;
this.unackedSettings = 0;
this.clientMaxStreams = 0;
this.advMaxStreams = 0;
this.curClientStreams = 0;
this.curPushedStreams = 0;
this.maxClientStreamID = 0;
this.maxPushPromiseID = 0;
this.streams = false;
this.initialWindowSize = 0;
this.maxFrameSize = 0;
this.headerTableSize = 0;
this.peerMaxHeaderListSize = 0;
this.canonHeader = false;
this.writingFrame = false;
this.writingFrameAsync = false;
this.needsFrameFlush = false;
this.inGoAway = false;
this.inFrameScheduleLoop = false;
this.needToSendGoAway = false;
this.goAwayCode = 0;
this.shutdownTimerCh = $chanNil;
this.shutdownTimer = ptrType$53.nil;
this.idleTimer = ptrType$53.nil;
this.idleTimerCh = $chanNil;
this.headerWriteBuf = new bytes.Buffer.ptr(sliceType$2.nil, 0, arrayType.zero(), 0);
this.hpackEncoder = ptrType$54.nil;
return;
}
this.srv = srv_;
this.hs = hs_;
this.conn = conn_;
this.bw = bw_;
this.handler = handler_;
this.baseCtx = baseCtx_;
this.framer = framer_;
this.doneServing = doneServing_;
this.readFrameCh = readFrameCh_;
this.wantWriteFrameCh = wantWriteFrameCh_;
this.wantStartPushCh = wantStartPushCh_;
this.wroteFrameCh = wroteFrameCh_;
this.bodyReadCh = bodyReadCh_;
this.testHookCh = testHookCh_;
this.flow = flow_;
this.inflow = inflow_;
this.tlsState = tlsState_;
this.remoteAddrStr = remoteAddrStr_;
this.writeSched = writeSched_;
this.serveG = serveG_;
this.pushEnabled = pushEnabled_;
this.sawFirstSettings = sawFirstSettings_;
this.needToSendSettingsAck = needToSendSettingsAck_;
this.unackedSettings = unackedSettings_;
this.clientMaxStreams = clientMaxStreams_;
this.advMaxStreams = advMaxStreams_;
this.curClientStreams = curClientStreams_;
this.curPushedStreams = curPushedStreams_;
this.maxClientStreamID = maxClientStreamID_;
this.maxPushPromiseID = maxPushPromiseID_;
this.streams = streams_;
this.initialWindowSize = initialWindowSize_;
this.maxFrameSize = maxFrameSize_;
this.headerTableSize = headerTableSize_;
this.peerMaxHeaderListSize = peerMaxHeaderListSize_;
this.canonHeader = canonHeader_;
this.writingFrame = writingFrame_;
this.writingFrameAsync = writingFrameAsync_;
this.needsFrameFlush = needsFrameFlush_;
this.inGoAway = inGoAway_;
this.inFrameScheduleLoop = inFrameScheduleLoop_;
this.needToSendGoAway = needToSendGoAway_;
this.goAwayCode = goAwayCode_;
this.shutdownTimerCh = shutdownTimerCh_;
this.shutdownTimer = shutdownTimer_;
this.idleTimer = idleTimer_;
this.idleTimerCh = idleTimerCh_;
this.headerWriteBuf = headerWriteBuf_;
this.hpackEncoder = hpackEncoder_;
});
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_, reqBuf_, trailer_, reqTrailer_) {
this.$val = this;
if (arguments.length === 0) {
this.sc = ptrType$9.nil;
this.id = 0;
this.body = ptrType$63.nil;
this.cw = $chanNil;
this.ctx = $ifaceNil;
this.cancelCtx = $throwNilPointerError;
this.bodyBytes = new $Int64(0, 0);
this.declBodyBytes = new $Int64(0, 0);
this.flow = new http2flow.ptr(0, ptrType$31.nil);
this.inflow = new http2flow.ptr(0, ptrType$31.nil);
this.parent = ptrType$6.nil;
this.numTrailerValues = new $Int64(0, 0);
this.weight = 0;
this.state = 0;
this.resetQueued = false;
this.gotTrailerHeader = false;
this.wroteHeaders = false;
this.reqBuf = sliceType$2.nil;
this.trailer = false;
this.reqTrailer = false;
return;
}
this.sc = sc_;
this.id = id_;
this.body = body_;
this.cw = cw_;
this.ctx = ctx_;
this.cancelCtx = cancelCtx_;
this.bodyBytes = bodyBytes_;
this.declBodyBytes = declBodyBytes_;
this.flow = flow_;
this.inflow = inflow_;
this.parent = parent_;
this.numTrailerValues = numTrailerValues_;
this.weight = weight_;
this.state = state_;
this.resetQueued = resetQueued_;
this.gotTrailerHeader = gotTrailerHeader_;
this.wroteHeaders = wroteHeaders_;
this.reqBuf = reqBuf_;
this.trailer = trailer_;
this.reqTrailer = reqTrailer_;
});
http2readFrameResult = $pkg.http2readFrameResult = $newType(0, $kindStruct, "http.http2readFrameResult", true, "net/http", false, function(f_, err_, readMore_) {
this.$val = this;
if (arguments.length === 0) {
this.f = $ifaceNil;
this.err = $ifaceNil;
this.readMore = $throwNilPointerError;
return;
}
this.f = f_;
this.err = err_;
this.readMore = readMore_;
});
http2frameWriteResult = $pkg.http2frameWriteResult = $newType(0, $kindStruct, "http.http2frameWriteResult", true, "net/http", false, function(wr_, err_) {
this.$val = this;
if (arguments.length === 0) {
this.wr = new http2FrameWriteRequest.ptr($ifaceNil, ptrType$6.nil, $chanNil);
this.err = $ifaceNil;
return;
}
this.wr = wr_;
this.err = err_;
});
http2requestParam = $pkg.http2requestParam = $newType(0, $kindStruct, "http.http2requestParam", true, "net/http", false, function(method_, scheme_, authority_, path_, header_) {
this.$val = this;
if (arguments.length === 0) {
this.method = "";
this.scheme = "";
this.authority = "";
this.path = "";
this.header = false;
return;
}
this.method = method_;
this.scheme = scheme_;
this.authority = authority_;
this.path = path_;
this.header = header_;
});
http2bodyReadMsg = $pkg.http2bodyReadMsg = $newType(0, $kindStruct, "http.http2bodyReadMsg", true, "net/http", false, function(st_, n_) {
this.$val = this;
if (arguments.length === 0) {
this.st = ptrType$6.nil;
this.n = 0;
return;
}
this.st = st_;
this.n = n_;
});
http2requestBody = $pkg.http2requestBody = $newType(0, $kindStruct, "http.http2requestBody", true, "net/http", false, function(stream_, conn_, closed_, sawEOF_, pipe_, needsContinue_) {
this.$val = this;
if (arguments.length === 0) {
this.stream = ptrType$6.nil;
this.conn = ptrType$9.nil;
this.closed = false;
this.sawEOF = false;
this.pipe = ptrType$63.nil;
this.needsContinue = false;
return;
}
this.stream = stream_;
this.conn = conn_;
this.closed = closed_;
this.sawEOF = sawEOF_;
this.pipe = pipe_;
this.needsContinue = needsContinue_;
});
http2responseWriter = $pkg.http2responseWriter = $newType(0, $kindStruct, "http.http2responseWriter", true, "net/http", false, function(rws_) {
this.$val = this;
if (arguments.length === 0) {
this.rws = ptrType$65.nil;
return;
}
this.rws = rws_;
});
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_, sentContentLen_, wroteBytes_, closeNotifierMu_, closeNotifierCh_) {
this.$val = this;
if (arguments.length === 0) {
this.stream = ptrType$6.nil;
this.req = ptrType$7.nil;
this.body = ptrType$8.nil;
this.conn = ptrType$9.nil;
this.bw = ptrType$10.nil;
this.handlerHeader = false;
this.snapHeader = false;
this.trailers = sliceType$1.nil;
this.status = 0;
this.wroteHeader = false;
this.sentHeader = false;
this.handlerDone = false;
this.sentContentLen = new $Int64(0, 0);
this.wroteBytes = new $Int64(0, 0);
this.closeNotifierMu = new sync.Mutex.ptr(0, 0);
this.closeNotifierCh = $chanNil;
return;
}
this.stream = stream_;
this.req = req_;
this.body = body_;
this.conn = conn_;
this.bw = bw_;
this.handlerHeader = handlerHeader_;
this.snapHeader = snapHeader_;
this.trailers = trailers_;
this.status = status_;
this.wroteHeader = wroteHeader_;
this.sentHeader = sentHeader_;
this.handlerDone = handlerDone_;
this.sentContentLen = sentContentLen_;
this.wroteBytes = wroteBytes_;
this.closeNotifierMu = closeNotifierMu_;
this.closeNotifierCh = closeNotifierCh_;
});
http2chunkWriter = $pkg.http2chunkWriter = $newType(0, $kindStruct, "http.http2chunkWriter", true, "net/http", false, function(rws_) {
this.$val = this;
if (arguments.length === 0) {
this.rws = ptrType$65.nil;
return;
}
this.rws = rws_;
});
http2pushOptions = $pkg.http2pushOptions = $newType(0, $kindStruct, "http.http2pushOptions", true, "net/http", false, function(Method_, Header_) {
this.$val = this;
if (arguments.length === 0) {
this.Method = "";
this.Header = false;
return;
}
this.Method = Method_;
this.Header = Header_;
});
http2startPushRequest = $pkg.http2startPushRequest = $newType(0, $kindStruct, "http.http2startPushRequest", true, "net/http", false, function(parent_, method_, url_, header_, done_) {
this.$val = this;
if (arguments.length === 0) {
this.parent = ptrType$6.nil;
this.method = "";
this.url = ptrType$19.nil;
this.header = false;
this.done = $chanNil;
return;
}
this.parent = parent_;
this.method = method_;
this.url = url_;
this.header = header_;
this.done = done_;
});
http2Transport = $pkg.http2Transport = $newType(0, $kindStruct, "http.http2Transport", true, "net/http", false, function(DialTLS_, TLSClientConfig_, ConnPool_, DisableCompression_, AllowHTTP_, MaxHeaderListSize_, t1_, connPoolOnce_, connPoolOrDef_) {
this.$val = this;
if (arguments.length === 0) {
this.DialTLS = $throwNilPointerError;
this.TLSClientConfig = ptrType$13.nil;
this.ConnPool = $ifaceNil;
this.DisableCompression = false;
this.AllowHTTP = false;
this.MaxHeaderListSize = 0;
this.t1 = ptrType$21.nil;
this.connPoolOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
this.connPoolOrDef = $ifaceNil;
return;
}
this.DialTLS = DialTLS_;
this.TLSClientConfig = TLSClientConfig_;
this.ConnPool = ConnPool_;
this.DisableCompression = DisableCompression_;
this.AllowHTTP = AllowHTTP_;
this.MaxHeaderListSize = MaxHeaderListSize_;
this.t1 = t1_;
this.connPoolOnce = connPoolOnce_;
this.connPoolOrDef = connPoolOrDef_;
});
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_, pings_, bw_, br_, fr_, lastActive_, maxFrameSize_, maxConcurrentStreams_, initialWindowSize_, hbuf_, henc_, freeBuf_, wmu_, werr_) {
this.$val = this;
if (arguments.length === 0) {
this.t = ptrType$14.nil;
this.tconn = $ifaceNil;
this.tlsState = ptrType$17.nil;
this.singleUse = false;
this.readerDone = $chanNil;
this.readerErr = $ifaceNil;
this.idleTimeout = new time.Duration(0, 0);
this.idleTimer = ptrType$53.nil;
this.mu = new sync.Mutex.ptr(0, 0);
this.cond = ptrType$67.nil;
this.flow = new http2flow.ptr(0, ptrType$31.nil);
this.inflow = new http2flow.ptr(0, ptrType$31.nil);
this.closed = false;
this.wantSettingsAck = false;
this.goAway = ptrType$42.nil;
this.goAwayDebug = "";
this.streams = false;
this.nextStreamID = 0;
this.pings = false;
this.bw = ptrType$10.nil;
this.br = ptrType$68.nil;
this.fr = ptrType$32.nil;
this.lastActive = new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil);
this.maxFrameSize = 0;
this.maxConcurrentStreams = 0;
this.initialWindowSize = 0;
this.hbuf = new bytes.Buffer.ptr(sliceType$2.nil, 0, arrayType.zero(), 0);
this.henc = ptrType$54.nil;
this.freeBuf = sliceType$4.nil;
this.wmu = new sync.Mutex.ptr(0, 0);
this.werr = $ifaceNil;
return;
}
this.t = t_;
this.tconn = tconn_;
this.tlsState = tlsState_;
this.singleUse = singleUse_;
this.readerDone = readerDone_;
this.readerErr = readerErr_;
this.idleTimeout = idleTimeout_;
this.idleTimer = idleTimer_;
this.mu = mu_;
this.cond = cond_;
this.flow = flow_;
this.inflow = inflow_;
this.closed = closed_;
this.wantSettingsAck = wantSettingsAck_;
this.goAway = goAway_;
this.goAwayDebug = goAwayDebug_;
this.streams = streams_;
this.nextStreamID = nextStreamID_;
this.pings = pings_;
this.bw = bw_;
this.br = br_;
this.fr = fr_;
this.lastActive = lastActive_;
this.maxFrameSize = maxFrameSize_;
this.maxConcurrentStreams = maxConcurrentStreams_;
this.initialWindowSize = initialWindowSize_;
this.hbuf = hbuf_;
this.henc = henc_;
this.freeBuf = freeBuf_;
this.wmu = wmu_;
this.werr = werr_;
});
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_) {
this.$val = this;
if (arguments.length === 0) {
this.cc = ptrType$27.nil;
this.req = ptrType$7.nil;
this.trace = ptrType$46.nil;
this.ID = 0;
this.resc = $chanNil;
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);
this.startedWrite = false;
this.requestedGzip = false;
this.on100 = $throwNilPointerError;
this.flow = new http2flow.ptr(0, ptrType$31.nil);
this.inflow = new http2flow.ptr(0, ptrType$31.nil);
this.bytesRemain = new $Int64(0, 0);
this.readErr = $ifaceNil;
this.stopReqBody = $ifaceNil;
this.didReset = false;
this.peerReset = $chanNil;
this.resetErr = $ifaceNil;
this.done = $chanNil;
this.firstByte = false;
this.pastHeaders = false;
this.pastTrailers = false;
this.trailer = false;
this.resTrailer = ptrType$69.nil;
return;
}
this.cc = cc_;
this.req = req_;
this.trace = trace_;
this.ID = ID_;
this.resc = resc_;
this.bufPipe = bufPipe_;
this.startedWrite = startedWrite_;
this.requestedGzip = requestedGzip_;
this.on100 = on100_;
this.flow = flow_;
this.inflow = inflow_;
this.bytesRemain = bytesRemain_;
this.readErr = readErr_;
this.stopReqBody = stopReqBody_;
this.didReset = didReset_;
this.peerReset = peerReset_;
this.resetErr = resetErr_;
this.done = done_;
this.firstByte = firstByte_;
this.pastHeaders = pastHeaders_;
this.pastTrailers = pastTrailers_;
this.trailer = trailer_;
this.resTrailer = resTrailer_;
});
http2stickyErrWriter = $pkg.http2stickyErrWriter = $newType(0, $kindStruct, "http.http2stickyErrWriter", true, "net/http", false, function(w_, err_) {
this.$val = this;
if (arguments.length === 0) {
this.w = $ifaceNil;
this.err = ptrType$48.nil;
return;
}
this.w = w_;
this.err = err_;
});
http2RoundTripOpt = $pkg.http2RoundTripOpt = $newType(0, $kindStruct, "http.http2RoundTripOpt", true, "net/http", false, function(OnlyCachedConn_) {
this.$val = this;
if (arguments.length === 0) {
this.OnlyCachedConn = false;
return;
}
this.OnlyCachedConn = OnlyCachedConn_;
});
http2badStringError = $pkg.http2badStringError = $newType(0, $kindStruct, "http.http2badStringError", true, "net/http", false, function(what_, str_) {
this.$val = this;
if (arguments.length === 0) {
this.what = "";
this.str = "";
return;
}
this.what = what_;
this.str = str_;
});
http2resAndError = $pkg.http2resAndError = $newType(0, $kindStruct, "http.http2resAndError", true, "net/http", false, function(res_, err_) {
this.$val = this;
if (arguments.length === 0) {
this.res = ptrType$16.nil;
this.err = $ifaceNil;
return;
}
this.res = res_;
this.err = err_;
});
http2clientConnReadLoop = $pkg.http2clientConnReadLoop = $newType(0, $kindStruct, "http.http2clientConnReadLoop", true, "net/http", false, function(cc_, activeRes_, closeWhenIdle_) {
this.$val = this;
if (arguments.length === 0) {
this.cc = ptrType$27.nil;
this.activeRes = false;
this.closeWhenIdle = false;
return;
}
this.cc = cc_;
this.activeRes = activeRes_;
this.closeWhenIdle = closeWhenIdle_;
});
http2GoAwayError = $pkg.http2GoAwayError = $newType(0, $kindStruct, "http.http2GoAwayError", true, "net/http", false, function(LastStreamID_, ErrCode_, DebugData_) {
this.$val = this;
if (arguments.length === 0) {
this.LastStreamID = 0;
this.ErrCode = 0;
this.DebugData = "";
return;
}
this.LastStreamID = LastStreamID_;
this.ErrCode = ErrCode_;
this.DebugData = DebugData_;
});
http2transportResponseBody = $pkg.http2transportResponseBody = $newType(0, $kindStruct, "http.http2transportResponseBody", true, "net/http", false, function(cs_) {
this.$val = this;
if (arguments.length === 0) {
this.cs = ptrType$70.nil;
return;
}
this.cs = cs_;
});
http2erringRoundTripper = $pkg.http2erringRoundTripper = $newType(0, $kindStruct, "http.http2erringRoundTripper", true, "net/http", false, function(err_) {
this.$val = this;
if (arguments.length === 0) {
this.err = $ifaceNil;
return;
}
this.err = err_;
});
http2gzipReader = $pkg.http2gzipReader = $newType(0, $kindStruct, "http.http2gzipReader", true, "net/http", false, function(body_, zr_, zerr_) {
this.$val = this;
if (arguments.length === 0) {
this.body = $ifaceNil;
this.zr = ptrType$71.nil;
this.zerr = $ifaceNil;
return;
}
this.body = body_;
this.zr = zr_;
this.zerr = zerr_;
});
http2bodyWriterState = $pkg.http2bodyWriterState = $newType(0, $kindStruct, "http.http2bodyWriterState", true, "net/http", false, function(cs_, timer_, fnonce_, fn_, resc_, delay_) {
this.$val = this;
if (arguments.length === 0) {
this.cs = ptrType$70.nil;
this.timer = ptrType$53.nil;
this.fnonce = ptrType$72.nil;
this.fn = $throwNilPointerError;
this.resc = $chanNil;
this.delay = new time.Duration(0, 0);
return;
}
this.cs = cs_;
this.timer = timer_;
this.fnonce = fnonce_;
this.fn = fn_;
this.resc = resc_;
this.delay = delay_;
});
http2writeFramer = $pkg.http2writeFramer = $newType(8, $kindInterface, "http.http2writeFramer", true, "net/http", false, null);
http2writeContext = $pkg.http2writeContext = $newType(8, $kindInterface, "http.http2writeContext", true, "net/http", false, null);
http2flushFrameWriter = $pkg.http2flushFrameWriter = $newType(0, $kindStruct, "http.http2flushFrameWriter", true, "net/http", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
http2writeSettings = $pkg.http2writeSettings = $newType(12, $kindSlice, "http.http2writeSettings", true, "net/http", false, null);
http2writeGoAway = $pkg.http2writeGoAway = $newType(0, $kindStruct, "http.http2writeGoAway", true, "net/http", false, function(maxStreamID_, code_) {
this.$val = this;
if (arguments.length === 0) {
this.maxStreamID = 0;
this.code = 0;
return;
}
this.maxStreamID = maxStreamID_;
this.code = code_;
});
http2writeData = $pkg.http2writeData = $newType(0, $kindStruct, "http.http2writeData", true, "net/http", false, function(streamID_, p_, endStream_) {
this.$val = this;
if (arguments.length === 0) {
this.streamID = 0;
this.p = sliceType$2.nil;
this.endStream = false;
return;
}
this.streamID = streamID_;
this.p = p_;
this.endStream = endStream_;
});
http2handlerPanicRST = $pkg.http2handlerPanicRST = $newType(0, $kindStruct, "http.http2handlerPanicRST", true, "net/http", false, function(StreamID_) {
this.$val = this;
if (arguments.length === 0) {
this.StreamID = 0;
return;
}
this.StreamID = StreamID_;
});
http2writePingAck = $pkg.http2writePingAck = $newType(0, $kindStruct, "http.http2writePingAck", true, "net/http", false, function(pf_) {
this.$val = this;
if (arguments.length === 0) {
this.pf = ptrType$41.nil;
return;
}
this.pf = pf_;
});
http2writeSettingsAck = $pkg.http2writeSettingsAck = $newType(0, $kindStruct, "http.http2writeSettingsAck", true, "net/http", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
http2writeResHeaders = $pkg.http2writeResHeaders = $newType(0, $kindStruct, "http.http2writeResHeaders", true, "net/http", false, function(streamID_, httpResCode_, h_, trailers_, endStream_, date_, contentType_, contentLength_) {
this.$val = this;
if (arguments.length === 0) {
this.streamID = 0;
this.httpResCode = 0;
this.h = false;
this.trailers = sliceType$1.nil;
this.endStream = false;
this.date = "";
this.contentType = "";
this.contentLength = "";
return;
}
this.streamID = streamID_;
this.httpResCode = httpResCode_;
this.h = h_;
this.trailers = trailers_;
this.endStream = endStream_;
this.date = date_;
this.contentType = contentType_;
this.contentLength = contentLength_;
});
http2writePushPromise = $pkg.http2writePushPromise = $newType(0, $kindStruct, "http.http2writePushPromise", true, "net/http", false, function(streamID_, method_, url_, h_, allocatePromisedID_, promisedID_) {
this.$val = this;
if (arguments.length === 0) {
this.streamID = 0;
this.method = "";
this.url = ptrType$19.nil;
this.h = false;
this.allocatePromisedID = $throwNilPointerError;
this.promisedID = 0;
return;
}
this.streamID = streamID_;
this.method = method_;
this.url = url_;
this.h = h_;
this.allocatePromisedID = allocatePromisedID_;
this.promisedID = promisedID_;
});
http2write100ContinueHeadersFrame = $pkg.http2write100ContinueHeadersFrame = $newType(0, $kindStruct, "http.http2write100ContinueHeadersFrame", true, "net/http", false, function(streamID_) {
this.$val = this;
if (arguments.length === 0) {
this.streamID = 0;
return;
}
this.streamID = streamID_;
});
http2writeWindowUpdate = $pkg.http2writeWindowUpdate = $newType(0, $kindStruct, "http.http2writeWindowUpdate", true, "net/http", false, function(streamID_, n_) {
this.$val = this;
if (arguments.length === 0) {
this.streamID = 0;
this.n = 0;
return;
}
this.streamID = streamID_;
this.n = n_;
});
http2WriteScheduler = $pkg.http2WriteScheduler = $newType(8, $kindInterface, "http.http2WriteScheduler", true, "net/http", false, null);
http2OpenStreamOptions = $pkg.http2OpenStreamOptions = $newType(0, $kindStruct, "http.http2OpenStreamOptions", true, "net/http", false, function(PusherID_) {
this.$val = this;
if (arguments.length === 0) {
this.PusherID = 0;
return;
}
this.PusherID = PusherID_;
});
http2FrameWriteRequest = $pkg.http2FrameWriteRequest = $newType(0, $kindStruct, "http.http2FrameWriteRequest", true, "net/http", false, function(write_, stream_, done_) {
this.$val = this;
if (arguments.length === 0) {
this.write = $ifaceNil;
this.stream = ptrType$6.nil;
this.done = $chanNil;
return;
}
this.write = write_;
this.stream = stream_;
this.done = done_;
});
http2writeQueue = $pkg.http2writeQueue = $newType(0, $kindStruct, "http.http2writeQueue", true, "net/http", false, function(s_) {
this.$val = this;
if (arguments.length === 0) {
this.s = sliceType$18.nil;
return;
}
this.s = s_;
});
http2writeQueuePool = $pkg.http2writeQueuePool = $newType(12, $kindSlice, "http.http2writeQueuePool", true, "net/http", false, null);
http2randomWriteScheduler = $pkg.http2randomWriteScheduler = $newType(0, $kindStruct, "http.http2randomWriteScheduler", true, "net/http", false, function(zero_, sq_, queuePool_) {
this.$val = this;
if (arguments.length === 0) {
this.zero = new http2writeQueue.ptr(sliceType$18.nil);
this.sq = false;
this.queuePool = http2writeQueuePool.nil;
return;
}
this.zero = zero_;
this.sq = sq_;
this.queuePool = queuePool_;
});
Header = $pkg.Header = $newType(4, $kindMap, "http.Header", true, "net/http", true, null);
writeStringer = $pkg.writeStringer = $newType(8, $kindInterface, "http.writeStringer", true, "net/http", false, null);
stringWriter = $pkg.stringWriter = $newType(0, $kindStruct, "http.stringWriter", true, "net/http", false, function(w_) {
this.$val = this;
if (arguments.length === 0) {
this.w = $ifaceNil;
return;
}
this.w = w_;
});
keyValues = $pkg.keyValues = $newType(0, $kindStruct, "http.keyValues", true, "net/http", false, function(key_, values_) {
this.$val = this;
if (arguments.length === 0) {
this.key = "";
this.values = sliceType$1.nil;
return;
}
this.key = key_;
this.values = values_;
});
headerSorter = $pkg.headerSorter = $newType(0, $kindStruct, "http.headerSorter", true, "net/http", false, function(kvs_) {
this.$val = this;
if (arguments.length === 0) {
this.kvs = sliceType$3.nil;
return;
}
this.kvs = kvs_;
});
contextKey = $pkg.contextKey = $newType(0, $kindStruct, "http.contextKey", true, "net/http", false, function(name_) {
this.$val = this;
if (arguments.length === 0) {
this.name = "";
return;
}
this.name = name_;
});
noBody = $pkg.noBody = $newType(0, $kindStruct, "http.noBody", true, "net/http", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
PushOptions = $pkg.PushOptions = $newType(0, $kindStruct, "http.PushOptions", true, "net/http", true, function(Method_, Header_) {
this.$val = this;
if (arguments.length === 0) {
this.Method = "";
this.Header = false;
return;
}
this.Method = Method_;
this.Header = Header_;
});
CookieJar = $pkg.CookieJar = $newType(8, $kindInterface, "http.CookieJar", true, "net/http", true, null);
ProtocolError = $pkg.ProtocolError = $newType(0, $kindStruct, "http.ProtocolError", true, "net/http", true, function(ErrorString_) {
this.$val = this;
if (arguments.length === 0) {
this.ErrorString = "";
return;
}
this.ErrorString = ErrorString_;
});
badStringError = $pkg.badStringError = $newType(0, $kindStruct, "http.badStringError", true, "net/http", false, function(what_, str_) {
this.$val = this;
if (arguments.length === 0) {
this.what = "";
this.str = "";
return;
}
this.what = what_;
this.str = str_;
});
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_) {
this.$val = this;
if (arguments.length === 0) {
this.Method = "";
this.URL = ptrType$19.nil;
this.Proto = "";
this.ProtoMajor = 0;
this.ProtoMinor = 0;
this.Header = false;
this.Body = $ifaceNil;
this.GetBody = $throwNilPointerError;
this.ContentLength = new $Int64(0, 0);
this.TransferEncoding = sliceType$1.nil;
this.Close = false;
this.Host = "";
this.Form = false;
this.PostForm = false;
this.MultipartForm = ptrType$20.nil;
this.Trailer = false;
this.RemoteAddr = "";
this.RequestURI = "";
this.TLS = ptrType$17.nil;
this.Cancel = $chanNil;
this.Response = ptrType$16.nil;
this.ctx = $ifaceNil;
return;
}
this.Method = Method_;
this.URL = URL_;
this.Proto = Proto_;
this.ProtoMajor = ProtoMajor_;
this.ProtoMinor = ProtoMinor_;
this.Header = Header_;
this.Body = Body_;
this.GetBody = GetBody_;
this.ContentLength = ContentLength_;
this.TransferEncoding = TransferEncoding_;
this.Close = Close_;
this.Host = Host_;
this.Form = Form_;
this.PostForm = PostForm_;
this.MultipartForm = MultipartForm_;
this.Trailer = Trailer_;
this.RemoteAddr = RemoteAddr_;
this.RequestURI = RequestURI_;
this.TLS = TLS_;
this.Cancel = Cancel_;
this.Response = Response_;
this.ctx = ctx_;
});
maxBytesReader = $pkg.maxBytesReader = $newType(0, $kindStruct, "http.maxBytesReader", true, "net/http", false, function(w_, r_, n_, err_) {
this.$val = this;
if (arguments.length === 0) {
this.w = $ifaceNil;
this.r = $ifaceNil;
this.n = new $Int64(0, 0);
this.err = $ifaceNil;
return;
}
this.w = w_;
this.r = r_;
this.n = n_;
this.err = err_;
});
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_) {
this.$val = this;
if (arguments.length === 0) {
this.Status = "";
this.StatusCode = 0;
this.Proto = "";
this.ProtoMajor = 0;
this.ProtoMinor = 0;
this.Header = false;
this.Body = $ifaceNil;
this.ContentLength = new $Int64(0, 0);
this.TransferEncoding = sliceType$1.nil;
this.Close = false;
this.Uncompressed = false;
this.Trailer = false;
this.Request = ptrType$7.nil;
this.TLS = ptrType$17.nil;
return;
}
this.Status = Status_;
this.StatusCode = StatusCode_;
this.Proto = Proto_;
this.ProtoMajor = ProtoMajor_;
this.ProtoMinor = ProtoMinor_;
this.Header = Header_;
this.Body = Body_;
this.ContentLength = ContentLength_;
this.TransferEncoding = TransferEncoding_;
this.Close = Close_;
this.Uncompressed = Uncompressed_;
this.Trailer = Trailer_;
this.Request = Request_;
this.TLS = TLS_;
});
Handler = $pkg.Handler = $newType(8, $kindInterface, "http.Handler", true, "net/http", true, null);
ResponseWriter = $pkg.ResponseWriter = $newType(8, $kindInterface, "http.ResponseWriter", true, "net/http", true, null);
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_) {
this.$val = this;
if (arguments.length === 0) {
this.server = ptrType$44.nil;
this.cancelCtx = $throwNilPointerError;
this.rwc = $ifaceNil;
this.remoteAddr = "";
this.tlsState = ptrType$17.nil;
this.werr = $ifaceNil;
this.r = ptrType$89.nil;
this.bufr = ptrType$68.nil;
this.bufw = ptrType$10.nil;
this.lastMethod = "";
this.curReq = new atomic.Value.ptr(new atomic.noCopy.ptr(), $ifaceNil);
this.curState = new atomic.Value.ptr(new atomic.noCopy.ptr(), $ifaceNil);
this.mu = new sync.Mutex.ptr(0, 0);
this.hijackedv = false;
return;
}
this.server = server_;
this.cancelCtx = cancelCtx_;
this.rwc = rwc_;
this.remoteAddr = remoteAddr_;
this.tlsState = tlsState_;
this.werr = werr_;
this.r = r_;
this.bufr = bufr_;
this.bufw = bufw_;
this.lastMethod = lastMethod_;
this.curReq = curReq_;
this.curState = curState_;
this.mu = mu_;
this.hijackedv = hijackedv_;
});
chunkWriter = $pkg.chunkWriter = $newType(0, $kindStruct, "http.chunkWriter", true, "net/http", false, function(res_, header_, wroteHeader_, chunking_) {
this.$val = this;
if (arguments.length === 0) {
this.res = ptrType$90.nil;
this.header = false;
this.wroteHeader = false;
this.chunking = false;
return;
}
this.res = res_;
this.header = header_;
this.wroteHeader = wroteHeader_;
this.chunking = chunking_;
});
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_, closeNotifyCh_, didCloseNotify_) {
this.$val = this;
if (arguments.length === 0) {
this.conn = ptrType$93.nil;
this.req = ptrType$7.nil;
this.reqBody = $ifaceNil;
this.cancelCtx = $throwNilPointerError;
this.wroteHeader = false;
this.wroteContinue = false;
this.wants10KeepAlive = false;
this.wantsClose = false;
this.w = ptrType$10.nil;
this.cw = new chunkWriter.ptr(ptrType$90.nil, false, false, false);
this.handlerHeader = false;
this.calledHeader = false;
this.written = new $Int64(0, 0);
this.contentLength = new $Int64(0, 0);
this.status = 0;
this.closeAfterReply = false;
this.requestBodyLimitHit = false;
this.trailers = sliceType$1.nil;
this.handlerDone = 0;
this.dateBuf = arrayType$6.zero();
this.clenBuf = arrayType$7.zero();
this.closeNotifyCh = $chanNil;
this.didCloseNotify = 0;
return;
}
this.conn = conn_;
this.req = req_;
this.reqBody = reqBody_;
this.cancelCtx = cancelCtx_;
this.wroteHeader = wroteHeader_;
this.wroteContinue = wroteContinue_;
this.wants10KeepAlive = wants10KeepAlive_;
this.wantsClose = wantsClose_;
this.w = w_;
this.cw = cw_;
this.handlerHeader = handlerHeader_;
this.calledHeader = calledHeader_;
this.written = written_;
this.contentLength = contentLength_;
this.status = status_;
this.closeAfterReply = closeAfterReply_;
this.requestBodyLimitHit = requestBodyLimitHit_;
this.trailers = trailers_;
this.handlerDone = handlerDone_;
this.dateBuf = dateBuf_;
this.clenBuf = clenBuf_;
this.closeNotifyCh = closeNotifyCh_;
this.didCloseNotify = didCloseNotify_;
});
atomicBool = $pkg.atomicBool = $newType(4, $kindInt32, "http.atomicBool", true, "net/http", false, null);
writerOnly = $pkg.writerOnly = $newType(0, $kindStruct, "http.writerOnly", true, "net/http", false, function(Writer_) {
this.$val = this;
if (arguments.length === 0) {
this.Writer = $ifaceNil;
return;
}
this.Writer = Writer_;
});
readResult = $pkg.readResult = $newType(0, $kindStruct, "http.readResult", true, "net/http", false, function(n_, err_, b_) {
this.$val = this;
if (arguments.length === 0) {
this.n = 0;
this.err = $ifaceNil;
this.b = 0;
return;
}
this.n = n_;
this.err = err_;
this.b = b_;
});
connReader = $pkg.connReader = $newType(0, $kindStruct, "http.connReader", true, "net/http", false, function(conn_, mu_, hasByte_, byteBuf_, bgErr_, cond_, inRead_, aborted_, remain_) {
this.$val = this;
if (arguments.length === 0) {
this.conn = ptrType$93.nil;
this.mu = new sync.Mutex.ptr(0, 0);
this.hasByte = false;
this.byteBuf = arrayType$5.zero();
this.bgErr = $ifaceNil;
this.cond = ptrType$67.nil;
this.inRead = false;
this.aborted = false;
this.remain = new $Int64(0, 0);
return;
}
this.conn = conn_;
this.mu = mu_;
this.hasByte = hasByte_;
this.byteBuf = byteBuf_;
this.bgErr = bgErr_;
this.cond = cond_;
this.inRead = inRead_;
this.aborted = aborted_;
this.remain = remain_;
});
expectContinueReader = $pkg.expectContinueReader = $newType(0, $kindStruct, "http.expectContinueReader", true, "net/http", false, function(resp_, readCloser_, closed_, sawEOF_) {
this.$val = this;
if (arguments.length === 0) {
this.resp = ptrType$90.nil;
this.readCloser = $ifaceNil;
this.closed = false;
this.sawEOF = false;
return;
}
this.resp = resp_;
this.readCloser = readCloser_;
this.closed = closed_;
this.sawEOF = sawEOF_;
});
extraHeader = $pkg.extraHeader = $newType(0, $kindStruct, "http.extraHeader", true, "net/http", false, function(contentType_, connection_, transferEncoding_, date_, contentLength_) {
this.$val = this;
if (arguments.length === 0) {
this.contentType = "";
this.connection = "";
this.transferEncoding = "";
this.date = sliceType$2.nil;
this.contentLength = sliceType$2.nil;
return;
}
this.contentType = contentType_;
this.connection = connection_;
this.transferEncoding = transferEncoding_;
this.date = date_;
this.contentLength = contentLength_;
});
closeWriter = $pkg.closeWriter = $newType(8, $kindInterface, "http.closeWriter", true, "net/http", false, null);
badRequestError = $pkg.badRequestError = $newType(8, $kindString, "http.badRequestError", true, "net/http", false, null);
HandlerFunc = $pkg.HandlerFunc = $newType(4, $kindFunc, "http.HandlerFunc", true, "net/http", true, null);
redirectHandler = $pkg.redirectHandler = $newType(0, $kindStruct, "http.redirectHandler", true, "net/http", false, function(url_, code_) {
this.$val = this;
if (arguments.length === 0) {
this.url = "";
this.code = 0;
return;
}
this.url = url_;
this.code = code_;
});
ServeMux = $pkg.ServeMux = $newType(0, $kindStruct, "http.ServeMux", true, "net/http", true, function(mu_, m_, hosts_) {
this.$val = this;
if (arguments.length === 0) {
this.mu = new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0);
this.m = false;
this.hosts = false;
return;
}
this.mu = mu_;
this.m = m_;
this.hosts = hosts_;
});
muxEntry = $pkg.muxEntry = $newType(0, $kindStruct, "http.muxEntry", true, "net/http", false, function(explicit_, h_, pattern_) {
this.$val = this;
if (arguments.length === 0) {
this.explicit = false;
this.h = $ifaceNil;
this.pattern = "";
return;
}
this.explicit = explicit_;
this.h = h_;
this.pattern = pattern_;
});
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_) {
this.$val = this;
if (arguments.length === 0) {
this.Addr = "";
this.Handler = $ifaceNil;
this.TLSConfig = ptrType$13.nil;
this.ReadTimeout = new time.Duration(0, 0);
this.ReadHeaderTimeout = new time.Duration(0, 0);
this.WriteTimeout = new time.Duration(0, 0);
this.IdleTimeout = new time.Duration(0, 0);
this.MaxHeaderBytes = 0;
this.TLSNextProto = false;
this.ConnState = $throwNilPointerError;
this.ErrorLog = ptrType$51.nil;
this.disableKeepAlives = 0;
this.inShutdown = 0;
this.nextProtoOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
this.nextProtoErr = $ifaceNil;
this.mu = new sync.Mutex.ptr(0, 0);
this.listeners = false;
this.activeConn = false;
this.doneChan = $chanNil;
return;
}
this.Addr = Addr_;
this.Handler = Handler_;
this.TLSConfig = TLSConfig_;
this.ReadTimeout = ReadTimeout_;
this.ReadHeaderTimeout = ReadHeaderTimeout_;
this.WriteTimeout = WriteTimeout_;
this.IdleTimeout = IdleTimeout_;
this.MaxHeaderBytes = MaxHeaderBytes_;
this.TLSNextProto = TLSNextProto_;
this.ConnState = ConnState_;
this.ErrorLog = ErrorLog_;
this.disableKeepAlives = disableKeepAlives_;
this.inShutdown = inShutdown_;
this.nextProtoOnce = nextProtoOnce_;
this.nextProtoErr = nextProtoErr_;
this.mu = mu_;
this.listeners = listeners_;
this.activeConn = activeConn_;
this.doneChan = doneChan_;
});
ConnState = $pkg.ConnState = $newType(4, $kindInt, "http.ConnState", true, "net/http", true, null);
serverHandler = $pkg.serverHandler = $newType(0, $kindStruct, "http.serverHandler", true, "net/http", false, function(srv_) {
this.$val = this;
if (arguments.length === 0) {
this.srv = ptrType$44.nil;
return;
}
this.srv = srv_;
});
tcpKeepAliveListener = $pkg.tcpKeepAliveListener = $newType(0, $kindStruct, "http.tcpKeepAliveListener", true, "net/http", false, function(TCPListener_) {
this.$val = this;
if (arguments.length === 0) {
this.TCPListener = ptrType$96.nil;
return;
}
this.TCPListener = TCPListener_;
});
globalOptionsHandler = $pkg.globalOptionsHandler = $newType(0, $kindStruct, "http.globalOptionsHandler", true, "net/http", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
initNPNRequest = $pkg.initNPNRequest = $newType(0, $kindStruct, "http.initNPNRequest", true, "net/http", false, function(c_, h_) {
this.$val = this;
if (arguments.length === 0) {
this.c = ptrType$95.nil;
this.h = new serverHandler.ptr(ptrType$44.nil);
return;
}
this.c = c_;
this.h = h_;
});
loggingConn = $pkg.loggingConn = $newType(0, $kindStruct, "http.loggingConn", true, "net/http", false, function(name_, Conn_) {
this.$val = this;
if (arguments.length === 0) {
this.name = "";
this.Conn = $ifaceNil;
return;
}
this.name = name_;
this.Conn = Conn_;
});
checkConnErrorWriter = $pkg.checkConnErrorWriter = $newType(0, $kindStruct, "http.checkConnErrorWriter", true, "net/http", false, function(c_) {
this.$val = this;
if (arguments.length === 0) {
this.c = ptrType$93.nil;
return;
}
this.c = c_;
});
sniffSig = $pkg.sniffSig = $newType(8, $kindInterface, "http.sniffSig", true, "net/http", false, null);
exactSig = $pkg.exactSig = $newType(0, $kindStruct, "http.exactSig", true, "net/http", false, function(sig_, ct_) {
this.$val = this;
if (arguments.length === 0) {
this.sig = sliceType$2.nil;
this.ct = "";
return;
}
this.sig = sig_;
this.ct = ct_;
});
maskedSig = $pkg.maskedSig = $newType(0, $kindStruct, "http.maskedSig", true, "net/http", false, function(mask_, pat_, skipWS_, ct_) {
this.$val = this;
if (arguments.length === 0) {
this.mask = sliceType$2.nil;
this.pat = sliceType$2.nil;
this.skipWS = false;
this.ct = "";
return;
}
this.mask = mask_;
this.pat = pat_;
this.skipWS = skipWS_;
this.ct = ct_;
});
htmlSig = $pkg.htmlSig = $newType(12, $kindSlice, "http.htmlSig", true, "net/http", false, null);
mp4Sig = $pkg.mp4Sig = $newType(0, $kindStruct, "http.mp4Sig", true, "net/http", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
textSig = $pkg.textSig = $newType(0, $kindStruct, "http.textSig", true, "net/http", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
errorReader = $pkg.errorReader = $newType(0, $kindStruct, "http.errorReader", true, "net/http", false, function(err_) {
this.$val = this;
if (arguments.length === 0) {
this.err = $ifaceNil;
return;
}
this.err = err_;
});
byteReader = $pkg.byteReader = $newType(0, $kindStruct, "http.byteReader", true, "net/http", false, function(b_, done_) {
this.$val = this;
if (arguments.length === 0) {
this.b = 0;
this.done = false;
return;
}
this.b = b_;
this.done = done_;
});
transferWriter = $pkg.transferWriter = $newType(0, $kindStruct, "http.transferWriter", true, "net/http", false, function(Method_, Body_, BodyCloser_, ResponseToHEAD_, ContentLength_, Close_, TransferEncoding_, Trailer_, IsResponse_, FlushHeaders_, ByteReadCh_) {
this.$val = this;
if (arguments.length === 0) {
this.Method = "";
this.Body = $ifaceNil;
this.BodyCloser = $ifaceNil;
this.ResponseToHEAD = false;
this.ContentLength = new $Int64(0, 0);
this.Close = false;
this.TransferEncoding = sliceType$1.nil;
this.Trailer = false;
this.IsResponse = false;
this.FlushHeaders = false;
this.ByteReadCh = $chanNil;
return;
}
this.Method = Method_;
this.Body = Body_;
this.BodyCloser = BodyCloser_;
this.ResponseToHEAD = ResponseToHEAD_;
this.ContentLength = ContentLength_;
this.Close = Close_;
this.TransferEncoding = TransferEncoding_;
this.Trailer = Trailer_;
this.IsResponse = IsResponse_;
this.FlushHeaders = FlushHeaders_;
this.ByteReadCh = ByteReadCh_;
});
transferReader = $pkg.transferReader = $newType(0, $kindStruct, "http.transferReader", true, "net/http", false, function(Header_, StatusCode_, RequestMethod_, ProtoMajor_, ProtoMinor_, Body_, ContentLength_, TransferEncoding_, Close_, Trailer_) {
this.$val = this;
if (arguments.length === 0) {
this.Header = false;
this.StatusCode = 0;
this.RequestMethod = "";
this.ProtoMajor = 0;
this.ProtoMinor = 0;
this.Body = $ifaceNil;
this.ContentLength = new $Int64(0, 0);
this.TransferEncoding = sliceType$1.nil;
this.Close = false;
this.Trailer = false;
return;
}
this.Header = Header_;
this.StatusCode = StatusCode_;
this.RequestMethod = RequestMethod_;
this.ProtoMajor = ProtoMajor_;
this.ProtoMinor = ProtoMinor_;
this.Body = Body_;
this.ContentLength = ContentLength_;
this.TransferEncoding = TransferEncoding_;
this.Close = Close_;
this.Trailer = Trailer_;
});
body = $pkg.body = $newType(0, $kindStruct, "http.body", true, "net/http", false, function(src_, hdr_, r_, closing_, doEarlyClose_, mu_, sawEOF_, closed_, earlyClose_, onHitEOF_) {
this.$val = this;
if (arguments.length === 0) {
this.src = $ifaceNil;
this.hdr = $ifaceNil;
this.r = ptrType$68.nil;
this.closing = false;
this.doEarlyClose = false;
this.mu = new sync.Mutex.ptr(0, 0);
this.sawEOF = false;
this.closed = false;
this.earlyClose = false;
this.onHitEOF = $throwNilPointerError;
return;
}
this.src = src_;
this.hdr = hdr_;
this.r = r_;
this.closing = closing_;
this.doEarlyClose = doEarlyClose_;
this.mu = mu_;
this.sawEOF = sawEOF_;
this.closed = closed_;
this.earlyClose = earlyClose_;
this.onHitEOF = onHitEOF_;
});
bodyLocked = $pkg.bodyLocked = $newType(0, $kindStruct, "http.bodyLocked", true, "net/http", false, function(b_) {
this.$val = this;
if (arguments.length === 0) {
this.b = ptrType$92.nil;
return;
}
this.b = b_;
});
finishAsyncByteRead = $pkg.finishAsyncByteRead = $newType(0, $kindStruct, "http.finishAsyncByteRead", true, "net/http", false, function(tw_) {
this.$val = this;
if (arguments.length === 0) {
this.tw = ptrType$97.nil;
return;
}
this.tw = tw_;
});
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_) {
this.$val = this;
if (arguments.length === 0) {
this.idleMu = new sync.Mutex.ptr(0, 0);
this.wantIdle = false;
this.idleConn = false;
this.idleConnCh = false;
this.idleLRU = new connLRU.ptr(ptrType$12.nil, false);
this.reqMu = new sync.Mutex.ptr(0, 0);
this.reqCanceler = false;
this.altMu = new sync.Mutex.ptr(0, 0);
this.altProto = new atomic.Value.ptr(new atomic.noCopy.ptr(), $ifaceNil);
this.Proxy = $throwNilPointerError;
this.DialContext = $throwNilPointerError;
this.Dial = $throwNilPointerError;
this.DialTLS = $throwNilPointerError;
this.TLSClientConfig = ptrType$13.nil;
this.TLSHandshakeTimeout = new time.Duration(0, 0);
this.DisableKeepAlives = false;
this.DisableCompression = false;
this.MaxIdleConns = 0;
this.MaxIdleConnsPerHost = 0;
this.IdleConnTimeout = new time.Duration(0, 0);
this.ResponseHeaderTimeout = new time.Duration(0, 0);
this.ExpectContinueTimeout = new time.Duration(0, 0);
this.TLSNextProto = false;
this.ProxyConnectHeader = false;
this.MaxResponseHeaderBytes = new $Int64(0, 0);
this.nextProtoOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
this.h2transport = ptrType$14.nil;
return;
}
this.idleMu = idleMu_;
this.wantIdle = wantIdle_;
this.idleConn = idleConn_;
this.idleConnCh = idleConnCh_;
this.idleLRU = idleLRU_;
this.reqMu = reqMu_;
this.reqCanceler = reqCanceler_;
this.altMu = altMu_;
this.altProto = altProto_;
this.Proxy = Proxy_;
this.DialContext = DialContext_;
this.Dial = Dial_;
this.DialTLS = DialTLS_;
this.TLSClientConfig = TLSClientConfig_;
this.TLSHandshakeTimeout = TLSHandshakeTimeout_;
this.DisableKeepAlives = DisableKeepAlives_;
this.DisableCompression = DisableCompression_;
this.MaxIdleConns = MaxIdleConns_;
this.MaxIdleConnsPerHost = MaxIdleConnsPerHost_;
this.IdleConnTimeout = IdleConnTimeout_;
this.ResponseHeaderTimeout = ResponseHeaderTimeout_;
this.ExpectContinueTimeout = ExpectContinueTimeout_;
this.TLSNextProto = TLSNextProto_;
this.ProxyConnectHeader = ProxyConnectHeader_;
this.MaxResponseHeaderBytes = MaxResponseHeaderBytes_;
this.nextProtoOnce = nextProtoOnce_;
this.h2transport = h2transport_;
});
transportRequest = $pkg.transportRequest = $newType(0, $kindStruct, "http.transportRequest", true, "net/http", false, function(Request_, extra_, trace_) {
this.$val = this;
if (arguments.length === 0) {
this.Request = ptrType$7.nil;
this.extra = false;
this.trace = ptrType$45.nil;
return;
}
this.Request = Request_;
this.extra = extra_;
this.trace = trace_;
});
transportReadFromServerError = $pkg.transportReadFromServerError = $newType(0, $kindStruct, "http.transportReadFromServerError", true, "net/http", false, function(err_) {
this.$val = this;
if (arguments.length === 0) {
this.err = $ifaceNil;
return;
}
this.err = err_;
});
persistConnWriter = $pkg.persistConnWriter = $newType(0, $kindStruct, "http.persistConnWriter", true, "net/http", false, function(pc_) {
this.$val = this;
if (arguments.length === 0) {
this.pc = ptrType$98.nil;
return;
}
this.pc = pc_;
});
connectMethod = $pkg.connectMethod = $newType(0, $kindStruct, "http.connectMethod", true, "net/http", false, function(proxyURL_, targetScheme_, targetAddr_) {
this.$val = this;
if (arguments.length === 0) {
this.proxyURL = ptrType$19.nil;
this.targetScheme = "";
this.targetAddr = "";
return;
}
this.proxyURL = proxyURL_;
this.targetScheme = targetScheme_;
this.targetAddr = targetAddr_;
});
connectMethodKey = $pkg.connectMethodKey = $newType(0, $kindStruct, "http.connectMethodKey", true, "net/http", false, function(proxy_, scheme_, addr_) {
this.$val = this;
if (arguments.length === 0) {
this.proxy = "";
this.scheme = "";
this.addr = "";
return;
}
this.proxy = proxy_;
this.scheme = scheme_;
this.addr = addr_;
});
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_) {
this.$val = this;
if (arguments.length === 0) {
this.alt = $ifaceNil;
this.t = ptrType$21.nil;
this.cacheKey = new connectMethodKey.ptr("", "", "");
this.conn = $ifaceNil;
this.tlsState = ptrType$17.nil;
this.br = ptrType$68.nil;
this.bw = ptrType$10.nil;
this.nwrite = new $Int64(0, 0);
this.reqch = $chanNil;
this.writech = $chanNil;
this.closech = $chanNil;
this.isProxy = false;
this.sawEOF = false;
this.readLimit = new $Int64(0, 0);
this.writeErrCh = $chanNil;
this.writeLoopDone = $chanNil;
this.idleAt = new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil);
this.idleTimer = ptrType$53.nil;
this.mu = new sync.Mutex.ptr(0, 0);
this.numExpectedResponses = 0;
this.closed = $ifaceNil;
this.canceledErr = $ifaceNil;
this.broken = false;
this.reused = false;
this.mutateHeaderFunc = $throwNilPointerError;
return;
}
this.alt = alt_;
this.t = t_;
this.cacheKey = cacheKey_;
this.conn = conn_;
this.tlsState = tlsState_;
this.br = br_;
this.bw = bw_;
this.nwrite = nwrite_;
this.reqch = reqch_;
this.writech = writech_;
this.closech = closech_;
this.isProxy = isProxy_;
this.sawEOF = sawEOF_;
this.readLimit = readLimit_;
this.writeErrCh = writeErrCh_;
this.writeLoopDone = writeLoopDone_;
this.idleAt = idleAt_;
this.idleTimer = idleTimer_;
this.mu = mu_;
this.numExpectedResponses = numExpectedResponses_;
this.closed = closed_;
this.canceledErr = canceledErr_;
this.broken = broken_;
this.reused = reused_;
this.mutateHeaderFunc = mutateHeaderFunc_;
});
nothingWrittenError = $pkg.nothingWrittenError = $newType(0, $kindStruct, "http.nothingWrittenError", true, "net/http", false, function(error_) {
this.$val = this;
if (arguments.length === 0) {
this.error = $ifaceNil;
return;
}
this.error = error_;
});
responseAndError = $pkg.responseAndError = $newType(0, $kindStruct, "http.responseAndError", true, "net/http", false, function(res_, err_) {
this.$val = this;
if (arguments.length === 0) {
this.res = ptrType$16.nil;
this.err = $ifaceNil;
return;
}
this.res = res_;
this.err = err_;
});
requestAndChan = $pkg.requestAndChan = $newType(0, $kindStruct, "http.requestAndChan", true, "net/http", false, function(req_, ch_, addedGzip_, continueCh_, callerGone_) {
this.$val = this;
if (arguments.length === 0) {
this.req = ptrType$7.nil;
this.ch = $chanNil;
this.addedGzip = false;
this.continueCh = $chanNil;
this.callerGone = $chanNil;
return;
}
this.req = req_;
this.ch = ch_;
this.addedGzip = addedGzip_;
this.continueCh = continueCh_;
this.callerGone = callerGone_;
});
writeRequest = $pkg.writeRequest = $newType(0, $kindStruct, "http.writeRequest", true, "net/http", false, function(req_, ch_, continueCh_) {
this.$val = this;
if (arguments.length === 0) {
this.req = ptrType$132.nil;
this.ch = $chanNil;
this.continueCh = $chanNil;
return;
}
this.req = req_;
this.ch = ch_;
this.continueCh = continueCh_;
});
httpError = $pkg.httpError = $newType(0, $kindStruct, "http.httpError", true, "net/http", false, function(err_, timeout_) {
this.$val = this;
if (arguments.length === 0) {
this.err = "";
this.timeout = false;
return;
}
this.err = err_;
this.timeout = timeout_;
});
bodyEOFSignal = $pkg.bodyEOFSignal = $newType(0, $kindStruct, "http.bodyEOFSignal", true, "net/http", false, function(body_, mu_, closed_, rerr_, fn_, earlyCloseFn_) {
this.$val = this;
if (arguments.length === 0) {
this.body = $ifaceNil;
this.mu = new sync.Mutex.ptr(0, 0);
this.closed = false;
this.rerr = $ifaceNil;
this.fn = $throwNilPointerError;
this.earlyCloseFn = $throwNilPointerError;
return;
}
this.body = body_;
this.mu = mu_;
this.closed = closed_;
this.rerr = rerr_;
this.fn = fn_;
this.earlyCloseFn = earlyCloseFn_;
});
gzipReader = $pkg.gzipReader = $newType(0, $kindStruct, "http.gzipReader", true, "net/http", false, function(body_, zr_, zerr_) {
this.$val = this;
if (arguments.length === 0) {
this.body = ptrType$100.nil;
this.zr = ptrType$71.nil;
this.zerr = $ifaceNil;
return;
}
this.body = body_;
this.zr = zr_;
this.zerr = zerr_;
});
tlsHandshakeTimeoutError = $pkg.tlsHandshakeTimeoutError = $newType(0, $kindStruct, "http.tlsHandshakeTimeoutError", true, "net/http", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
fakeLocker = $pkg.fakeLocker = $newType(0, $kindStruct, "http.fakeLocker", true, "net/http", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
connLRU = $pkg.connLRU = $newType(0, $kindStruct, "http.connLRU", true, "net/http", false, function(ll_, m_) {
this.$val = this;
if (arguments.length === 0) {
this.ll = ptrType$12.nil;
this.m = false;
return;
}
this.ll = ll_;
this.m = m_;
});
canceler = $newType(8, $kindInterface, "http.canceler", true, "net/http", false, null);
I = $newType(8, $kindInterface, "http.I", true, "net/http", true, null);
I$1 = $newType(8, $kindInterface, "http.I", true, "net/http", true, null);
requestTooLarger = $newType(8, $kindInterface, "http.requestTooLarger", true, "net/http", false, null);
dialRes = $newType(0, $kindStruct, "http.dialRes", true, "net/http", false, function(pc_, err_) {
this.$val = this;
if (arguments.length === 0) {
this.pc = ptrType$98.nil;
this.err = $ifaceNil;
return;
}
this.pc = pc_;
this.err = err_;
});
ptrType = $ptrType(sync.Mutex);
sliceType = $sliceType($emptyInterface);
ptrType$1 = $ptrType(time.Location);
ptrType$2 = $ptrType(net.Resolver);
sliceType$1 = $sliceType($String);
ptrType$3 = $ptrType(http2clientConnPool);
sliceType$2 = $sliceType($Uint8);
ptrType$4 = $ptrType(sliceType$2);
ptrType$5 = $ptrType(http2responseWriter);
ptrType$6 = $ptrType(http2stream);
ptrType$7 = $ptrType(Request);
ptrType$8 = $ptrType(http2requestBody);
ptrType$9 = $ptrType(http2serverConn);
ptrType$10 = $ptrType(bufio.Writer);
chanType = $chanType($error, false, false);
sliceType$3 = $sliceType(keyValues);
sliceType$4 = $sliceType(sliceType$2);
sliceType$5 = $sliceType(sniffSig);
ptrType$12 = $ptrType(list.List);
ptrType$13 = $ptrType(tls.Config);
ptrType$14 = $ptrType(http2Transport);
ptrType$15 = $ptrType(js.Object);
funcType = $funcType([ptrType$15], [], false);
ptrType$16 = $ptrType(Response);
mapType = $mapType($String, $emptyInterface);
funcType$1 = $funcType([ptrType$15, ptrType$15], [], false);
ptrType$17 = $ptrType(tls.ConnectionState);
funcType$2 = $funcType([], [], false);
ptrType$18 = $ptrType(url.Userinfo);
ptrType$19 = $ptrType(url.URL);
ptrType$20 = $ptrType(multipart.Form);
structType = $structType("", []);
ptrType$21 = $ptrType(Transport);
ptrType$22 = $ptrType(atomicBool);
sliceType$6 = $sliceType(ptrType$7);
ptrType$23 = $ptrType(url.Error);
ptrType$24 = $ptrType(Cookie);
sliceType$7 = $sliceType(ptrType$24);
arrayType = $arrayType($Uint8, 64);
ptrType$27 = $ptrType(http2ClientConn);
sliceType$9 = $sliceType(ptrType$27);
ptrType$28 = $ptrType(http2dialCall);
ptrType$29 = $ptrType(http2addConnCall);
sliceType$10 = $sliceType(tls.Certificate);
ptrType$30 = $ptrType($packages["crypto/x509"].CertPool);
sliceType$11 = $sliceType($Uint16);
arrayType$2 = $arrayType($Uint8, 32);
sliceType$12 = $sliceType(tls.CurveID);
sliceType$13 = $sliceType(tls.ticketKey);
ptrType$31 = $ptrType(http2flow);
ptrType$32 = $ptrType(http2Framer);
arrayType$3 = $arrayType($Uint8, 9);
ptrType$33 = $ptrType(hpack.Decoder);
ptrType$34 = $ptrType(bytes.Buffer);
ptrType$35 = $ptrType(http2HeadersFrame);
arrayType$4 = $arrayType($Uint8, 8);
sliceType$14 = $sliceType(hpack.HeaderField);
ptrType$36 = $ptrType(http2MetaHeadersFrame);
ptrType$37 = $ptrType(http2ContinuationFrame);
ptrType$38 = $ptrType(http2SettingsFrame);
ptrType$39 = $ptrType(http2DataFrame);
ptrType$40 = $ptrType(http2WindowUpdateFrame);
ptrType$41 = $ptrType(http2PingFrame);
ptrType$42 = $ptrType(http2GoAwayFrame);
ptrType$43 = $ptrType(http2RSTStreamFrame);
ptrType$44 = $ptrType(Server);
ptrType$45 = $ptrType(httptrace.ClientTrace);
ptrType$46 = $ptrType(http2clientTrace);
ptrType$47 = $ptrType(PushOptions);
ptrType$48 = $ptrType($error);
ptrType$49 = $ptrType(http2Server);
ptrType$50 = $ptrType(http2ServeConnOpts);
ptrType$51 = $ptrType(log.Logger);
ptrType$52 = $ptrType(http2bufferedWriter);
ptrType$53 = $ptrType(time.Timer);
ptrType$54 = $ptrType(hpack.Encoder);
ptrType$55 = $ptrType($packages["crypto/x509"].Certificate);
sliceType$15 = $sliceType(ptrType$55);
sliceType$16 = $sliceType(sliceType$15);
ptrType$56 = $ptrType(net.OpError);
ptrType$57 = $ptrType(os.SyscallError);
ptrType$58 = $ptrType(http2writeData);
ptrType$59 = $ptrType(http2writeResHeaders);
ptrType$60 = $ptrType(http2writePushPromise);
ptrType$61 = $ptrType(http2PriorityFrame);
ptrType$62 = $ptrType(http2PushPromiseFrame);
ptrType$63 = $ptrType(http2pipe);
ptrType$64 = $ptrType(http2closeWaiter);
ptrType$65 = $ptrType(http2responseWriterState);
ptrType$66 = $ptrType(http2sorter);
ptrType$67 = $ptrType(sync.Cond);
ptrType$68 = $ptrType(bufio.Reader);
sliceType$17 = $sliceType(http2Setting);
ptrType$69 = $ptrType(Header);
ptrType$70 = $ptrType(http2clientStream);
ptrType$71 = $ptrType(gzip.Reader);
ptrType$72 = $ptrType(sync.Once);
sliceType$18 = $sliceType(http2FrameWriteRequest);
ptrType$73 = $ptrType(http2writeQueue);
ptrType$76 = $ptrType(http2writeQueuePool);
ptrType$78 = $ptrType(headerSorter);
ptrType$79 = $ptrType(multipart.Reader);
ptrType$80 = $ptrType(bytes.Reader);
ptrType$81 = $ptrType(strings.Reader);
ptrType$82 = $ptrType(textproto.Reader);
ptrType$83 = $ptrType(maxBytesReader);
ptrType$84 = $ptrType(multipart.FileHeader);
sliceType$20 = $sliceType(ptrType$84);
arrayType$5 = $arrayType($Uint8, 1);
sliceType$21 = $sliceType(io.Reader);
structType$1 = $structType("", [{prop: "Reader", name: "", exported: true, typ: io.Reader, tag: ""}, {prop: "Closer", name: "", exported: true, typ: io.Closer, tag: ""}]);
ptrType$85 = $ptrType(bufio.ReadWriter);
ptrType$86 = $ptrType($Int32);
ptrType$87 = $ptrType(os.File);
ptrType$88 = $ptrType(io.LimitedReader);
ptrType$89 = $ptrType(connReader);
ptrType$90 = $ptrType(response);
ptrType$91 = $ptrType(sync.Pool);
ptrType$92 = $ptrType(body);
ptrType$93 = $ptrType(conn);
arrayType$6 = $arrayType($Uint8, 29);
arrayType$7 = $arrayType($Uint8, 10);
ptrType$94 = $ptrType(expectContinueReader);
ptrType$95 = $ptrType(tls.Conn);
ptrType$96 = $ptrType(net.TCPListener);
ptrType$97 = $ptrType(transferWriter);
mapType$1 = $mapType($String, RoundTripper);
ptrType$98 = $ptrType(persistConn);
sliceType$22 = $sliceType(ptrType$98);
ptrType$99 = $ptrType(list.Element);
ptrType$100 = $ptrType(bodyEOFSignal);
ptrType$101 = $ptrType(streamReader);
ptrType$102 = $ptrType(fetchTransport);
ptrType$103 = $ptrType(XHRTransport);
mapType$2 = $mapType(ptrType$7, ptrType$15);
funcType$3 = $funcType([], [$Bool], false);
funcType$4 = $funcType([ptrType$7], [], false);
ptrType$104 = $ptrType(Client);
funcType$5 = $funcType([ptrType$7, sliceType$6], [$error], false);
ptrType$105 = $ptrType(cancelTimerBody);
mapType$3 = $mapType($String, sliceType$9);
mapType$4 = $mapType($String, ptrType$28);
mapType$5 = $mapType(ptrType$27, sliceType$1);
mapType$6 = $mapType($String, ptrType$29);
chanType$2 = $chanType(structType, false, false);
ptrType$108 = $ptrType(http2fixedBuffer);
ptrType$109 = $ptrType(http2FrameHeader);
funcType$6 = $funcType([$Uint32], [sliceType$2], false);
funcType$7 = $funcType([$String, sliceType], [], true);
funcType$8 = $funcType([http2Setting], [$error], false);
ptrType$110 = $ptrType(http2UnknownFrame);
chanType$3 = $chanType(structType, false, true);
funcType$9 = $funcType([$String], [], false);
funcType$10 = $funcType([httptrace.GotConnInfo], [], false);
funcType$11 = $funcType([$error], [], false);
funcType$12 = $funcType([httptrace.DNSStartInfo], [], false);
funcType$13 = $funcType([httptrace.DNSDoneInfo], [], false);
funcType$14 = $funcType([$String, $String], [], false);
funcType$15 = $funcType([$String, $String, $error], [], false);
funcType$16 = $funcType([tls.ConnectionState, $error], [], false);
funcType$17 = $funcType([httptrace.WroteRequestInfo], [], false);
ptrType$111 = $ptrType(http2httpError);
funcType$18 = $funcType([], [http2WriteScheduler], false);
funcType$19 = $funcType([ResponseWriter, ptrType$7], [], false);
chanType$4 = $chanType(http2readFrameResult, false, false);
chanType$5 = $chanType(http2FrameWriteRequest, false, false);
chanType$6 = $chanType(http2startPushRequest, false, false);
chanType$7 = $chanType(http2frameWriteResult, false, false);
chanType$8 = $chanType(http2bodyReadMsg, false, false);
funcType$20 = $funcType([$Int], [], false);
chanType$9 = $chanType(funcType$20, false, false);
mapType$7 = $mapType($Uint32, ptrType$6);
mapType$8 = $mapType($String, $String);
chanType$10 = $chanType(time.Time, false, true);
chanType$11 = $chanType($Bool, false, true);
chanType$12 = $chanType($Bool, false, false);
funcType$21 = $funcType([$String, $String, ptrType$13], [net.Conn, $error], false);
mapType$9 = $mapType($Uint32, ptrType$70);
mapType$10 = $mapType(arrayType$4, chanType$2);
chanType$13 = $chanType(http2resAndError, false, false);
ptrType$112 = $ptrType(http2badStringError);
ptrType$113 = $ptrType(http2clientConnReadLoop);
ptrType$114 = $ptrType(http2gzipReader);
ptrType$115 = $ptrType(http2writeGoAway);
funcType$22 = $funcType([], [$Uint32, $error], false);
ptrType$116 = $ptrType(http2FrameWriteRequest);
ptrType$118 = $ptrType(http2randomWriteScheduler);
mapType$12 = $mapType($Uint32, ptrType$73);
mapType$13 = $mapType($String, $Bool);
ptrType$119 = $ptrType(contextKey);
ptrType$120 = $ptrType(ProtocolError);
ptrType$121 = $ptrType(badStringError);
funcType$24 = $funcType([], [io.ReadCloser, $error], false);
ptrType$122 = $ptrType(chunkWriter);
ptrType$123 = $ptrType(redirectHandler);
ptrType$124 = $ptrType(ServeMux);
mapType$14 = $mapType($String, muxEntry);
funcType$25 = $funcType([ptrType$44, ptrType$95, Handler], [], false);
mapType$15 = $mapType($String, funcType$25);
funcType$26 = $funcType([net.Conn, ConnState], [], false);
mapType$16 = $mapType(net.Listener, structType);
mapType$17 = $mapType(ptrType$93, structType);
ptrType$127 = $ptrType(loggingConn);
ptrType$128 = $ptrType(exactSig);
ptrType$129 = $ptrType(maskedSig);
ptrType$130 = $ptrType(byteReader);
chanType$14 = $chanType(readResult, false, false);
ptrType$131 = $ptrType(transferReader);
ptrType$132 = $ptrType(transportRequest);
chanType$15 = $chanType(ptrType$98, false, false);
mapType$18 = $mapType(connectMethodKey, sliceType$22);
mapType$19 = $mapType(connectMethodKey, chanType$15);
mapType$20 = $mapType(ptrType$7, funcType$11);
funcType$27 = $funcType([ptrType$7], [ptrType$19, $error], false);
funcType$28 = $funcType([context.Context, $String, $String], [net.Conn, $error], false);
funcType$29 = $funcType([$String, $String], [net.Conn, $error], false);
funcType$30 = $funcType([$String, ptrType$95], [RoundTripper], false);
mapType$21 = $mapType($String, funcType$30);
ptrType$134 = $ptrType(connectMethod);
chanType$16 = $chanType(requestAndChan, false, false);
chanType$17 = $chanType(writeRequest, false, false);
funcType$31 = $funcType([Header], [], false);
chanType$18 = $chanType(responseAndError, false, false);
chanType$19 = $chanType(structType, true, false);
chanType$20 = $chanType($error, true, false);
ptrType$135 = $ptrType(httpError);
funcType$32 = $funcType([$error], [$error], false);
funcType$33 = $funcType([], [$error], false);
ptrType$136 = $ptrType(gzipReader);
ptrType$137 = $ptrType(connLRU);
mapType$22 = $mapType(ptrType$98, ptrType$99);
streamReader.ptr.prototype.Read = function(p) {
var $ptr, _r, _selection, _tmp, _tmp$1, _tmp$2, _tmp$3, b, bCh, err, err$1, errCh, n, p, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
bCh = [bCh];
errCh = [errCh];
n = 0;
err = $ifaceNil;
r = this;
/* */ if (r.pending.$length === 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (r.pending.$length === 0) { */ case 1:
bCh[0] = new $Chan(sliceType$2, 0);
errCh[0] = new $Chan($error, 0);
r.stream.read().then($externalize((function(bCh, errCh) { return function $b(result) {
var $ptr, result, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; result = $f.result; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
/* */ if (!!(result.done)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!!(result.done)) { */ case 1:
$r = $send(errCh[0], io.EOF); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } */ case 2:
$r = $send(bCh[0], $assertType($internalize(result.value, $emptyInterface), sliceType$2)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.result = result; $f.$s = $s; $f.$r = $r; return $f;
}; })(bCh, errCh), funcType), $externalize((function(bCh, errCh) { return function $b(reason) {
var $ptr, reason, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; reason = $f.reason; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.reason = reason; $f.$s = $s; $f.$r = $r; return $f;
}; })(bCh, errCh), funcType));
_r = $select([[bCh[0]], [errCh[0]]]); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_selection = _r;
if (_selection[0] === 0) {
b = _selection[1][0];
r.pending = b;
} else if (_selection[0] === 1) {
err$1 = _selection[1][0];
_tmp = 0;
_tmp$1 = err$1;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
/* } */ case 2:
n = $copySlice(p, r.pending);
r.pending = $subslice(r.pending, n);
_tmp$2 = n;
_tmp$3 = $ifaceNil;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: streamReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
streamReader.prototype.Read = function(p) { return this.$val.Read(p); };
streamReader.ptr.prototype.Close = function() {
var $ptr, r;
r = this;
r.stream.cancel();
return $ifaceNil;
};
streamReader.prototype.Close = function() { return this.$val.Close(); };
fetchTransport.ptr.prototype.RoundTrip = function(req) {
var $ptr, _entry, _i, _i$1, _key, _keys, _r, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _selection, _tuple, body$1, err, err$1, errCh, headers, key, opt, req, resp, respCh, respPromise, t, value, values, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _i = $f._i; _i$1 = $f._i$1; _key = $f._key; _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; _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:
errCh = [errCh];
req = [req];
respCh = [respCh];
t = this;
headers = new ($global.Headers)();
_ref = req[0].Header;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
continue;
}
key = _entry.k;
values = _entry.v;
_ref$1 = values;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
value = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
headers.append($externalize(key, $String), $externalize(value, $String));
_i$1++;
}
_i++;
}
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") }]);
/* */ if (!($interfaceIsEqual(req[0].Body, $ifaceNil))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!($interfaceIsEqual(req[0].Body, $ifaceNil))) { */ case 1:
_r = ioutil.ReadAll(req[0].Body); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
body$1 = _tuple[0];
err = _tuple[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
_r$1 = req[0].Body.Close(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
$s = -1; return [ptrType$16.nil, err];
/* } */ case 5:
_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; }
_r$2;
_key = "body"; (opt || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: body$1 };
/* } */ case 2:
respPromise = $global.fetch($externalize(req[0].URL.String(), $String), $externalize(opt, mapType));
respCh[0] = new $Chan(ptrType$16, 0);
errCh[0] = new $Chan($error, 0);
respPromise.then($externalize((function(errCh, req, respCh) { return function $b(result) {
var $ptr, _r$3, _r$4, _selection, _tuple$1, cl, contentLength, err$1, header, result, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$3 = $f._r$3; _r$4 = $f._r$4; _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:
header = [header];
header[0] = $makeMap($String.keyFor, []);
result.headers.forEach($externalize((function(errCh, header, req, respCh) { return function(value$1, key$1) {
var $ptr, _entry$1, _key$1, ck, key$1, value$1;
ck = CanonicalHeaderKey($internalize(key$1, $String));
_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)) };
}; })(errCh, header, req, respCh), funcType$1));
contentLength = new $Int64(-1, 4294967295);
_tuple$1 = strconv.ParseInt(new Header(header[0]).Get("Content-Length"), 10, 64);
cl = _tuple$1[0];
err$1 = _tuple$1[1];
if ($interfaceIsEqual(err$1, $ifaceNil)) {
contentLength = cl;
}
_r$3 = req[0].Context().Done(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$4 = $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$2.nil, result.body.getReader()), contentLength, sliceType$1.nil, false, false, false, req[0], ptrType$17.nil)], [_r$3]]); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_selection = _r$4;
/* */ if (_selection[0] === 0) { $s = 3; continue; }
/* */ if (_selection[0] === 1) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (_selection[0] === 0) { */ case 3:
$s = 5; continue;
/* } else if (_selection[0] === 1) { */ case 4:
/* } */ case 5:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r$3 = _r$3; $f._r$4 = _r$4; $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;
}; })(errCh, req, respCh), funcType), $externalize((function(errCh, req, respCh) { return function $b(reason) {
var $ptr, _r$3, _r$4, _r$5, _selection, reason, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _selection = $f._selection; reason = $f.reason; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r$3 = fmt.Errorf("net/http: fetch() failed: %s", new sliceType([new $String($internalize(reason, $String))])); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$4 = req[0].Context().Done(); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_r$5 = $select([[errCh[0], _r$3], [_r$4]]); /* */ $s = 3; case 3: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_selection = _r$5;
/* */ if (_selection[0] === 0) { $s = 4; continue; }
/* */ if (_selection[0] === 1) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (_selection[0] === 0) { */ case 4:
$s = 6; continue;
/* } else if (_selection[0] === 1) { */ case 5:
/* } */ case 6:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._selection = _selection; $f.reason = reason; $f.$s = $s; $f.$r = $r; return $f;
}; })(errCh, req, respCh), funcType));
_r$3 = req[0].Context().Done(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$4 = $select([[_r$3], [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; }
_selection = _r$4;
/* */ if (_selection[0] === 0) { $s = 10; continue; }
/* */ if (_selection[0] === 1) { $s = 11; continue; }
/* */ if (_selection[0] === 2) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (_selection[0] === 0) { */ case 10:
$s = -1; return [ptrType$16.nil, errors.New("net/http: request canceled")];
/* } else if (_selection[0] === 1) { */ case 11:
resp = _selection[1][0];
$s = -1; return [resp, $ifaceNil];
/* } else if (_selection[0] === 2) { */ case 12:
err$1 = _selection[1][0];
$s = -1; return [ptrType$16.nil, err$1];
/* } */ case 13:
$s = -1; return [ptrType$16.nil, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: fetchTransport.ptr.prototype.RoundTrip }; } $f.$ptr = $ptr; $f._entry = _entry; $f._i = _i; $f._i$1 = _i$1; $f._key = _key; $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._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;
};
fetchTransport.prototype.RoundTrip = function(req) { return this.$val.RoundTrip(req); };
noTransport.ptr.prototype.RoundTrip = function(req) {
var $ptr, req;
return [ptrType$16.nil, errors.New("net/http: neither of Fetch nor XMLHttpRequest APIs is available")];
};
noTransport.prototype.RoundTrip = function(req) { return this.$val.RoundTrip(req); };
XHRTransport.ptr.prototype.RoundTrip = function(req) {
var $ptr, _arg, _arg$1, _entry, _i, _i$1, _key, _keys, _r, _r$1, _r$2, _r$3, _ref, _ref$1, _selection, _tuple, body$1, err, err$1, errCh, key, req, resp, respCh, t, value, values, xhr, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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 = $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; _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);
errCh = [errCh];
req = [req];
respCh = [respCh];
xhr = [xhr];
t = this;
xhr[0] = new ($global.XMLHttpRequest)();
if (t.inflight === false) {
t.inflight = $makeMap(ptrType$7.keyFor, []);
}
_key = req[0]; (t.inflight || $throwRuntimeError("assignment to entry in nil map"))[ptrType$7.keyFor(_key)] = { k: _key, v: xhr[0] };
$deferred.push([function(_arg, _arg$1) { delete _arg[ptrType$7.keyFor(_arg$1)]; }, [t.inflight, req[0]]]);
respCh[0] = new $Chan(ptrType$16, 0);
errCh[0] = new $Chan($error, 0);
xhr[0].onload = $externalize((function(errCh, req, respCh, xhr) { return function $b() {
var $ptr, _1, _r, _tuple, _tuple$1, body$1, contentLength, err, header, l, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _r = $f._r; _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:
_r = textproto.NewReader(bufio.NewReader(bytes.NewReader((new sliceType$2($stringToBytes($internalize(xhr[0].getAllResponseHeaders(), $String) + "\n")))))).ReadMIMEHeader(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
header = _tuple[0];
body$1 = $assertType($internalize(new ($global.Uint8Array)(xhr[0].response), $emptyInterface), sliceType$2);
contentLength = new $Int64(-1, 4294967295);
_1 = req[0].Method;
if (_1 === ("HEAD")) {
_tuple$1 = strconv.ParseInt(new textproto.MIMEHeader(header).Get("Content-Length"), 10, 64);
l = _tuple$1[0];
err = _tuple$1[1];
if ($interfaceIsEqual(err, $ifaceNil)) {
contentLength = l;
}
} else {
contentLength = (new $Int64(0, body$1.$length));
}
$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$17.nil)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._1 = _1; $f._r = _r; $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;
}; })(errCh, req, respCh, xhr), funcType$2);
xhr[0].onerror = $externalize((function(errCh, req, respCh, xhr) { return function $b(e) {
var $ptr, e, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
}; })(errCh, req, respCh, xhr), funcType);
xhr[0].onabort = $externalize((function(errCh, req, respCh, xhr) { return function $b(e) {
var $ptr, e, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
}; })(errCh, req, respCh, xhr), funcType);
xhr[0].open($externalize(req[0].Method, $String), $externalize(req[0].URL.String(), $String));
xhr[0].responseType = $externalize("arraybuffer", $String);
_ref = req[0].Header;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
continue;
}
key = _entry.k;
values = _entry.v;
_ref$1 = values;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
value = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
xhr[0].setRequestHeader($externalize(key, $String), $externalize(value, $String));
_i$1++;
}
_i++;
}
/* */ if ($interfaceIsEqual(req[0].Body, $ifaceNil)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if ($interfaceIsEqual(req[0].Body, $ifaceNil)) { */ case 1:
xhr[0].send();
$s = 3; continue;
/* } else { */ case 2:
_r = ioutil.ReadAll(req[0].Body); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
body$1 = _tuple[0];
err = _tuple[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 5:
_r$1 = req[0].Body.Close(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
$s = -1; return [ptrType$16.nil, err];
/* } */ case 6:
_r$2 = req[0].Body.Close(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
xhr[0].send($externalize(body$1, sliceType$2));
/* } */ case 3:
_r$3 = $select([[respCh[0]], [errCh[0]]]); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_selection = _r$3;
if (_selection[0] === 0) {
resp = _selection[1][0];
$s = -1; return [resp, $ifaceNil];
} else if (_selection[0] === 1) {
err$1 = _selection[1][0];
$s = -1; return [ptrType$16.nil, err$1];
}
$s = -1; return [ptrType$16.nil, $ifaceNil];
/* */ } return; } } catch(err) { $err = err; $s = -1; return [ptrType$16.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: XHRTransport.ptr.prototype.RoundTrip }; } $f.$ptr = $ptr; $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 = _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._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; } }
};
XHRTransport.prototype.RoundTrip = function(req) { return this.$val.RoundTrip(req); };
XHRTransport.ptr.prototype.CancelRequest = function(req) {
var $ptr, _entry, _tuple, ok, req, t, xhr;
t = this;
_tuple = (_entry = t.inflight[ptrType$7.keyFor(req)], _entry !== undefined ? [_entry.v, true] : [null, false]);
xhr = _tuple[0];
ok = _tuple[1];
if (ok) {
xhr.abort();
}
};
XHRTransport.prototype.CancelRequest = function(req) { return this.$val.CancelRequest(req); };
refererForURL = function(lastReq, newReq) {
var $ptr, auth, lastReq, newReq, referer;
if (lastReq.Scheme === "https" && newReq.Scheme === "http") {
return "";
}
referer = lastReq.String();
if (!(lastReq.User === ptrType$18.nil)) {
auth = lastReq.User.String() + "@";
referer = strings.Replace(referer, auth, "", 1);
}
return referer;
};
Client.ptr.prototype.send = function(req, deadline) {
var $ptr, _i, _r, _r$1, _r$2, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, c, cookie, deadline, didTimeout, err, rc, req, resp, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
resp = ptrType$16.nil;
didTimeout = $throwNilPointerError;
err = $ifaceNil;
c = this;
/* */ if (!($interfaceIsEqual(c.Jar, $ifaceNil))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!($interfaceIsEqual(c.Jar, $ifaceNil))) { */ case 1:
_r = c.Jar.Cookies(req.URL); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_ref = _r;
_i = 0;
/* while (true) { */ case 4:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; }
cookie = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
$r = req.AddCookie(cookie); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_i++;
/* } */ $s = 4; continue; case 5:
/* } */ case 2:
_r$1 = send(req, c.transport(), $clone(deadline, time.Time)); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
resp = _tuple[0];
didTimeout = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = ptrType$16.nil;
_tmp$1 = didTimeout;
_tmp$2 = err;
resp = _tmp;
didTimeout = _tmp$1;
err = _tmp$2;
$s = -1; return [resp, didTimeout, err];
}
/* */ if (!($interfaceIsEqual(c.Jar, $ifaceNil))) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (!($interfaceIsEqual(c.Jar, $ifaceNil))) { */ case 8:
_r$2 = resp.Cookies(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
rc = _r$2;
/* */ if (rc.$length > 0) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if (rc.$length > 0) { */ case 11:
$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; }
/* } */ case 12:
/* } */ case 9:
_tmp$3 = resp;
_tmp$4 = $throwNilPointerError;
_tmp$5 = $ifaceNil;
resp = _tmp$3;
didTimeout = _tmp$4;
err = _tmp$5;
$s = -1; return [resp, didTimeout, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Client.ptr.prototype.send }; } $f.$ptr = $ptr; $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._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;
};
Client.prototype.send = function(req, deadline) { return this.$val.send(req, deadline); };
Client.ptr.prototype.deadline = function() {
var $ptr, c, x$3;
c = this;
if ((x$3 = c.Timeout, (x$3.$high > 0 || (x$3.$high === 0 && x$3.$low > 0)))) {
return $clone(time.Now(), time.Time).Add(c.Timeout);
}
return new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil);
};
Client.prototype.deadline = function() { return this.$val.deadline(); };
Client.ptr.prototype.transport = function() {
var $ptr, c;
c = this;
if (!($interfaceIsEqual(c.Transport, $ifaceNil))) {
return c.Transport;
}
return $pkg.DefaultTransport;
};
Client.prototype.transport = function() { return this.$val.transport(); };
send = function(ireq, rt, deadline) {
var $ptr, _r, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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$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:
ireq = [ireq];
req = [req];
resp = ptrType$16.nil;
didTimeout = $throwNilPointerError;
err = $ifaceNil;
req[0] = ireq[0];
/* */ if ($interfaceIsEqual(rt, $ifaceNil)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if ($interfaceIsEqual(rt, $ifaceNil)) { */ case 1:
$r = req[0].closeBody(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_tmp = ptrType$16.nil;
_tmp$1 = alwaysFalse;
_tmp$2 = errors.New("http: no Client.Transport or DefaultTransport");
resp = _tmp;
didTimeout = _tmp$1;
err = _tmp$2;
$s = -1; return [resp, didTimeout, err];
/* } */ case 2:
/* */ if (req[0].URL === ptrType$19.nil) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (req[0].URL === ptrType$19.nil) { */ case 4:
$r = req[0].closeBody(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_tmp$3 = ptrType$16.nil;
_tmp$4 = alwaysFalse;
_tmp$5 = errors.New("http: nil Request.URL");
resp = _tmp$3;
didTimeout = _tmp$4;
err = _tmp$5;
$s = -1; return [resp, didTimeout, err];
/* } */ case 5:
/* */ if (!(req[0].RequestURI === "")) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (!(req[0].RequestURI === "")) { */ case 7:
$r = req[0].closeBody(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_tmp$6 = ptrType$16.nil;
_tmp$7 = alwaysFalse;
_tmp$8 = errors.New("http: Request.RequestURI can't be set in client requests.");
resp = _tmp$6;
didTimeout = _tmp$7;
err = _tmp$8;
$s = -1; return [resp, didTimeout, err];
/* } */ case 8:
forkReq = (function(ireq, req) { return function() {
var $ptr;
if (ireq[0] === req[0]) {
req[0] = new Request.ptr("", ptrType$19.nil, "", 0, 0, false, $ifaceNil, $throwNilPointerError, new $Int64(0, 0), sliceType$1.nil, false, "", false, false, ptrType$20.nil, false, "", "", ptrType$17.nil, $chanNil, ptrType$16.nil, $ifaceNil);
Request.copy(req[0], ireq[0]);
}
}; })(ireq, req);
/* */ if (req[0].Header === false) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (req[0].Header === false) { */ case 10:
$r = forkReq(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
req[0].Header = {};
/* } */ case 11:
u = req[0].URL.User;
/* */ if (!(u === ptrType$18.nil) && new Header(req[0].Header).Get("Authorization") === "") { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (!(u === ptrType$18.nil) && new Header(req[0].Header).Get("Authorization") === "") { */ case 13:
username = u.Username();
_tuple = u.Password();
password = _tuple[0];
$r = forkReq(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
req[0].Header = cloneHeader(ireq[0].Header);
new Header(req[0].Header).Set("Authorization", "Basic " + basicAuth(username, password));
/* } */ case 14:
/* */ if (!$clone(deadline, time.Time).IsZero()) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (!$clone(deadline, time.Time).IsZero()) { */ case 16:
$r = forkReq(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 17:
_tuple$1 = setRequestCancel(req[0], rt, $clone(deadline, time.Time));
stopTimer = _tuple$1[0];
didTimeout = _tuple$1[1];
_r = rt.RoundTrip(req[0]); /* */ $s = 19; case 19: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$2 = _r;
resp = _tuple$2[0];
err = _tuple$2[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 20:
$r = stopTimer(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (!(resp === ptrType$16.nil)) { $s = 23; continue; }
/* */ $s = 24; continue;
/* if (!(resp === ptrType$16.nil)) { */ case 23:
$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; }
/* } */ case 24:
_tuple$3 = $assertType(err, tls.RecordHeaderError, true);
tlsErr = $clone(_tuple$3[0], tls.RecordHeaderError);
ok = _tuple$3[1];
if (ok) {
if (($bytesToString(new sliceType$2(tlsErr.RecordHeader))) === "HTTP/") {
err = errors.New("http: server gave HTTP response to HTTPS client");
}
}
_tmp$9 = ptrType$16.nil;
_tmp$10 = didTimeout;
_tmp$11 = err;
resp = _tmp$9;
didTimeout = _tmp$10;
err = _tmp$11;
$s = -1; return [resp, didTimeout, err];
/* } */ case 21:
if (!$clone(deadline, time.Time).IsZero()) {
resp.Body = new cancelTimerBody.ptr(stopTimer, resp.Body, didTimeout);
}
_tmp$12 = resp;
_tmp$13 = $throwNilPointerError;
_tmp$14 = $ifaceNil;
resp = _tmp$12;
didTimeout = _tmp$13;
err = _tmp$14;
$s = -1; return [resp, didTimeout, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: send }; } $f.$ptr = $ptr; $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$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;
};
setRequestCancel = function(req, rt, deadline) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, cancel, deadline, didTimeout, doCancel, initialReqCancel, once, req, rt, stopTimer, stopTimerCh, timedOut, timer;
stopTimer = $throwNilPointerError;
didTimeout = $throwNilPointerError;
if ($clone(deadline, time.Time).IsZero()) {
_tmp = nop;
_tmp$1 = alwaysFalse;
stopTimer = _tmp;
didTimeout = _tmp$1;
return [stopTimer, didTimeout];
}
initialReqCancel = req.Cancel;
cancel = new $Chan(structType, 0);
req.Cancel = cancel;
doCancel = (function $b() {
var $ptr, _ref, v, v$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; v = $f.v; v$1 = $f.v$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$close(cancel);
_ref = rt;
/* */ if ($assertType(_ref, ptrType$21, true)[1] || $assertType(_ref, ptrType$14, true)[1]) { $s = 1; continue; }
/* */ if ($assertType(_ref, canceler, true)[1]) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if ($assertType(_ref, ptrType$21, true)[1] || $assertType(_ref, ptrType$14, true)[1]) { */ case 1:
v = _ref;
$s = 3; continue;
/* } else if ($assertType(_ref, canceler, true)[1]) { */ case 2:
v$1 = _ref;
$r = v$1.CancelRequest(req); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 3:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._ref = _ref; $f.v = v; $f.v$1 = v$1; $f.$s = $s; $f.$r = $r; return $f;
});
stopTimerCh = new $Chan(structType, 0);
once = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
stopTimer = (function $b() {
var $ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = once.Do((function() {
var $ptr;
$close(stopTimerCh);
})); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
});
timer = time.NewTimer(time.Until($clone(deadline, time.Time)));
timedOut = 0;
$go((function $b() {
var $ptr, _r, _selection, timedOut$24ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _selection = $f._selection; timedOut$24ptr = $f.timedOut$24ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = $select([[initialReqCancel], [timer.C], [stopTimerCh]]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_selection = _r;
/* */ if (_selection[0] === 0) { $s = 2; continue; }
/* */ if (_selection[0] === 1) { $s = 3; continue; }
/* */ if (_selection[0] === 2) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (_selection[0] === 0) { */ case 2:
$r = doCancel(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
timer.Stop();
$s = 5; continue;
/* } else if (_selection[0] === 1) { */ case 3:
(timedOut$24ptr || (timedOut$24ptr = new ptrType$22(function() { return timedOut; }, function($v) { timedOut = $v; }))).setTrue();
$r = doCancel(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 5; continue;
/* } else if (_selection[0] === 2) { */ case 4:
timer.Stop();
/* } */ case 5:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f._selection = _selection; $f.timedOut$24ptr = timedOut$24ptr; $f.$s = $s; $f.$r = $r; return $f;
}), []);
_tmp$2 = stopTimer;
_tmp$3 = $methodVal((timedOut$24ptr || (timedOut$24ptr = new ptrType$22(function() { return timedOut; }, function($v) { timedOut = $v; }))), "isSet");
stopTimer = _tmp$2;
didTimeout = _tmp$3;
return [stopTimer, didTimeout];
};
basicAuth = function(username, password) {
var $ptr, auth, password, username;
auth = username + ":" + password;
return base64.StdEncoding.EncodeToString((new sliceType$2($stringToBytes(auth))));
};
Get = function(url$1) {
var $ptr, _r, _tuple, err, resp, url$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
resp = ptrType$16.nil;
err = $ifaceNil;
_r = $pkg.DefaultClient.Get(url$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
resp = _tuple[0];
err = _tuple[1];
$s = -1; return [resp, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Get }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.resp = resp; $f.url$1 = url$1; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Get = Get;
Client.ptr.prototype.Get = function(url$1) {
var $ptr, _r, _r$1, _tmp, _tmp$1, _tuple, _tuple$1, c, err, req, resp, url$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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:
resp = ptrType$16.nil;
err = $ifaceNil;
c = this;
_r = NewRequest("GET", url$1, $ifaceNil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
req = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = ptrType$16.nil;
_tmp$1 = err;
resp = _tmp;
err = _tmp$1;
$s = -1; return [resp, err];
}
_r$1 = c.Do(req); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple$1 = _r$1;
resp = _tuple$1[0];
err = _tuple$1[1];
$s = -1; return [resp, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Client.ptr.prototype.Get }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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;
};
Client.prototype.Get = function(url$1) { return this.$val.Get(url$1); };
alwaysFalse = function() {
var $ptr;
return false;
};
Client.ptr.prototype.checkRedirect = function(req, via) {
var $ptr, _r, c, fn, req, via, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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:
c = this;
fn = c.CheckRedirect;
if (fn === $throwNilPointerError) {
fn = defaultCheckRedirect;
}
_r = fn(req, via); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Client.ptr.prototype.checkRedirect }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.fn = fn; $f.req = req; $f.via = via; $f.$s = $s; $f.$r = $r; return $f;
};
Client.prototype.checkRedirect = function(req, via) { return this.$val.checkRedirect(req, via); };
redirectBehavior = function(reqMethod, resp, ireq) {
var $ptr, _1, _tmp, _tmp$1, _tmp$2, includeBody, ireq, redirectMethod, reqMethod, resp, shouldRedirect, x$3;
redirectMethod = "";
shouldRedirect = false;
includeBody = false;
switch (0) { default:
_1 = resp.StatusCode;
if ((_1 === (301)) || (_1 === (302)) || (_1 === (303))) {
redirectMethod = reqMethod;
shouldRedirect = true;
includeBody = false;
if (!(reqMethod === "GET") && !(reqMethod === "HEAD")) {
redirectMethod = "GET";
}
} else if ((_1 === (307)) || (_1 === (308))) {
redirectMethod = reqMethod;
shouldRedirect = true;
includeBody = true;
if (new Header(resp.Header).Get("Location") === "") {
shouldRedirect = false;
break;
}
if (ireq.GetBody === $throwNilPointerError && !((x$3 = ireq.outgoingLength(), (x$3.$high === 0 && x$3.$low === 0)))) {
shouldRedirect = false;
}
}
}
_tmp = redirectMethod;
_tmp$1 = shouldRedirect;
_tmp$2 = includeBody;
redirectMethod = _tmp;
shouldRedirect = _tmp$1;
includeBody = _tmp$2;
return [redirectMethod, shouldRedirect, includeBody];
};
Client.ptr.prototype.Do = function(req) {
var $ptr, _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, _tuple, _tuple$1, _tuple$2, _tuple$3, _v, c, copyHeaders, deadline, didTimeout, err, err$1, includeBody, ireq, loc, redirectMethod, ref, req, reqs, resp, shouldRedirect, u, ue, uerr, x$3, x$4, x$5, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _v = $f._v; c = $f.c; copyHeaders = $f.copyHeaders; deadline = $f.deadline; didTimeout = $f.didTimeout; err = $f.err; err$1 = $f.err$1; includeBody = $f.includeBody; ireq = $f.ireq; loc = $f.loc; redirectMethod = $f.redirectMethod; ref = $f.ref; req = $f.req; reqs = $f.reqs; resp = $f.resp; shouldRedirect = $f.shouldRedirect; u = $f.u; ue = $f.ue; uerr = $f.uerr; 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:
req = [req];
reqs = [reqs];
resp = [resp];
c = this;
/* */ if (req[0].URL === ptrType$19.nil) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (req[0].URL === ptrType$19.nil) { */ case 1:
$r = req[0].closeBody(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return [ptrType$16.nil, errors.New("http: nil Request.URL")];
/* } */ case 2:
deadline = $clone(c.deadline(), time.Time);
reqs[0] = sliceType$6.nil;
resp[0] = ptrType$16.nil;
_r = c.makeHeadersCopier(req[0]); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
copyHeaders = _r;
redirectMethod = "";
includeBody = false;
uerr = (function(req, reqs, resp) { return function $b(err) {
var $ptr, _r$1, err, method, urlStr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$1 = $f._r$1; err = $f.err; method = $f.method; urlStr = $f.urlStr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = req[0].closeBody(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
method = valueOrDefault((0 >= reqs[0].$length ? ($throwRuntimeError("index out of range"), undefined) : reqs[0].$array[reqs[0].$offset + 0]).Method, "GET");
urlStr = "";
if (!(resp[0] === ptrType$16.nil) && !(resp[0].Request === ptrType$7.nil)) {
urlStr = resp[0].Request.URL.String();
} else {
urlStr = req[0].URL.String();
}
_r$1 = strings.ToLower($substring(method, 1)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return new url.Error.ptr($substring(method, 0, 1) + _r$1, urlStr, err);
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r$1 = _r$1; $f.err = err; $f.method = method; $f.urlStr = urlStr; $f.$s = $s; $f.$r = $r; return $f;
}; })(req, reqs, resp);
/* while (true) { */ case 5:
/* */ if (reqs[0].$length > 0) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (reqs[0].$length > 0) { */ case 7:
loc = new Header(resp[0].Header).Get("Location");
/* */ if (loc === "") { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (loc === "") { */ case 9:
_r$1 = fmt.Errorf("%d response missing Location header", new sliceType([new $Int(resp[0].StatusCode)])); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$2 = uerr(_r$1); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$s = -1; return [ptrType$16.nil, _r$2];
/* } */ case 10:
_r$3 = req[0].URL.Parse(loc); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple = _r$3;
u = _tuple[0];
err = _tuple[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 14:
_r$4 = fmt.Errorf("failed to parse Location header %q: %v", new sliceType([new $String(loc), err])); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_r$5 = uerr(_r$4); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
$s = -1; return [ptrType$16.nil, _r$5];
/* } */ case 15:
ireq = (0 >= reqs[0].$length ? ($throwRuntimeError("index out of range"), undefined) : reqs[0].$array[reqs[0].$offset + 0]);
req[0] = new Request.ptr(redirectMethod, u, "", 0, 0, {}, $ifaceNil, $throwNilPointerError, new $Int64(0, 0), sliceType$1.nil, false, "", false, false, ptrType$20.nil, false, "", "", ptrType$17.nil, ireq.Cancel, resp[0], ireq.ctx);
/* */ if (includeBody && !(ireq.GetBody === $throwNilPointerError)) { $s = 18; continue; }
/* */ $s = 19; continue;
/* if (includeBody && !(ireq.GetBody === $throwNilPointerError)) { */ case 18:
_r$6 = ireq.GetBody(); /* */ $s = 20; case 20: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_tuple$1 = _r$6;
req[0].Body = _tuple$1[0];
err = _tuple$1[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 21; continue; }
/* */ $s = 22; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 21:
_r$7 = uerr(err); /* */ $s = 23; case 23: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
$s = -1; return [ptrType$16.nil, _r$7];
/* } */ case 22:
req[0].ContentLength = ireq.ContentLength;
/* } */ case 19:
$r = copyHeaders(req[0]); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
ref = refererForURL((x$3 = reqs[0].$length - 1 >> 0, ((x$3 < 0 || x$3 >= reqs[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : reqs[0].$array[reqs[0].$offset + x$3])).URL, req[0].URL);
if (!(ref === "")) {
new Header(req[0].Header).Set("Referer", ref);
}
_r$8 = c.checkRedirect(req[0], reqs[0]); /* */ $s = 25; case 25: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
err = _r$8;
if ($interfaceIsEqual(err, $pkg.ErrUseLastResponse)) {
$s = -1; return [resp[0], $ifaceNil];
}
/* */ if ((x$4 = resp[0].ContentLength, (x$4.$high === -1 && x$4.$low === 4294967295)) || (x$5 = resp[0].ContentLength, (x$5.$high < 0 || (x$5.$high === 0 && x$5.$low <= 2048)))) { $s = 26; continue; }
/* */ $s = 27; continue;
/* if ((x$4 = resp[0].ContentLength, (x$4.$high === -1 && x$4.$low === 4294967295)) || (x$5 = resp[0].ContentLength, (x$5.$high < 0 || (x$5.$high === 0 && x$5.$low <= 2048)))) { */ case 26:
_r$9 = io.CopyN(ioutil.Discard, resp[0].Body, new $Int64(0, 2048)); /* */ $s = 28; case 28: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
_r$9;
/* } */ case 27:
_r$10 = resp[0].Body.Close(); /* */ $s = 29; case 29: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
_r$10;
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 30; continue; }
/* */ $s = 31; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 30:
_r$11 = uerr(err); /* */ $s = 32; case 32: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
ue = _r$11;
$assertType(ue, ptrType$23).URL = loc;
$s = -1; return [resp[0], ue];
/* } */ case 31:
/* } */ case 8:
reqs[0] = $append(reqs[0], req[0]);
err$1 = $ifaceNil;
didTimeout = $throwNilPointerError;
_r$12 = c.send(req[0], $clone(deadline, time.Time)); /* */ $s = 33; case 33: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
_tuple$2 = _r$12;
resp[0] = _tuple$2[0];
didTimeout = _tuple$2[1];
err$1 = _tuple$2[2];
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 34; continue; }
/* */ $s = 35; continue;
/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 34:
if (!(!$clone(deadline, time.Time).IsZero())) { _v = false; $s = 38; continue s; }
_r$13 = didTimeout(); /* */ $s = 39; case 39: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
_v = _r$13; case 38:
/* */ if (_v) { $s = 36; continue; }
/* */ $s = 37; continue;
/* if (_v) { */ case 36:
_r$14 = err$1.Error(); /* */ $s = 40; case 40: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
err$1 = new httpError.ptr(_r$14 + " (Client.Timeout exceeded while awaiting headers)", true);
/* } */ case 37:
_r$15 = uerr(err$1); /* */ $s = 41; case 41: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
$s = -1; return [ptrType$16.nil, _r$15];
/* } */ case 35:
shouldRedirect = false;
_tuple$3 = redirectBehavior(req[0].Method, resp[0], (0 >= reqs[0].$length ? ($throwRuntimeError("index out of range"), undefined) : reqs[0].$array[reqs[0].$offset + 0]));
redirectMethod = _tuple$3[0];
shouldRedirect = _tuple$3[1];
includeBody = _tuple$3[2];
if (!shouldRedirect) {
$s = -1; return [resp[0], $ifaceNil];
}
$r = req[0].closeBody(); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ $s = 5; continue; case 6:
$s = -1; return [ptrType$16.nil, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Client.ptr.prototype.Do }; } $f.$ptr = $ptr; $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._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._v = _v; $f.c = c; $f.copyHeaders = copyHeaders; $f.deadline = deadline; $f.didTimeout = didTimeout; $f.err = err; $f.err$1 = err$1; $f.includeBody = includeBody; $f.ireq = ireq; $f.loc = loc; $f.redirectMethod = redirectMethod; $f.ref = ref; $f.req = req; $f.reqs = reqs; $f.resp = resp; $f.shouldRedirect = shouldRedirect; $f.u = u; $f.ue = ue; $f.uerr = uerr; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
};
Client.prototype.Do = function(req) { return this.$val.Do(req); };
Client.ptr.prototype.makeHeadersCopier = function(ireq) {
var $ptr, _entry, _i, _key, _r, _ref, c, c$1, icookies, ireq, ireqhdr, preq, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _i = $f._i; _key = $f._key; _r = $f._r; _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:
c = [c];
icookies = [icookies];
ireqhdr = [ireqhdr];
preq = [preq];
c[0] = this;
ireqhdr[0] = new Header(ireq.Header).clone();
icookies[0] = false;
/* */ if (!($interfaceIsEqual(c[0].Jar, $ifaceNil)) && !(new Header(ireq.Header).Get("Cookie") === "")) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!($interfaceIsEqual(c[0].Jar, $ifaceNil)) && !(new Header(ireq.Header).Get("Cookie") === "")) { */ case 1:
icookies[0] = {};
_r = ireq.Cookies(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_ref = _r;
_i = 0;
/* while (true) { */ case 4:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; }
c$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_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$7.nil), c$1) };
_i++;
/* } */ $s = 4; continue; case 5:
/* } */ case 2:
preq[0] = ireq;
$s = -1; return (function(c, icookies, ireqhdr, preq) { return function $b(req) {
var $ptr, _entry$1, _entry$2, _entry$3, _i$1, _i$2, _i$3, _i$4, _key$1, _keys, _keys$1, _r$1, _r$2, _ref$1, _ref$2, _ref$3, _ref$4, _tuple, c$2, c$3, changed, cs, k, ok, req, resp, ss, vv, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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$1 = $f._r$1; _r$2 = $f._r$2; _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:
/* */ if (!($interfaceIsEqual(c[0].Jar, $ifaceNil)) && !(icookies[0] === false)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!($interfaceIsEqual(c[0].Jar, $ifaceNil)) && !(icookies[0] === false)) { */ case 1:
changed = false;
resp = req.Response;
_r$1 = resp.Cookies(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_ref$1 = _r$1;
_i$1 = 0;
/* while (true) { */ case 4:
/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 5; continue; }
c$2 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
_tuple = (_entry$1 = icookies[0][$String.keyFor(c$2.Name)], _entry$1 !== undefined ? [_entry$1.v, true] : [sliceType$7.nil, false]);
ok = _tuple[1];
if (ok) {
delete icookies[0][$String.keyFor(c$2.Name)];
changed = true;
}
_i$1++;
/* } */ $s = 4; continue; case 5:
/* */ if (changed) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (changed) { */ case 6:
new Header(ireqhdr[0]).Del("Cookie");
ss = sliceType$1.nil;
_ref$2 = icookies[0];
_i$2 = 0;
_keys = $keys(_ref$2);
while (true) {
if (!(_i$2 < _keys.length)) { break; }
_entry$2 = _ref$2[_keys[_i$2]];
if (_entry$2 === undefined) {
_i$2++;
continue;
}
cs = _entry$2.v;
_ref$3 = cs;
_i$3 = 0;
while (true) {
if (!(_i$3 < _ref$3.$length)) { break; }
c$3 = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]);
ss = $append(ss, c$3.Name + "=" + c$3.Value);
_i$3++;
}
_i$2++;
}
$r = sort.Strings(ss); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
new Header(ireqhdr[0]).Set("Cookie", strings.Join(ss, "; "));
/* } */ case 7:
/* } */ case 2:
_ref$4 = ireqhdr[0];
_i$4 = 0;
_keys$1 = $keys(_ref$4);
/* while (true) { */ case 9:
/* if (!(_i$4 < _keys$1.length)) { break; } */ if(!(_i$4 < _keys$1.length)) { $s = 10; continue; }
_entry$3 = _ref$4[_keys$1[_i$4]];
if (_entry$3 === undefined) {
_i$4++;
/* continue; */ $s = 9; continue;
}
k = _entry$3.k;
vv = _entry$3.v;
_r$2 = shouldCopyHeaderOnRedirect(k, preq[0].URL, req.URL); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
/* */ if (_r$2) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if (_r$2) { */ case 11:
_key$1 = k; (req.Header || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$1)] = { k: _key$1, v: vv };
/* } */ case 12:
_i$4++;
/* } */ $s = 9; continue; case 10:
preq[0] = req;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $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$1 = _r$1; $f._r$2 = _r$2; $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;
}; })(c, icookies, ireqhdr, preq);
/* */ } return; } if ($f === undefined) { $f = { $blk: Client.ptr.prototype.makeHeadersCopier }; } $f.$ptr = $ptr; $f._entry = _entry; $f._i = _i; $f._key = _key; $f._r = _r; $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;
};
Client.prototype.makeHeadersCopier = function(ireq) { return this.$val.makeHeadersCopier(ireq); };
defaultCheckRedirect = function(req, via) {
var $ptr, req, via;
if (via.$length >= 10) {
return errors.New("stopped after 10 redirects");
}
return $ifaceNil;
};
Client.ptr.prototype.Post = function(url$1, contentType, body$1) {
var $ptr, _r, _r$1, _tmp, _tmp$1, _tuple, _tuple$1, body$1, c, contentType, err, req, resp, url$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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:
resp = ptrType$16.nil;
err = $ifaceNil;
c = this;
_r = NewRequest("POST", url$1, body$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
req = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = ptrType$16.nil;
_tmp$1 = err;
resp = _tmp;
err = _tmp$1;
$s = -1; return [resp, err];
}
new Header(req.Header).Set("Content-Type", contentType);
_r$1 = c.Do(req); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple$1 = _r$1;
resp = _tuple$1[0];
err = _tuple$1[1];
$s = -1; return [resp, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Client.ptr.prototype.Post }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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;
};
Client.prototype.Post = function(url$1, contentType, body$1) { return this.$val.Post(url$1, contentType, body$1); };
Client.ptr.prototype.PostForm = function(url$1, data) {
var $ptr, _arg, _arg$1, _r, _r$1, _r$2, _tuple, c, data, err, resp, url$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _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:
resp = ptrType$16.nil;
err = $ifaceNil;
c = this;
_arg = url$1;
_r = new url.Values(data).Encode(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r$1 = strings.NewReader(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_arg$1 = _r$1;
_r$2 = c.Post(_arg, "application/x-www-form-urlencoded", _arg$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple = _r$2;
resp = _tuple[0];
err = _tuple[1];
$s = -1; return [resp, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Client.ptr.prototype.PostForm }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $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;
};
Client.prototype.PostForm = function(url$1, data) { return this.$val.PostForm(url$1, data); };
Client.ptr.prototype.Head = function(url$1) {
var $ptr, _r, _r$1, _tmp, _tmp$1, _tuple, _tuple$1, c, err, req, resp, url$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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:
resp = ptrType$16.nil;
err = $ifaceNil;
c = this;
_r = NewRequest("HEAD", url$1, $ifaceNil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
req = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = ptrType$16.nil;
_tmp$1 = err;
resp = _tmp;
err = _tmp$1;
$s = -1; return [resp, err];
}
_r$1 = c.Do(req); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple$1 = _r$1;
resp = _tuple$1[0];
err = _tuple$1[1];
$s = -1; return [resp, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Client.ptr.prototype.Head }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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;
};
Client.prototype.Head = function(url$1) { return this.$val.Head(url$1); };
cancelTimerBody.ptr.prototype.Read = function(p) {
var $ptr, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, b, err, n, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
n = 0;
err = $ifaceNil;
b = this;
_r = b.rc.Read(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
if ($interfaceIsEqual(err, $ifaceNil)) {
_tmp = n;
_tmp$1 = $ifaceNil;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
$r = b.stop(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if ($interfaceIsEqual(err, io.EOF)) {
_tmp$2 = n;
_tmp$3 = err;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
}
_r$1 = b.reqDidTimeout(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
/* */ if (_r$1) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (_r$1) { */ case 3:
_r$2 = err.Error(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
err = new httpError.ptr(_r$2 + " (Client.Timeout exceeded while reading body)", true);
/* } */ case 4:
_tmp$4 = n;
_tmp$5 = err;
n = _tmp$4;
err = _tmp$5;
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: cancelTimerBody.ptr.prototype.Read }; } $f.$ptr = $ptr; $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._tuple = _tuple; $f.b = b; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
};
cancelTimerBody.prototype.Read = function(p) { return this.$val.Read(p); };
cancelTimerBody.ptr.prototype.Close = function() {
var $ptr, _r, b, err, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; b = $f.b; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
b = this;
_r = b.rc.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
$r = b.stop(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return err;
/* */ } return; } if ($f === undefined) { $f = { $blk: cancelTimerBody.ptr.prototype.Close }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
};
cancelTimerBody.prototype.Close = function() { return this.$val.Close(); };
shouldCopyHeaderOnRedirect = function(headerKey, initial, dest) {
var $ptr, _1, _r, _r$1, dest, dhost, headerKey, ihost, initial, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; 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:
_1 = CanonicalHeaderKey(headerKey);
/* */ if (_1 === ("Authorization") || _1 === ("Www-Authenticate") || _1 === ("Cookie") || _1 === ("Cookie2")) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (_1 === ("Authorization") || _1 === ("Www-Authenticate") || _1 === ("Cookie") || _1 === ("Cookie2")) { */ case 2:
_r = strings.ToLower(initial.Host); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
ihost = _r;
_r$1 = strings.ToLower(dest.Host); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
dhost = _r$1;
$s = -1; return isDomainOrSubdomain(dhost, ihost);
/* } */ case 3:
case 1:
$s = -1; return true;
/* */ } return; } if ($f === undefined) { $f = { $blk: shouldCopyHeaderOnRedirect }; } $f.$ptr = $ptr; $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f.dest = dest; $f.dhost = dhost; $f.headerKey = headerKey; $f.ihost = ihost; $f.initial = initial; $f.$s = $s; $f.$r = $r; return $f;
};
isDomainOrSubdomain = function(sub, parent) {
var $ptr, parent, sub;
if (sub === parent) {
return true;
}
if (!strings.HasSuffix(sub, parent)) {
return false;
}
return sub.charCodeAt(((sub.length - parent.length >> 0) - 1 >> 0)) === 46;
};
readSetCookies = function(h) {
var $ptr, _1, _entry, _entry$1, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _entry = $f._entry; _entry$1 = $f._entry$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; _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:
cookieCount = (_entry = h[$String.keyFor("Set-Cookie")], _entry !== undefined ? _entry.v : sliceType$1.nil).$length;
if (cookieCount === 0) {
$s = -1; return new sliceType$7([]);
}
cookies = $makeSlice(sliceType$7, 0, cookieCount);
_ref = (_entry$1 = h[$String.keyFor("Set-Cookie")], _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil);
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
line = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_r = strings.TrimSpace(line); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r$1 = strings.Split(_r, ";"); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
parts = _r$1;
/* */ if ((parts.$length === 1) && (0 >= parts.$length ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + 0]) === "") { $s = 5; continue; }
/* */ $s = 6; continue;
/* if ((parts.$length === 1) && (0 >= parts.$length ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + 0]) === "") { */ case 5:
_i++;
/* continue; */ $s = 1; continue;
/* } */ case 6:
_r$2 = 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$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
(0 >= parts.$length ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + 0] = _r$2);
j = strings.Index((0 >= parts.$length ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + 0]), "=");
/* */ if (j < 0) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (j < 0) { */ case 8:
_i++;
/* continue; */ $s = 1; continue;
/* } */ case 9:
_tmp = $substring((0 >= parts.$length ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + 0]), 0, j);
_tmp$1 = $substring((0 >= parts.$length ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + 0]), (j + 1 >> 0));
name = _tmp;
value = _tmp$1;
_r$3 = isCookieNameValid(name); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
/* */ if (!_r$3) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (!_r$3) { */ case 10:
_i++;
/* continue; */ $s = 1; continue;
/* } */ case 11:
_tuple = parseCookieValue(value, true);
value = _tuple[0];
ok = _tuple[1];
/* */ if (!ok) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (!ok) { */ case 13:
_i++;
/* continue; */ $s = 1; continue;
/* } */ case 14:
c = new Cookie.ptr(name, value, "", "", new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil), "", 0, false, false, line, sliceType$1.nil);
i = 1;
/* while (true) { */ case 15:
/* if (!(i < parts.$length)) { break; } */ if(!(i < parts.$length)) { $s = 16; continue; }
_r$4 = 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$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i] = _r$4);
/* */ if (((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i]).length === 0) { $s = 18; continue; }
/* */ $s = 19; continue;
/* if (((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i]).length === 0) { */ case 18:
i = i + (1) >> 0;
/* continue; */ $s = 15; continue;
/* } */ case 19:
_tmp$2 = ((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i]);
_tmp$3 = "";
attr = _tmp$2;
val = _tmp$3;
j$1 = strings.Index(attr, "=");
if (j$1 >= 0) {
_tmp$4 = $substring(attr, 0, j$1);
_tmp$5 = $substring(attr, (j$1 + 1 >> 0));
attr = _tmp$4;
val = _tmp$5;
}
_r$5 = strings.ToLower(attr); /* */ $s = 20; case 20: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
lowerAttr = _r$5;
_tuple$1 = parseCookieValue(val, false);
val = _tuple$1[0];
ok = _tuple$1[1];
/* */ if (!ok) { $s = 21; continue; }
/* */ $s = 22; continue;
/* if (!ok) { */ case 21:
c.Unparsed = $append(c.Unparsed, ((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i]));
i = i + (1) >> 0;
/* continue; */ $s = 15; continue;
/* } */ case 22:
_1 = lowerAttr;
/* */ if (_1 === ("secure")) { $s = 24; continue; }
/* */ if (_1 === ("httponly")) { $s = 25; continue; }
/* */ if (_1 === ("domain")) { $s = 26; continue; }
/* */ if (_1 === ("max-age")) { $s = 27; continue; }
/* */ if (_1 === ("expires")) { $s = 28; continue; }
/* */ if (_1 === ("path")) { $s = 29; continue; }
/* */ $s = 30; continue;
/* if (_1 === ("secure")) { */ case 24:
c.Secure = true;
i = i + (1) >> 0;
/* continue; */ $s = 15; continue;
$s = 30; continue;
/* } else if (_1 === ("httponly")) { */ case 25:
c.HttpOnly = true;
i = i + (1) >> 0;
/* continue; */ $s = 15; continue;
$s = 30; continue;
/* } else if (_1 === ("domain")) { */ case 26:
c.Domain = val;
i = i + (1) >> 0;
/* continue; */ $s = 15; continue;
$s = 30; continue;
/* } else if (_1 === ("max-age")) { */ case 27:
_tuple$2 = strconv.Atoi(val);
secs = _tuple$2[0];
err = _tuple$2[1];
if (!($interfaceIsEqual(err, $ifaceNil)) || !((secs === 0)) && (val.charCodeAt(0) === 48)) {
/* break; */ $s = 23; continue;
}
if (secs <= 0) {
secs = -1;
}
c.MaxAge = secs;
i = i + (1) >> 0;
/* continue; */ $s = 15; continue;
$s = 30; continue;
/* } else if (_1 === ("expires")) { */ case 28:
c.RawExpires = val;
_r$6 = time.Parse("Mon, 02 Jan 2006 15:04:05 MST", val); /* */ $s = 31; case 31: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_tuple$3 = _r$6;
exptime = $clone(_tuple$3[0], time.Time);
err$1 = _tuple$3[1];
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 32; continue; }
/* */ $s = 33; continue;
/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 32:
_r$7 = time.Parse("Mon, 02-Jan-2006 15:04:05 MST", val); /* */ $s = 34; case 34: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_tuple$4 = _r$7;
time.Time.copy(exptime, _tuple$4[0]);
err$1 = _tuple$4[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
time.Time.copy(c.Expires, new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil));
/* break; */ $s = 23; continue;
}
/* } */ case 33:
time.Time.copy(c.Expires, $clone(exptime, time.Time).UTC());
i = i + (1) >> 0;
/* continue; */ $s = 15; continue;
$s = 30; continue;
/* } else if (_1 === ("path")) { */ case 29:
c.Path = val;
i = i + (1) >> 0;
/* continue; */ $s = 15; continue;
/* } */ case 30:
case 23:
c.Unparsed = $append(c.Unparsed, ((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i]));
i = i + (1) >> 0;
/* } */ $s = 15; continue; case 16:
cookies = $append(cookies, c);
_i++;
/* } */ $s = 1; continue; case 2:
$s = -1; return cookies;
/* */ } return; } if ($f === undefined) { $f = { $blk: readSetCookies }; } $f.$ptr = $ptr; $f._1 = _1; $f._entry = _entry; $f._entry$1 = _entry$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._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;
};
Cookie.ptr.prototype.String = function() {
var $ptr, _r, _r$1, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
c = this;
if (c === ptrType$24.nil) { _v = true; $s = 3; continue s; }
_r = isCookieNameValid(c.Name); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_v = !_r; case 3:
/* */ if (_v) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (_v) { */ case 1:
$s = -1; return "";
/* } */ case 2:
b = new bytes.Buffer.ptr(sliceType$2.nil, 0, arrayType.zero(), 0);
_r$1 = sanitizeCookieName(c.Name); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$2 = b.WriteString(_r$1); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
b.WriteRune(61);
_r$3 = sanitizeCookieValue(c.Value); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$4 = b.WriteString(_r$3); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_r$4;
/* */ if (c.Path.length > 0) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (c.Path.length > 0) { */ case 9:
b.WriteString("; Path=");
_r$5 = sanitizeCookiePath(c.Path); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_r$6 = b.WriteString(_r$5); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_r$6;
/* } */ case 10:
/* */ if (c.Domain.length > 0) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (c.Domain.length > 0) { */ case 13:
/* */ if (validCookieDomain(c.Domain)) { $s = 15; continue; }
/* */ $s = 16; continue;
/* if (validCookieDomain(c.Domain)) { */ case 15:
d = c.Domain;
if (d.charCodeAt(0) === 46) {
d = $substring(d, 1);
}
b.WriteString("; Domain=");
b.WriteString(d);
$s = 17; continue;
/* } else { */ case 16:
$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; }
/* } */ case 17:
/* } */ case 14:
_r$7 = validCookieExpires($clone(c.Expires, time.Time)); /* */ $s = 21; case 21: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
/* */ if (_r$7) { $s = 19; continue; }
/* */ $s = 20; continue;
/* if (_r$7) { */ case 19:
b.WriteString("; Expires=");
b2 = b.Bytes();
b.Reset();
_r$8 = $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$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_r$9 = b.Write(_r$8); /* */ $s = 23; case 23: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
_r$9;
/* } */ case 20:
if (c.MaxAge > 0) {
b.WriteString("; Max-Age=");
b2$1 = b.Bytes();
b.Reset();
b.Write(strconv.AppendInt(b2$1, (new $Int64(0, c.MaxAge)), 10));
} else if (c.MaxAge < 0) {
b.WriteString("; Max-Age=0");
}
if (c.HttpOnly) {
b.WriteString("; HttpOnly");
}
if (c.Secure) {
b.WriteString("; Secure");
}
$s = -1; return b.String();
/* */ } return; } if ($f === undefined) { $f = { $blk: Cookie.ptr.prototype.String }; } $f.$ptr = $ptr; $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._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;
};
Cookie.prototype.String = function() { return this.$val.String(); };
readCookies = function(h, filter) {
var $ptr, _entry, _i, _r, _r$1, _r$2, _r$3, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, cookies, filter, h, i, j, line, lines, name, ok, ok$1, parsedPairs, parts, val, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _i = $f._i; _r = $f._r; _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; _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; parsedPairs = $f.parsedPairs; parts = $f.parts; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_tuple = (_entry = h[$String.keyFor("Cookie")], _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
lines = _tuple[0];
ok = _tuple[1];
if (!ok) {
$s = -1; return new sliceType$7([]);
}
cookies = new sliceType$7([]);
_ref = lines;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
line = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_r = strings.TrimSpace(line); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r$1 = strings.Split(_r, ";"); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
parts = _r$1;
/* */ if ((parts.$length === 1) && (0 >= parts.$length ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + 0]) === "") { $s = 5; continue; }
/* */ $s = 6; continue;
/* if ((parts.$length === 1) && (0 >= parts.$length ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + 0]) === "") { */ case 5:
_i++;
/* continue; */ $s = 1; continue;
/* } */ case 6:
parsedPairs = 0;
i = 0;
/* while (true) { */ case 7:
/* if (!(i < parts.$length)) { break; } */ if(!(i < parts.$length)) { $s = 8; continue; }
_r$2 = 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$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i] = _r$2);
/* */ if (((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i]).length === 0) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i]).length === 0) { */ case 10:
i = i + (1) >> 0;
/* continue; */ $s = 7; continue;
/* } */ case 11:
_tmp = ((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i]);
_tmp$1 = "";
name = _tmp;
val = _tmp$1;
j = strings.Index(name, "=");
if (j >= 0) {
_tmp$2 = $substring(name, 0, j);
_tmp$3 = $substring(name, (j + 1 >> 0));
name = _tmp$2;
val = _tmp$3;
}
_r$3 = isCookieNameValid(name); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
/* */ if (!_r$3) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (!_r$3) { */ case 12:
i = i + (1) >> 0;
/* continue; */ $s = 7; continue;
/* } */ case 13:
if (!(filter === "") && !(filter === name)) {
i = i + (1) >> 0;
/* continue; */ $s = 7; continue;
}
_tuple$1 = parseCookieValue(val, true);
val = _tuple$1[0];
ok$1 = _tuple$1[1];
if (!ok$1) {
i = i + (1) >> 0;
/* continue; */ $s = 7; continue;
}
cookies = $append(cookies, new Cookie.ptr(name, val, "", "", new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil), "", 0, false, false, "", sliceType$1.nil));
parsedPairs = parsedPairs + (1) >> 0;
i = i + (1) >> 0;
/* } */ $s = 7; continue; case 8:
_i++;
/* } */ $s = 1; continue; case 2:
$s = -1; return cookies;
/* */ } return; } if ($f === undefined) { $f = { $blk: readCookies }; } $f.$ptr = $ptr; $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._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.parsedPairs = parsedPairs; $f.parts = parts; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
};
validCookieDomain = function(v) {
var $ptr, v;
if (isCookieDomainName(v)) {
return true;
}
if (!(net.ParseIP(v) === net.IP.nil) && !strings.Contains(v, ":")) {
return true;
}
return false;
};
validCookieExpires = function(t) {
var $ptr, _r, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = $clone(t, time.Time).Year(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r >= 1601;
/* */ } return; } if ($f === undefined) { $f = { $blk: validCookieExpires }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
isCookieDomainName = function(s) {
var $ptr, c, i, last, ok, partlen, s;
if (s.length === 0) {
return false;
}
if (s.length > 255) {
return false;
}
if (s.charCodeAt(0) === 46) {
s = $substring(s, 1);
}
last = 46;
ok = false;
partlen = 0;
i = 0;
while (true) {
if (!(i < s.length)) { break; }
c = s.charCodeAt(i);
if (97 <= c && c <= 122 || 65 <= c && c <= 90) {
ok = true;
partlen = partlen + (1) >> 0;
} else if (48 <= c && c <= 57) {
partlen = partlen + (1) >> 0;
} else if ((c === 45)) {
if (last === 46) {
return false;
}
partlen = partlen + (1) >> 0;
} else if ((c === 46)) {
if ((last === 46) || (last === 45)) {
return false;
}
if (partlen > 63 || (partlen === 0)) {
return false;
}
partlen = 0;
} else {
return false;
}
last = c;
i = i + (1) >> 0;
}
if ((last === 45) || partlen > 63) {
return false;
}
return ok;
};
sanitizeCookieName = function(n) {
var $ptr, _r, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = cookieNameSanitizer.Replace(n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: sanitizeCookieName }; } $f.$ptr = $ptr; $f._r = _r; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
};
sanitizeCookieValue = function(v) {
var $ptr, _r, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = sanitizeOrWarn("Cookie.Value", validCookieValueByte, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
v = _r;
if (v.length === 0) {
$s = -1; return v;
}
if ((v.charCodeAt(0) === 32) || (v.charCodeAt(0) === 44) || (v.charCodeAt((v.length - 1 >> 0)) === 32) || (v.charCodeAt((v.length - 1 >> 0)) === 44)) {
$s = -1; return "\"" + v + "\"";
}
$s = -1; return v;
/* */ } return; } if ($f === undefined) { $f = { $blk: sanitizeCookieValue }; } $f.$ptr = $ptr; $f._r = _r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
validCookieValueByte = function(b) {
var $ptr, b;
return 32 <= b && b < 127 && !((b === 34)) && !((b === 59)) && !((b === 92));
};
sanitizeCookiePath = function(v) {
var $ptr, _r, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = sanitizeOrWarn("Cookie.Path", validCookiePathByte, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: sanitizeCookiePath }; } $f.$ptr = $ptr; $f._r = _r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
validCookiePathByte = function(b) {
var $ptr, b;
return 32 <= b && b < 127 && !((b === 59));
};
sanitizeOrWarn = function(fieldName, valid, v) {
var $ptr, _r, _r$1, b, buf, fieldName, i, i$1, ok, v, valid, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; 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:
ok = true;
i = 0;
/* while (true) { */ case 1:
/* if (!(i < v.length)) { break; } */ if(!(i < v.length)) { $s = 2; continue; }
_r = valid(v.charCodeAt(i)); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (_r) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (_r) { */ case 3:
i = i + (1) >> 0;
/* continue; */ $s = 1; continue;
/* } */ case 4:
$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; }
ok = false;
/* break; */ $s = 2; continue;
/* } */ $s = 1; continue; case 2:
if (ok) {
$s = -1; return v;
}
buf = $makeSlice(sliceType$2, 0, v.length);
i$1 = 0;
/* while (true) { */ case 7:
/* if (!(i$1 < v.length)) { break; } */ if(!(i$1 < v.length)) { $s = 8; continue; }
b = v.charCodeAt(i$1);
_r$1 = valid(b); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
/* */ if (_r$1) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (_r$1) { */ case 9:
buf = $append(buf, b);
/* } */ case 10:
i$1 = i$1 + (1) >> 0;
/* } */ $s = 7; continue; case 8:
$s = -1; return ($bytesToString(buf));
/* */ } return; } if ($f === undefined) { $f = { $blk: sanitizeOrWarn }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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;
};
parseCookieValue = function(raw, allowDoubleQuote) {
var $ptr, allowDoubleQuote, i, raw;
if (allowDoubleQuote && raw.length > 1 && (raw.charCodeAt(0) === 34) && (raw.charCodeAt((raw.length - 1 >> 0)) === 34)) {
raw = $substring(raw, 1, (raw.length - 1 >> 0));
}
i = 0;
while (true) {
if (!(i < raw.length)) { break; }
if (!validCookieValueByte(raw.charCodeAt(i))) {
return ["", false];
}
i = i + (1) >> 0;
}
return [raw, true];
};
isCookieNameValid = function(raw) {
var $ptr, _r, raw, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; raw = $f.raw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
if (raw === "") {
$s = -1; return false;
}
_r = strings.IndexFunc(raw, isNotToken); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r < 0;
/* */ } return; } if ($f === undefined) { $f = { $blk: isCookieNameValid }; } $f.$ptr = $ptr; $f._r = _r; $f.raw = raw; $f.$s = $s; $f.$r = $r; return $f;
};
http2clientConnPool.ptr.prototype.GetClientConn = function(req, addr) {
var $ptr, _r, addr, p, req, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; addr = $f.addr; p = $f.p; req = $f.req; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
p = this;
_r = p.getClientConn(req, addr, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientConnPool.ptr.prototype.GetClientConn }; } $f.$ptr = $ptr; $f._r = _r; $f.addr = addr; $f.p = p; $f.req = req; $f.$s = $s; $f.$r = $r; return $f;
};
http2clientConnPool.prototype.GetClientConn = function(req, addr) { return this.$val.GetClientConn(req, addr); };
http2clientConnPool.ptr.prototype.getClientConn = function(req, addr, dialOnMiss) {
var $ptr, _entry, _i, _r, _r$1, _r$2, _ref, _tuple, addr, call, cc, cc$1, dialOnMiss, err, p, req, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _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:
p = this;
/* */ if (http2isConnectionCloseRequest(req) && dialOnMiss) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (http2isConnectionCloseRequest(req) && dialOnMiss) { */ case 1:
_r = p.t.dialClientConn(addr, true); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
cc = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$27.nil, err];
}
$s = -1; return [cc, $ifaceNil];
/* } */ case 2:
$r = p.mu.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_ref = (_entry = p.conns[$String.keyFor(addr)], _entry !== undefined ? _entry.v : sliceType$9.nil);
_i = 0;
/* while (true) { */ case 5:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 6; continue; }
cc$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_r$1 = cc$1.CanTakeNewRequest(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
/* */ if (_r$1) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (_r$1) { */ case 7:
$r = p.mu.Unlock(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return [cc$1, $ifaceNil];
/* } */ case 8:
_i++;
/* } */ $s = 5; continue; case 6:
/* */ if (!dialOnMiss) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if (!dialOnMiss) { */ case 11:
$r = p.mu.Unlock(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return [ptrType$27.nil, http2ErrNoCachedConn];
/* } */ case 12:
call = p.getStartDialLocked(addr);
$r = p.mu.Unlock(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$2 = $recv(call.done); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2[0];
$s = -1; return [call.res, call.err];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientConnPool.ptr.prototype.getClientConn }; } $f.$ptr = $ptr; $f._entry = _entry; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $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;
};
http2clientConnPool.prototype.getClientConn = function(req, addr, dialOnMiss) { return this.$val.getClientConn(req, addr, dialOnMiss); };
http2clientConnPool.ptr.prototype.getStartDialLocked = function(addr) {
var $ptr, _entry, _key, _tuple, addr, call, call$1, ok, p;
p = this;
_tuple = (_entry = p.dialing[$String.keyFor(addr)], _entry !== undefined ? [_entry.v, true] : [ptrType$28.nil, false]);
call = _tuple[0];
ok = _tuple[1];
if (ok) {
return call;
}
call$1 = new http2dialCall.ptr(p, new $Chan(structType, 0), ptrType$27.nil, $ifaceNil);
if (p.dialing === false) {
p.dialing = {};
}
_key = addr; (p.dialing || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: call$1 };
$go($methodVal(call$1, "dial"), [addr]);
return call$1;
};
http2clientConnPool.prototype.getStartDialLocked = function(addr) { return this.$val.getStartDialLocked(addr); };
http2dialCall.ptr.prototype.dial = function(addr) {
var $ptr, _r, _tuple, addr, c, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; addr = $f.addr; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
_r = c.p.t.dialClientConn(addr, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
c.res = _tuple[0];
c.err = _tuple[1];
$close(c.done);
$r = c.p.mu.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
delete c.p.dialing[$String.keyFor(addr)];
if ($interfaceIsEqual(c.err, $ifaceNil)) {
c.p.addConnLocked(addr, c.res);
}
$r = c.p.mu.Unlock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2dialCall.ptr.prototype.dial }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.addr = addr; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
};
http2dialCall.prototype.dial = function(addr) { return this.$val.dial(addr); };
http2clientConnPool.ptr.prototype.addConnIfNeeded = function(key, t, c) {
var $ptr, _entry, _entry$1, _i, _key, _r, _r$1, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, c, call, cc, dup, err, key, p, t, used, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _key = $f._key; _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; _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:
used = false;
err = $ifaceNil;
p = this;
$r = p.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_ref = (_entry = p.conns[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$9.nil);
_i = 0;
/* while (true) { */ case 2:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
cc = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_r = cc.CanTakeNewRequest(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (_r) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (_r) { */ case 4:
$r = p.mu.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_tmp = false;
_tmp$1 = $ifaceNil;
used = _tmp;
err = _tmp$1;
$s = -1; return [used, err];
/* } */ case 5:
_i++;
/* } */ $s = 2; continue; case 3:
_tuple = (_entry$1 = p.addConnCalls[$String.keyFor(key)], _entry$1 !== undefined ? [_entry$1.v, true] : [ptrType$29.nil, false]);
call = _tuple[0];
dup = _tuple[1];
/* */ if (!dup) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (!dup) { */ case 8:
if (p.addConnCalls === false) {
p.addConnCalls = {};
}
call = new http2addConnCall.ptr(p, new $Chan(structType, 0), $ifaceNil);
_key = key; (p.addConnCalls || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: call };
$go($methodVal(call, "run"), [t, key, c]);
/* } */ case 9:
$r = p.mu.Unlock(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$1 = $recv(call.done); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1[0];
if (!($interfaceIsEqual(call.err, $ifaceNil))) {
_tmp$2 = false;
_tmp$3 = call.err;
used = _tmp$2;
err = _tmp$3;
$s = -1; return [used, err];
}
_tmp$4 = !dup;
_tmp$5 = $ifaceNil;
used = _tmp$4;
err = _tmp$5;
$s = -1; return [used, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientConnPool.ptr.prototype.addConnIfNeeded }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._key = _key; $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._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;
};
http2clientConnPool.prototype.addConnIfNeeded = function(key, t, c) { return this.$val.addConnIfNeeded(key, t, c); };
http2addConnCall.ptr.prototype.run = function(t, key, tc) {
var $ptr, _r, _tuple, c, cc, err, key, p, t, tc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
c = this;
_r = t.NewClientConn(tc); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
cc = _tuple[0];
err = _tuple[1];
p = c.p;
$r = p.mu.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (!($interfaceIsEqual(err, $ifaceNil))) {
c.err = err;
} else {
p.addConnLocked(key, cc);
}
delete p.addConnCalls[$String.keyFor(key)];
$r = p.mu.Unlock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$close(c.done);
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2addConnCall.ptr.prototype.run }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
http2addConnCall.prototype.run = function(t, key, tc) { return this.$val.run(t, key, tc); };
http2clientConnPool.ptr.prototype.addConnLocked = function(key, cc) {
var $ptr, _entry, _entry$1, _entry$2, _i, _key, _key$1, _ref, cc, key, p, v;
p = this;
_ref = (_entry = p.conns[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$9.nil);
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (v === cc) {
return;
}
_i++;
}
if (p.conns === false) {
p.conns = {};
}
if (p.keys === false) {
p.keys = {};
}
_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$9.nil), cc) };
_key$1 = cc; (p.keys || $throwRuntimeError("assignment to entry in nil map"))[ptrType$27.keyFor(_key$1)] = { k: _key$1, v: $append((_entry$2 = p.keys[ptrType$27.keyFor(cc)], _entry$2 !== undefined ? _entry$2.v : sliceType$1.nil), key) };
};
http2clientConnPool.prototype.addConnLocked = function(key, cc) { return this.$val.addConnLocked(key, cc); };
http2clientConnPool.ptr.prototype.MarkDead = function(cc) {
var $ptr, _entry, _entry$1, _i, _key, _ref, _tuple, cc, key, newList, ok, p, vv, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
p = this;
$r = p.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(p.mu, "Unlock"), []]);
_ref = (_entry = p.keys[ptrType$27.keyFor(cc)], _entry !== undefined ? _entry.v : sliceType$1.nil);
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
key = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_tuple = (_entry$1 = p.conns[$String.keyFor(key)], _entry$1 !== undefined ? [_entry$1.v, true] : [sliceType$9.nil, false]);
vv = _tuple[0];
ok = _tuple[1];
if (!ok) {
_i++;
continue;
}
newList = http2filterOutClientConn(vv, cc);
if (newList.$length > 0) {
_key = key; (p.conns || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: newList };
} else {
delete p.conns[$String.keyFor(key)];
}
_i++;
}
delete p.keys[ptrType$27.keyFor(cc)];
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2clientConnPool.ptr.prototype.MarkDead }; } $f.$ptr = $ptr; $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; } }
};
http2clientConnPool.prototype.MarkDead = function(cc) { return this.$val.MarkDead(cc); };
http2clientConnPool.ptr.prototype.closeIdleConnections = function() {
var $ptr, _entry, _i, _i$1, _keys, _ref, _ref$1, cc, p, vv, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
p = this;
$r = p.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(p.mu, "Unlock"), []]);
_ref = p.conns;
_i = 0;
_keys = $keys(_ref);
/* while (true) { */ case 2:
/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 3; continue; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
/* continue; */ $s = 2; continue;
}
vv = _entry.v;
_ref$1 = vv;
_i$1 = 0;
/* while (true) { */ case 4:
/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 5; continue; }
cc = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
$r = cc.closeIfIdle(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_i$1++;
/* } */ $s = 4; continue; case 5:
_i++;
/* } */ $s = 2; continue; case 3:
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2clientConnPool.ptr.prototype.closeIdleConnections }; } $f.$ptr = $ptr; $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; } }
};
http2clientConnPool.prototype.closeIdleConnections = function() { return this.$val.closeIdleConnections(); };
http2filterOutClientConn = function(in$1, exclude) {
var $ptr, _i, _ref, exclude, in$1, out, v, x$3;
out = $subslice(in$1, 0, 0);
_ref = in$1;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (!(v === exclude)) {
out = $append(out, v);
}
_i++;
}
if (!((in$1.$length === out.$length))) {
(x$3 = in$1.$length - 1 >> 0, ((x$3 < 0 || x$3 >= in$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + x$3] = ptrType$27.nil));
}
return out;
};
http2noDialClientConnPool.ptr.prototype.GetClientConn = function(req, addr) {
var $ptr, _r, addr, p, req, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; addr = $f.addr; p = $f.p; req = $f.req; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
p = this;
_r = p.http2clientConnPool.getClientConn(req, addr, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2noDialClientConnPool.ptr.prototype.GetClientConn }; } $f.$ptr = $ptr; $f._r = _r; $f.addr = addr; $f.p = p; $f.req = req; $f.$s = $s; $f.$r = $r; return $f;
};
http2noDialClientConnPool.prototype.GetClientConn = function(req, addr) { return this.$val.GetClientConn(req, addr); };
http2configureTransport = function(t1) {
var $ptr, _key, _r, connPool, err, m, t1, t2, upgradeFn, x$3, x$4, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _key = $f._key; _r = $f._r; connPool = $f.connPool; err = $f.err; m = $f.m; t1 = $f.t1; t2 = $f.t2; upgradeFn = $f.upgradeFn; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
connPool = [connPool];
t2 = [t2];
connPool[0] = new http2clientConnPool.ptr(ptrType$14.nil, new sync.Mutex.ptr(0, 0), false, false, false, false);
t2[0] = new http2Transport.ptr($throwNilPointerError, ptrType$13.nil, (x$3 = new http2noDialClientConnPool.ptr(connPool[0]), new x$3.constructor.elem(x$3)), false, false, 0, t1, new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0), $ifaceNil);
connPool[0].t = t2[0];
_r = http2registerHTTPSProtocol(t1, (x$4 = new http2noDialH2RoundTripper.ptr(t2[0]), 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; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$14.nil, err];
}
if (t1.TLSClientConfig === ptrType$13.nil) {
t1.TLSClientConfig = new tls.Config.ptr($ifaceNil, $throwNilPointerError, sliceType$10.nil, false, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, ptrType$30.nil, sliceType$1.nil, "", 0, ptrType$30.nil, false, sliceType$11.nil, false, false, arrayType$2.zero(), $ifaceNil, 0, 0, sliceType$12.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$13.nil, ptrType$13.nil);
}
if (!http2strSliceContains(t1.TLSClientConfig.NextProtos, "h2")) {
t1.TLSClientConfig.NextProtos = $appendSlice(new sliceType$1(["h2"]), t1.TLSClientConfig.NextProtos);
}
if (!http2strSliceContains(t1.TLSClientConfig.NextProtos, "http/1.1")) {
t1.TLSClientConfig.NextProtos = $append(t1.TLSClientConfig.NextProtos, "http/1.1");
}
upgradeFn = (function(connPool, t2) { return function $b(authority, c) {
var $ptr, _r$1, _r$2, _tuple, addr, authority, c, err$1, used, x$5, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; addr = $f.addr; authority = $f.authority; c = $f.c; err$1 = $f.err$1; used = $f.used; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r$1 = http2authorityAddr("https", authority); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
addr = _r$1;
_r$2 = connPool[0].addConnIfNeeded(addr, t2[0], c); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple = _r$2;
used = _tuple[0];
err$1 = _tuple[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$go($methodVal(c, "Close"), []);
$s = -1; return (x$5 = new http2erringRoundTripper.ptr(err$1), new x$5.constructor.elem(x$5));
} else if (!used) {
$go($methodVal(c, "Close"), []);
}
$s = -1; return t2[0];
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.addr = addr; $f.authority = authority; $f.c = c; $f.err$1 = err$1; $f.used = used; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
}; })(connPool, t2);
m = t1.TLSNextProto;
if ($keys(m).length === 0) {
t1.TLSNextProto = $makeMap($String.keyFor, [{ k: "h2", v: upgradeFn }]);
} else {
_key = "h2"; (m || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: upgradeFn };
}
$s = -1; return [t2[0], $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2configureTransport }; } $f.$ptr = $ptr; $f._key = _key; $f._r = _r; $f.connPool = connPool; $f.err = err; $f.m = m; $f.t1 = t1; $f.t2 = t2; $f.upgradeFn = upgradeFn; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
};
http2registerHTTPSProtocol = function(t, rt) {
var $ptr, err, rt, t, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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);
err = [err];
err[0] = $ifaceNil;
$deferred.push([(function(err) { return function $b() {
var $ptr, _r, e, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
e = $recover();
/* */ if (!($interfaceIsEqual(e, $ifaceNil))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!($interfaceIsEqual(e, $ifaceNil))) { */ case 1:
_r = fmt.Errorf("%v", new sliceType([e])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err[0] = _r;
/* } */ case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
}; })(err), []]);
$r = t.RegisterProtocol("https", rt); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
err[0] = $ifaceNil;
$s = -1; return err[0];
/* */ } 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.$ptr = $ptr; $f.err = err; $f.rt = rt; $f.t = t; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
http2noDialH2RoundTripper.ptr.prototype.RoundTrip = function(req) {
var $ptr, _r, _tuple, err, req, res, rt, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
rt = this;
_r = rt.t.RoundTrip(req); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
res = _tuple[0];
err = _tuple[1];
if ($interfaceIsEqual(err, http2ErrNoCachedConn)) {
$s = -1; return [ptrType$16.nil, $pkg.ErrSkipAltProtocol];
}
$s = -1; return [res, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2noDialH2RoundTripper.ptr.prototype.RoundTrip }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.req = req; $f.res = res; $f.rt = rt; $f.$s = $s; $f.$r = $r; return $f;
};
http2noDialH2RoundTripper.prototype.RoundTrip = function(req) { return this.$val.RoundTrip(req); };
http2ErrCode.prototype.String = function() {
var $ptr, _entry, _r, _tuple, e, ok, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _r = $f._r; _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:
e = this.$val;
_tuple = (_entry = http2errCodeName[http2ErrCode.keyFor(e)], _entry !== undefined ? [_entry.v, true] : ["", false]);
s = _tuple[0];
ok = _tuple[1];
if (ok) {
$s = -1; return s;
}
_r = fmt.Sprintf("unknown error code 0x%x", new sliceType([new $Uint32(((e >>> 0)))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2ErrCode.prototype.String }; } $f.$ptr = $ptr; $f._entry = _entry; $f._r = _r; $f._tuple = _tuple; $f.e = e; $f.ok = ok; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(http2ErrCode).prototype.String = function() { return new http2ErrCode(this.$get()).String(); };
http2ConnectionError.prototype.Error = function() {
var $ptr, _r, e, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
e = this.$val;
_r = fmt.Sprintf("connection error: %s", new sliceType([new http2ErrCode(((e >>> 0)))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2ConnectionError.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(http2ConnectionError).prototype.Error = function() { return new http2ConnectionError(this.$get()).Error(); };
http2streamError = function(id, code) {
var $ptr, code, id;
return new http2StreamError.ptr(id, code, $ifaceNil);
};
http2StreamError.ptr.prototype.Error = function() {
var $ptr, _r, _r$1, e, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
e = this;
/* */ if (!($interfaceIsEqual(e.Cause, $ifaceNil))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!($interfaceIsEqual(e.Cause, $ifaceNil))) { */ case 1:
_r = 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 = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 2:
_r$1 = 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$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2StreamError.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
};
http2StreamError.prototype.Error = function() { return this.$val.Error(); };
http2goAwayFlowError.ptr.prototype.Error = function() {
var $ptr;
return "connection exceeded flow control window size";
};
http2goAwayFlowError.prototype.Error = function() { return this.$val.Error(); };
http2connError.ptr.prototype.Error = function() {
var $ptr, _r, e, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
e = this;
_r = 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 = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2connError.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
};
http2connError.prototype.Error = function() { return this.$val.Error(); };
http2pseudoHeaderError.prototype.Error = function() {
var $ptr, _r, e, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
e = this.$val;
_r = fmt.Sprintf("invalid pseudo-header %q", new sliceType([new $String((e))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2pseudoHeaderError.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(http2pseudoHeaderError).prototype.Error = function() { return new http2pseudoHeaderError(this.$get()).Error(); };
http2duplicatePseudoHeaderError.prototype.Error = function() {
var $ptr, _r, e, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
e = this.$val;
_r = fmt.Sprintf("duplicate pseudo-header %q", new sliceType([new $String((e))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2duplicatePseudoHeaderError.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(http2duplicatePseudoHeaderError).prototype.Error = function() { return new http2duplicatePseudoHeaderError(this.$get()).Error(); };
http2headerFieldNameError.prototype.Error = function() {
var $ptr, _r, e, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
e = this.$val;
_r = fmt.Sprintf("invalid header field name %q", new sliceType([new $String((e))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2headerFieldNameError.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(http2headerFieldNameError).prototype.Error = function() { return new http2headerFieldNameError(this.$get()).Error(); };
http2headerFieldValueError.prototype.Error = function() {
var $ptr, _r, e, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
e = this.$val;
_r = fmt.Sprintf("invalid header field value %q", new sliceType([new $String((e))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2headerFieldValueError.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(http2headerFieldValueError).prototype.Error = function() { return new http2headerFieldValueError(this.$get()).Error(); };
http2fixedBuffer.ptr.prototype.Read = function(p) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, b, err, n, p;
n = 0;
err = $ifaceNil;
b = this;
if (b.r === b.w) {
_tmp = 0;
_tmp$1 = http2errReadEmpty;
n = _tmp;
err = _tmp$1;
return [n, err];
}
n = $copySlice(p, $subslice(b.buf, b.r, b.w));
b.r = b.r + (n) >> 0;
if (b.r === b.w) {
b.r = 0;
b.w = 0;
}
_tmp$2 = n;
_tmp$3 = $ifaceNil;
n = _tmp$2;
err = _tmp$3;
return [n, err];
};
http2fixedBuffer.prototype.Read = function(p) { return this.$val.Read(p); };
http2fixedBuffer.ptr.prototype.Len = function() {
var $ptr, b;
b = this;
return b.w - b.r >> 0;
};
http2fixedBuffer.prototype.Len = function() { return this.$val.Len(); };
http2fixedBuffer.ptr.prototype.Write = function(p) {
var $ptr, _tmp, _tmp$1, b, err, n, p;
n = 0;
err = $ifaceNil;
b = this;
if (b.r > 0 && p.$length > (b.buf.$length - b.w >> 0)) {
$copySlice(b.buf, $subslice(b.buf, b.r, b.w));
b.w = b.w - (b.r) >> 0;
b.r = 0;
}
n = $copySlice($subslice(b.buf, b.w), p);
b.w = b.w + (n) >> 0;
if (n < p.$length) {
err = http2errWriteFull;
}
_tmp = n;
_tmp$1 = err;
n = _tmp;
err = _tmp$1;
return [n, err];
};
http2fixedBuffer.prototype.Write = function(p) { return this.$val.Write(p); };
http2flow.ptr.prototype.setConnFlow = function(cf) {
var $ptr, cf, f;
f = this;
f.conn = cf;
};
http2flow.prototype.setConnFlow = function(cf) { return this.$val.setConnFlow(cf); };
http2flow.ptr.prototype.available = function() {
var $ptr, f, n;
f = this;
n = f.n;
if (!(f.conn === ptrType$31.nil) && f.conn.n < n) {
n = f.conn.n;
}
return n;
};
http2flow.prototype.available = function() { return this.$val.available(); };
http2flow.ptr.prototype.take = function(n) {
var $ptr, f, n;
f = this;
if (n > f.available()) {
$panic(new $String("internal error: took too much"));
}
f.n = f.n - (n) >> 0;
if (!(f.conn === ptrType$31.nil)) {
f.conn.n = f.conn.n - (n) >> 0;
}
};
http2flow.prototype.take = function(n) { return this.$val.take(n); };
http2flow.ptr.prototype.add = function(n) {
var $ptr, f, n, remain;
f = this;
remain = 2147483647 - f.n >> 0;
if (n > remain) {
return false;
}
f.n = f.n + (n) >> 0;
return true;
};
http2flow.prototype.add = function(n) { return this.$val.add(n); };
http2FrameType.prototype.String = function() {
var $ptr, _entry, _r, _tuple, ok, s, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _r = $f._r; _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:
t = this.$val;
_tuple = (_entry = http2frameName[http2FrameType.keyFor(t)], _entry !== undefined ? [_entry.v, true] : ["", false]);
s = _tuple[0];
ok = _tuple[1];
if (ok) {
$s = -1; return s;
}
_r = fmt.Sprintf("UNKNOWN_FRAME_TYPE_%d", new sliceType([new $Uint8(((t << 24 >>> 24)))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2FrameType.prototype.String }; } $f.$ptr = $ptr; $f._entry = _entry; $f._r = _r; $f._tuple = _tuple; $f.ok = ok; $f.s = s; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(http2FrameType).prototype.String = function() { return new http2FrameType(this.$get()).String(); };
http2Flags.prototype.Has = function(v) {
var $ptr, f, v;
f = this.$val;
return (((f & v) >>> 0)) === v;
};
$ptrType(http2Flags).prototype.Has = function(v) { return new http2Flags(this.$get()).Has(v); };
http2typeFrameParser = function(t) {
var $ptr, _entry, f, t;
f = (_entry = http2frameParsers[http2FrameType.keyFor(t)], _entry !== undefined ? _entry.v : $throwNilPointerError);
if (!(f === $throwNilPointerError)) {
return f;
}
return http2parseUnknownFrame;
};
http2FrameHeader.ptr.prototype.Header = function() {
var $ptr, h;
h = this;
return h;
};
http2FrameHeader.prototype.Header = function() { return this.$val.Header(); };
http2FrameHeader.ptr.prototype.String = function() {
var $ptr, buf, h, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; buf = $f.buf; h = $f.h; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
buf = [buf];
h = this;
buf[0] = new bytes.Buffer.ptr(sliceType$2.nil, 0, arrayType.zero(), 0);
buf[0].WriteString("[FrameHeader ");
$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; }
buf[0].WriteByte(93);
$s = -1; return buf[0].String();
/* */ } return; } if ($f === undefined) { $f = { $blk: http2FrameHeader.ptr.prototype.String }; } $f.$ptr = $ptr; $f.buf = buf; $f.h = h; $f.$s = $s; $f.$r = $r; return $f;
};
http2FrameHeader.prototype.String = function() { return this.$val.String(); };
http2FrameHeader.ptr.prototype.writeDebug = function(buf) {
var $ptr, _entry, _entry$1, _r, _r$1, _r$2, _r$3, _r$4, buf, h, i, name, set, y, y$1, y$2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; 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:
h = this;
_r = new http2FrameType(h.Type).String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r$1 = buf.WriteString(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
/* */ if (!((h.Flags === 0))) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!((h.Flags === 0))) { */ case 3:
buf.WriteString(" flags=");
set = 0;
i = 0;
/* while (true) { */ case 5:
/* if (!(i < 8)) { break; } */ if(!(i < 8)) { $s = 6; continue; }
/* */ if (((h.Flags & (((y = i, y < 32 ? (1 << y) : 0) << 24 >>> 24))) >>> 0) === 0) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (((h.Flags & (((y = i, y < 32 ? (1 << y) : 0) << 24 >>> 24))) >>> 0) === 0) { */ case 7:
i = i + (1) << 24 >>> 24;
/* continue; */ $s = 5; continue;
/* } */ case 8:
set = set + (1) >> 0;
if (set > 1) {
buf.WriteByte(124);
}
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 : "");
/* */ if (!(name === "")) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (!(name === "")) { */ case 9:
buf.WriteString(name);
$s = 11; continue;
/* } else { */ case 10:
_r$2 = 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$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
/* } */ case 11:
i = i + (1) << 24 >>> 24;
/* } */ $s = 5; continue; case 6:
/* } */ case 4:
/* */ if (!((h.StreamID === 0))) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (!((h.StreamID === 0))) { */ case 13:
_r$3 = fmt.Fprintf(buf, " stream=%d", new sliceType([new $Uint32(h.StreamID)])); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$3;
/* } */ case 14:
_r$4 = fmt.Fprintf(buf, " len=%d", new sliceType([new $Uint32(h.Length)])); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_r$4;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2FrameHeader.ptr.prototype.writeDebug }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$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.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;
};
http2FrameHeader.prototype.writeDebug = function(buf) { return this.$val.writeDebug(buf); };
http2FrameHeader.ptr.prototype.checkValid = function() {
var $ptr, h;
h = this;
if (!h.valid) {
$panic(new $String("Frame accessor called on non-owned Frame"));
}
};
http2FrameHeader.prototype.checkValid = function() { return this.$val.checkValid(); };
http2FrameHeader.ptr.prototype.invalidate = function() {
var $ptr, h;
h = this;
h.valid = false;
};
http2FrameHeader.prototype.invalidate = function() { return this.$val.invalidate(); };
http2readFrameHeader = function(buf, r) {
var $ptr, _r, _tuple, buf, err, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
_r = io.ReadFull(r, $subslice(buf, 0, 9)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [new http2FrameHeader.ptr(false, 0, 0, 0, 0), err];
}
$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];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2readFrameHeader }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
http2Framer.ptr.prototype.maxHeaderListSize = function() {
var $ptr, fr;
fr = this;
if (fr.MaxHeaderListSize === 0) {
return 16777216;
}
return fr.MaxHeaderListSize;
};
http2Framer.prototype.maxHeaderListSize = function() { return this.$val.maxHeaderListSize(); };
http2Framer.ptr.prototype.startWrite = function(ftype, flags, streamID) {
var $ptr, f, flags, ftype, streamID;
f = this;
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)));
};
http2Framer.prototype.startWrite = function(ftype, flags, streamID) { return this.$val.startWrite(ftype, flags, streamID); };
http2Framer.ptr.prototype.endWrite = function() {
var $ptr, _r, _tuple, err, f, length, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
f = this;
length = f.wbuf.$length - 9 >> 0;
if (length >= 16777216) {
$s = -1; return http2ErrFrameTooLarge;
}
$unused($append($subslice(f.wbuf, 0, 0), (((length >> 16 >> 0) << 24 >>> 24)), (((length >> 8 >> 0) << 24 >>> 24)), ((length << 24 >>> 24))));
/* */ if (f.logWrites) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (f.logWrites) { */ case 1:
$r = f.logWrite(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
_r = f.w.Write(f.wbuf); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
if ($interfaceIsEqual(err, $ifaceNil) && !((n === f.wbuf.$length))) {
err = io.ErrShortWrite;
}
$s = -1; return err;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.endWrite }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.length = length; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
};
http2Framer.prototype.endWrite = function() { return this.$val.endWrite(); };
http2Framer.ptr.prototype.logWrite = function() {
var $ptr, _arg, _arg$1, _r, _r$1, _tuple, err, f, fr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; _r$1 = $f._r$1; _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:
f = this;
if (f.debugFramer === ptrType$32.nil) {
f.debugFramerBuf = new bytes.Buffer.ptr(sliceType$2.nil, 0, arrayType.zero(), 0);
f.debugFramer = http2NewFramer($ifaceNil, f.debugFramerBuf);
f.debugFramer.logReads = false;
f.debugFramer.AllowIllegalReads = true;
}
f.debugFramerBuf.Write(f.wbuf);
_r = f.debugFramer.ReadFrame(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
fr = _tuple[0];
err = _tuple[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
$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; }
$s = -1; return;
/* } */ case 3:
_arg = f;
_r$1 = http2summarizeFrame(fr); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_arg$1 = new $String(_r$1);
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.logWrite }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.fr = fr; $f.$s = $s; $f.$r = $r; return $f;
};
http2Framer.prototype.logWrite = function() { return this.$val.logWrite(); };
http2Framer.ptr.prototype.writeByte = function(v) {
var $ptr, f, v;
f = this;
f.wbuf = $append(f.wbuf, v);
};
http2Framer.prototype.writeByte = function(v) { return this.$val.writeByte(v); };
http2Framer.ptr.prototype.writeBytes = function(v) {
var $ptr, f, v;
f = this;
f.wbuf = $appendSlice(f.wbuf, v);
};
http2Framer.prototype.writeBytes = function(v) { return this.$val.writeBytes(v); };
http2Framer.ptr.prototype.writeUint16 = function(v) {
var $ptr, f, v;
f = this;
f.wbuf = $append(f.wbuf, (((v >>> 8 << 16 >>> 16) << 24 >>> 24)), ((v << 24 >>> 24)));
};
http2Framer.prototype.writeUint16 = function(v) { return this.$val.writeUint16(v); };
http2Framer.ptr.prototype.writeUint32 = function(v) {
var $ptr, f, v;
f = this;
f.wbuf = $append(f.wbuf, (((v >>> 24 >>> 0) << 24 >>> 24)), (((v >>> 16 >>> 0) << 24 >>> 24)), (((v >>> 8 >>> 0) << 24 >>> 24)), ((v << 24 >>> 24)));
};
http2Framer.prototype.writeUint32 = function(v) { return this.$val.writeUint32(v); };
http2NewFramer = function(w, r) {
var $ptr, fr, r, w;
fr = new http2Framer.ptr(r, $ifaceNil, $ifaceNil, 0, 0, arrayType$3.zero(), $throwNilPointerError, sliceType$2.nil, 0, w, sliceType$2.nil, false, false, ptrType$33.nil, 0, http2logFrameReads, http2logFrameWrites, ptrType$32.nil, ptrType$34.nil, log.Printf, log.Printf);
fr.getReadBuf = (function(size) {
var $ptr, size;
if (fr.readBuf.$capacity >= ((size >> 0))) {
return $subslice(fr.readBuf, 0, size);
}
fr.readBuf = $makeSlice(sliceType$2, size);
return fr.readBuf;
});
fr.SetMaxReadFrameSize(16777215);
return fr;
};
http2Framer.ptr.prototype.SetMaxReadFrameSize = function(v) {
var $ptr, fr, v;
fr = this;
if (v > 16777215) {
v = 16777215;
}
fr.maxReadSize = v;
};
http2Framer.prototype.SetMaxReadFrameSize = function(v) { return this.$val.SetMaxReadFrameSize(v); };
http2Framer.ptr.prototype.ErrorDetail = function() {
var $ptr, fr;
fr = this;
return fr.errDetail;
};
http2Framer.prototype.ErrorDetail = function() { return this.$val.ErrorDetail(); };
http2terminalReadFrameError = function(err) {
var $ptr, _tuple, err, ok;
_tuple = $assertType(err, http2StreamError, true);
ok = _tuple[1];
if (ok) {
return false;
}
return !($interfaceIsEqual(err, $ifaceNil));
};
http2Framer.ptr.prototype.ReadFrame = function() {
var $ptr, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _returncast, _tuple, _tuple$1, _tuple$2, _tuple$3, ce, err, err$1, err$2, f, fh, fr, ok, payload, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
fr = this;
fr.errDetail = $ifaceNil;
/* */ if (!($interfaceIsEqual(fr.lastFrame, $ifaceNil))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!($interfaceIsEqual(fr.lastFrame, $ifaceNil))) { */ case 1:
$r = fr.lastFrame.invalidate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
_r = http2readFrameHeader(new sliceType$2(fr.headerBuf), fr.r); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
fh = $clone(_tuple[0], http2FrameHeader);
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [$ifaceNil, err];
}
if (fh.Length > fr.maxReadSize) {
$s = -1; return [$ifaceNil, http2ErrFrameTooLarge];
}
_r$1 = fr.getReadBuf(fh.Length); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
payload = _r$1;
_r$2 = io.ReadFull(fr.r, payload); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$1 = _r$2;
err$1 = _tuple$1[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return [$ifaceNil, err$1];
}
_r$3 = http2typeFrameParser(fh.Type)($clone(fh, http2FrameHeader), payload); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$2 = _r$3;
f = _tuple$2[0];
err = _tuple$2[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tuple$3 = $assertType(err, http2connError, true);
ce = $clone(_tuple$3[0], http2connError);
ok = _tuple$3[1];
if (ok) {
$s = -1; return [$ifaceNil, fr.connError(ce.Code, ce.Reason)];
}
$s = -1; return [$ifaceNil, err];
}
_r$4 = fr.checkFrameOrder(f); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
err$2 = _r$4;
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return [$ifaceNil, err$2];
}
/* */ if (fr.logReads) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (fr.logReads) { */ case 9:
_arg = fr;
_r$5 = http2summarizeFrame(f); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_arg$1 = new $String(_r$5);
$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; }
/* } */ case 10:
/* */ if ((fh.Type === 1) && !(fr.ReadMetaHeaders === ptrType$33.nil)) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if ((fh.Type === 1) && !(fr.ReadMetaHeaders === ptrType$33.nil)) { */ case 13:
_r$6 = fr.readMetaFrame($assertType(f, ptrType$35)); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_returncast = _r$6;
$s = -1; return [_returncast[0], _returncast[1]];
/* } */ case 14:
$s = -1; return [f, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.ReadFrame }; } $f.$ptr = $ptr; $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._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;
};
http2Framer.prototype.ReadFrame = function() { return this.$val.ReadFrame(); };
http2Framer.ptr.prototype.connError = function(code, reason) {
var $ptr, code, fr, reason;
fr = this;
fr.errDetail = errors.New(reason);
return new http2ConnectionError(((code >>> 0)));
};
http2Framer.prototype.connError = function(code, reason) { return this.$val.connError(code, reason); };
http2Framer.ptr.prototype.checkFrameOrder = function(f) {
var $ptr, _1, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, f, fh, fr, last, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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 = $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; 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:
fr = this;
last = fr.lastFrame;
fr.lastFrame = f;
if (fr.AllowIllegalReads) {
$s = -1; return $ifaceNil;
}
_r = f.Header(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
fh = $clone(_r, http2FrameHeader);
/* */ if (!((fr.lastHeaderStream === 0))) { $s = 2; continue; }
/* */ if (fh.Type === 9) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!((fr.lastHeaderStream === 0))) { */ case 2:
/* */ if (!((fh.Type === 9))) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (!((fh.Type === 9))) { */ case 5:
_arg = new http2FrameType(fh.Type);
_arg$1 = new $Uint32(fh.StreamID);
_r$1 = last.Header(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_arg$2 = new http2FrameType(_r$1.Type);
_arg$3 = new $Uint32(fr.lastHeaderStream);
_r$2 = 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$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_arg$4 = _r$2;
_r$3 = fr.connError(1, _arg$4); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
$s = -1; return _r$3;
/* } */ case 6:
/* */ if (!((fh.StreamID === fr.lastHeaderStream))) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (!((fh.StreamID === fr.lastHeaderStream))) { */ case 10:
_r$4 = 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$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_arg$5 = _r$4;
_r$5 = fr.connError(1, _arg$5); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
$s = -1; return _r$5;
/* } */ case 11:
$s = 4; continue;
/* } else if (fh.Type === 9) { */ case 3:
_r$6 = fmt.Sprintf("unexpected CONTINUATION for stream %d", new sliceType([new $Uint32(fh.StreamID)])); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_arg$6 = _r$6;
_r$7 = fr.connError(1, _arg$6); /* */ $s = 15; case 15: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
$s = -1; return _r$7;
/* } */ case 4:
_1 = fh.Type;
if ((_1 === (1)) || (_1 === (9))) {
if (new http2Flags(fh.Flags).Has(4)) {
fr.lastHeaderStream = 0;
} else {
fr.lastHeaderStream = fh.StreamID;
}
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.checkFrameOrder }; } $f.$ptr = $ptr; $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 = _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.f = f; $f.fh = fh; $f.fr = fr; $f.last = last; $f.$s = $s; $f.$r = $r; return $f;
};
http2Framer.prototype.checkFrameOrder = function(f) { return this.$val.checkFrameOrder(f); };
http2DataFrame.ptr.prototype.StreamEnded = function() {
var $ptr, f;
f = this;
return new http2Flags(f.http2FrameHeader.Flags).Has(1);
};
http2DataFrame.prototype.StreamEnded = function() { return this.$val.StreamEnded(); };
http2DataFrame.ptr.prototype.Data = function() {
var $ptr, f;
f = this;
f.http2FrameHeader.checkValid();
return f.data;
};
http2DataFrame.prototype.Data = function() { return this.$val.Data(); };
http2parseDataFrame = function(fh, payload) {
var $ptr, _tuple, err, f, fh, padSize, payload, x$3, x$4;
if (fh.StreamID === 0) {
return [$ifaceNil, (x$3 = new http2connError.ptr(1, "DATA frame with stream ID 0"), new x$3.constructor.elem(x$3))];
}
f = new http2DataFrame.ptr($clone(fh, http2FrameHeader), sliceType$2.nil);
padSize = 0;
if (new http2Flags(fh.Flags).Has(8)) {
err = $ifaceNil;
_tuple = http2readByte(payload);
payload = _tuple[0];
padSize = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [$ifaceNil, err];
}
}
if (((padSize >> 0)) > payload.$length) {
return [$ifaceNil, (x$4 = new http2connError.ptr(1, "pad size larger than data payload"), new x$4.constructor.elem(x$4))];
}
f.data = $subslice(payload, 0, (payload.$length - ((padSize >> 0)) >> 0));
return [f, $ifaceNil];
};
http2validStreamIDOrZero = function(streamID) {
var $ptr, streamID;
return ((streamID & 2147483648) >>> 0) === 0;
};
http2validStreamID = function(streamID) {
var $ptr, streamID;
return !((streamID === 0)) && (((streamID & 2147483648) >>> 0) === 0);
};
http2Framer.ptr.prototype.WriteData = function(streamID, endStream, data) {
var $ptr, _r, data, endStream, f, streamID, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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:
f = this;
_r = f.WriteDataPadded(streamID, endStream, data, sliceType$2.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WriteData }; } $f.$ptr = $ptr; $f._r = _r; $f.data = data; $f.endStream = endStream; $f.f = f; $f.streamID = streamID; $f.$s = $s; $f.$r = $r; return $f;
};
http2Framer.prototype.WriteData = function(streamID, endStream, data) { return this.$val.WriteData(streamID, endStream, data); };
http2Framer.ptr.prototype.WriteDataPadded = function(streamID, endStream, data, pad) {
var $ptr, _r, data, endStream, f, flags, pad, streamID, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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:
f = this;
if (!http2validStreamID(streamID) && !f.AllowIllegalWrites) {
$s = -1; return http2errStreamID;
}
if (pad.$length > 255) {
$s = -1; return http2errPadLength;
}
flags = 0;
if (endStream) {
flags = (flags | (1)) >>> 0;
}
if (!(pad === sliceType$2.nil)) {
flags = (flags | (8)) >>> 0;
}
f.startWrite(0, flags, streamID);
if (!(pad === sliceType$2.nil)) {
f.wbuf = $append(f.wbuf, ((pad.$length << 24 >>> 24)));
}
f.wbuf = $appendSlice(f.wbuf, data);
f.wbuf = $appendSlice(f.wbuf, pad);
_r = f.endWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WriteDataPadded }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
http2Framer.prototype.WriteDataPadded = function(streamID, endStream, data, pad) { return this.$val.WriteDataPadded(streamID, endStream, data, pad); };
http2parseSettingsFrame = function(fh, p) {
var $ptr, _r, _tuple, f, fh, ok, p, v;
if (new http2Flags(fh.Flags).Has(1) && fh.Length > 0) {
return [$ifaceNil, new http2ConnectionError(6)];
}
if (!((fh.StreamID === 0))) {
return [$ifaceNil, new http2ConnectionError(1)];
}
if (!(((_r = p.$length % 6, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0))) {
return [$ifaceNil, new http2ConnectionError(6)];
}
f = new http2SettingsFrame.ptr($clone(fh, http2FrameHeader), p);
_tuple = f.Value(4);
v = _tuple[0];
ok = _tuple[1];
if (ok && v > 2147483647) {
return [$ifaceNil, new http2ConnectionError(3)];
}
return [f, $ifaceNil];
};
http2SettingsFrame.ptr.prototype.IsAck = function() {
var $ptr, f;
f = this;
return new http2Flags(f.http2FrameHeader.Flags).Has(1);
};
http2SettingsFrame.prototype.IsAck = function() { return this.$val.IsAck(); };
http2SettingsFrame.ptr.prototype.Value = function(s) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, buf, f, ok, s, settingID, v;
v = 0;
ok = false;
f = this;
f.http2FrameHeader.checkValid();
buf = f.p;
while (true) {
if (!(buf.$length > 0)) { break; }
settingID = (($clone(binary.BigEndian, binary.bigEndian).Uint16($subslice(buf, 0, 2)) << 16 >>> 16));
if (settingID === s) {
_tmp = $clone(binary.BigEndian, binary.bigEndian).Uint32($subslice(buf, 2, 6));
_tmp$1 = true;
v = _tmp;
ok = _tmp$1;
return [v, ok];
}
buf = $subslice(buf, 6);
}
_tmp$2 = 0;
_tmp$3 = false;
v = _tmp$2;
ok = _tmp$3;
return [v, ok];
};
http2SettingsFrame.prototype.Value = function(s) { return this.$val.Value(s); };
http2SettingsFrame.ptr.prototype.ForeachSetting = function(fn) {
var $ptr, _r, buf, err, f, fn, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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:
f = this;
f.http2FrameHeader.checkValid();
buf = f.p;
/* while (true) { */ case 1:
/* if (!(buf.$length > 0)) { break; } */ if(!(buf.$length > 0)) { $s = 2; continue; }
_r = 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 = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
buf = $subslice(buf, 6);
/* } */ $s = 1; continue; case 2:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2SettingsFrame.ptr.prototype.ForeachSetting }; } $f.$ptr = $ptr; $f._r = _r; $f.buf = buf; $f.err = err; $f.f = f; $f.fn = fn; $f.$s = $s; $f.$r = $r; return $f;
};
http2SettingsFrame.prototype.ForeachSetting = function(fn) { return this.$val.ForeachSetting(fn); };
http2Framer.ptr.prototype.WriteSettings = function(settings) {
var $ptr, _i, _r, _ref, f, s, settings, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _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:
f = this;
f.startWrite(4, 0, 0);
_ref = settings;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
s = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), http2Setting);
f.writeUint16(((s.ID << 16 >>> 16)));
f.writeUint32(s.Val);
_i++;
}
_r = f.endWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WriteSettings }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.f = f; $f.s = s; $f.settings = settings; $f.$s = $s; $f.$r = $r; return $f;
};
http2Framer.prototype.WriteSettings = function(settings) { return this.$val.WriteSettings(settings); };
http2Framer.ptr.prototype.WriteSettingsAck = function() {
var $ptr, _r, f, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
f = this;
f.startWrite(4, 1, 0);
_r = f.endWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WriteSettingsAck }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
};
http2Framer.prototype.WriteSettingsAck = function() { return this.$val.WriteSettingsAck(); };
http2PingFrame.ptr.prototype.IsAck = function() {
var $ptr, f;
f = this;
return new http2Flags(f.http2FrameHeader.Flags).Has(1);
};
http2PingFrame.prototype.IsAck = function() { return this.$val.IsAck(); };
http2parsePingFrame = function(fh, payload) {
var $ptr, f, fh, payload;
if (!((payload.$length === 8))) {
return [$ifaceNil, new http2ConnectionError(6)];
}
if (!((fh.StreamID === 0))) {
return [$ifaceNil, new http2ConnectionError(1)];
}
f = new http2PingFrame.ptr($clone(fh, http2FrameHeader), arrayType$4.zero());
$copySlice(new sliceType$2(f.Data), payload);
return [f, $ifaceNil];
};
http2Framer.ptr.prototype.WritePing = function(ack, data) {
var $ptr, _r, ack, data, f, flags, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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:
f = this;
flags = 0;
if (ack) {
flags = 1;
}
f.startWrite(6, flags, 0);
f.writeBytes(new sliceType$2(data));
_r = f.endWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WritePing }; } $f.$ptr = $ptr; $f._r = _r; $f.ack = ack; $f.data = data; $f.f = f; $f.flags = flags; $f.$s = $s; $f.$r = $r; return $f;
};
http2Framer.prototype.WritePing = function(ack, data) { return this.$val.WritePing(ack, data); };
http2GoAwayFrame.ptr.prototype.DebugData = function() {
var $ptr, f;
f = this;
f.http2FrameHeader.checkValid();
return f.debugData;
};
http2GoAwayFrame.prototype.DebugData = function() { return this.$val.DebugData(); };
http2parseGoAwayFrame = function(fh, p) {
var $ptr, fh, p;
if (!((fh.StreamID === 0))) {
return [$ifaceNil, new http2ConnectionError(1)];
}
if (p.$length < 8) {
return [$ifaceNil, new http2ConnectionError(6)];
}
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];
};
http2Framer.ptr.prototype.WriteGoAway = function(maxStreamID, code, debugData) {
var $ptr, _r, code, debugData, f, maxStreamID, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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:
f = this;
f.startWrite(7, 0, 0);
f.writeUint32((maxStreamID & 2147483647) >>> 0);
f.writeUint32(((code >>> 0)));
f.writeBytes(debugData);
_r = f.endWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WriteGoAway }; } $f.$ptr = $ptr; $f._r = _r; $f.code = code; $f.debugData = debugData; $f.f = f; $f.maxStreamID = maxStreamID; $f.$s = $s; $f.$r = $r; return $f;
};
http2Framer.prototype.WriteGoAway = function(maxStreamID, code, debugData) { return this.$val.WriteGoAway(maxStreamID, code, debugData); };
http2UnknownFrame.ptr.prototype.Payload = function() {
var $ptr, f;
f = this;
f.http2FrameHeader.checkValid();
return f.p;
};
http2UnknownFrame.prototype.Payload = function() { return this.$val.Payload(); };
http2parseUnknownFrame = function(fh, p) {
var $ptr, fh, p;
return [new http2UnknownFrame.ptr($clone(fh, http2FrameHeader), p), $ifaceNil];
};
http2parseWindowUpdateFrame = function(fh, p) {
var $ptr, fh, inc, p, x$3;
if (!((p.$length === 4))) {
return [$ifaceNil, new http2ConnectionError(6)];
}
inc = ($clone(binary.BigEndian, binary.bigEndian).Uint32($subslice(p, 0, 4)) & 2147483647) >>> 0;
if (inc === 0) {
if (fh.StreamID === 0) {
return [$ifaceNil, new http2ConnectionError(1)];
}
return [$ifaceNil, (x$3 = http2streamError(fh.StreamID, 1), new x$3.constructor.elem(x$3))];
}
return [new http2WindowUpdateFrame.ptr($clone(fh, http2FrameHeader), inc), $ifaceNil];
};
http2Framer.ptr.prototype.WriteWindowUpdate = function(streamID, incr) {
var $ptr, _r, f, incr, streamID, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; f = $f.f; incr = $f.incr; streamID = $f.streamID; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
f = this;
if ((incr < 1 || incr > 2147483647) && !f.AllowIllegalWrites) {
$s = -1; return errors.New("illegal window increment value");
}
f.startWrite(8, 0, streamID);
f.writeUint32(incr);
_r = f.endWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WriteWindowUpdate }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.incr = incr; $f.streamID = streamID; $f.$s = $s; $f.$r = $r; return $f;
};
http2Framer.prototype.WriteWindowUpdate = function(streamID, incr) { return this.$val.WriteWindowUpdate(streamID, incr); };
http2HeadersFrame.ptr.prototype.HeaderBlockFragment = function() {
var $ptr, f;
f = this;
f.http2FrameHeader.checkValid();
return f.headerFragBuf;
};
http2HeadersFrame.prototype.HeaderBlockFragment = function() { return this.$val.HeaderBlockFragment(); };
http2HeadersFrame.ptr.prototype.HeadersEnded = function() {
var $ptr, f;
f = this;
return new http2Flags(f.http2FrameHeader.Flags).Has(4);
};
http2HeadersFrame.prototype.HeadersEnded = function() { return this.$val.HeadersEnded(); };
http2HeadersFrame.ptr.prototype.StreamEnded = function() {
var $ptr, f;
f = this;
return new http2Flags(f.http2FrameHeader.Flags).Has(1);
};
http2HeadersFrame.prototype.StreamEnded = function() { return this.$val.StreamEnded(); };
http2HeadersFrame.ptr.prototype.HasPriority = function() {
var $ptr, f;
f = this;
return new http2Flags(f.http2FrameHeader.Flags).Has(32);
};
http2HeadersFrame.prototype.HasPriority = function() { return this.$val.HasPriority(); };
http2parseHeadersFrame = function(fh, p) {
var $ptr, _, _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, v, x$3, x$4;
_ = $ifaceNil;
err = $ifaceNil;
hf = new http2HeadersFrame.ptr($clone(fh, http2FrameHeader), new http2PriorityParam.ptr(0, false, 0), sliceType$2.nil);
if (fh.StreamID === 0) {
_tmp = $ifaceNil;
_tmp$1 = (x$3 = new http2connError.ptr(1, "HEADERS frame with stream ID 0"), new x$3.constructor.elem(x$3));
_ = _tmp;
err = _tmp$1;
return [_, err];
}
padLength = 0;
if (new http2Flags(fh.Flags).Has(8)) {
_tuple = http2readByte(p);
p = _tuple[0];
padLength = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [_, err];
}
}
if (new http2Flags(fh.Flags).Has(32)) {
v = 0;
_tuple$1 = http2readUint32(p);
p = _tuple$1[0];
v = _tuple$1[1];
err = _tuple$1[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$2 = $ifaceNil;
_tmp$3 = err;
_ = _tmp$2;
err = _tmp$3;
return [_, err];
}
hf.Priority.StreamDep = (v & 2147483647) >>> 0;
hf.Priority.Exclusive = !((v === hf.Priority.StreamDep));
_tuple$2 = http2readByte(p);
p = _tuple$2[0];
hf.Priority.Weight = _tuple$2[1];
err = _tuple$2[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$4 = $ifaceNil;
_tmp$5 = err;
_ = _tmp$4;
err = _tmp$5;
return [_, err];
}
}
if ((p.$length - ((padLength >> 0)) >> 0) <= 0) {
_tmp$6 = $ifaceNil;
_tmp$7 = (x$4 = http2streamError(fh.StreamID, 1), new x$4.constructor.elem(x$4));
_ = _tmp$6;
err = _tmp$7;
return [_, err];
}
hf.headerFragBuf = $subslice(p, 0, (p.$length - ((padLength >> 0)) >> 0));
_tmp$8 = hf;
_tmp$9 = $ifaceNil;
_ = _tmp$8;
err = _tmp$9;
return [_, err];
};
http2Framer.ptr.prototype.WriteHeaders = function(p) {
var $ptr, _r, f, flags, p, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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:
f = this;
if (!http2validStreamID(p.StreamID) && !f.AllowIllegalWrites) {
$s = -1; return http2errStreamID;
}
flags = 0;
if (!((p.PadLength === 0))) {
flags = (flags | (8)) >>> 0;
}
if (p.EndStream) {
flags = (flags | (1)) >>> 0;
}
if (p.EndHeaders) {
flags = (flags | (4)) >>> 0;
}
if (!$clone(p.Priority, http2PriorityParam).IsZero()) {
flags = (flags | (32)) >>> 0;
}
f.startWrite(1, flags, p.StreamID);
if (!((p.PadLength === 0))) {
f.writeByte(p.PadLength);
}
if (!$clone(p.Priority, http2PriorityParam).IsZero()) {
v = p.Priority.StreamDep;
if (!http2validStreamIDOrZero(v) && !f.AllowIllegalWrites) {
$s = -1; return http2errDepStreamID;
}
if (p.Priority.Exclusive) {
v = (v | (2147483648)) >>> 0;
}
f.writeUint32(v);
f.writeByte(p.Priority.Weight);
}
f.wbuf = $appendSlice(f.wbuf, p.BlockFragment);
f.wbuf = $appendSlice(f.wbuf, $subslice(http2padZeros, 0, p.PadLength));
_r = f.endWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WriteHeaders }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.flags = flags; $f.p = p; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
http2Framer.prototype.WriteHeaders = function(p) { return this.$val.WriteHeaders(p); };
http2PriorityParam.ptr.prototype.IsZero = function() {
var $ptr, p;
p = this;
return $equal(p, new http2PriorityParam.ptr(0, false, 0), http2PriorityParam);
};
http2PriorityParam.prototype.IsZero = function() { return this.$val.IsZero(); };
http2parsePriorityFrame = function(fh, payload) {
var $ptr, _r, fh, payload, streamID, v, x$3, x$4, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; fh = $f.fh; payload = $f.payload; streamID = $f.streamID; v = $f.v; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
if (fh.StreamID === 0) {
$s = -1; return [$ifaceNil, (x$3 = new http2connError.ptr(1, "PRIORITY frame with stream ID 0"), new x$3.constructor.elem(x$3))];
}
/* */ if (!((payload.$length === 5))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!((payload.$length === 5))) { */ case 1:
_r = 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 = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return [$ifaceNil, (x$4 = new http2connError.ptr(6, _r), new x$4.constructor.elem(x$4))];
/* } */ case 2:
v = $clone(binary.BigEndian, binary.bigEndian).Uint32($subslice(payload, 0, 4));
streamID = (v & 2147483647) >>> 0;
$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];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2parsePriorityFrame }; } $f.$ptr = $ptr; $f._r = _r; $f.fh = fh; $f.payload = payload; $f.streamID = streamID; $f.v = v; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
};
http2Framer.ptr.prototype.WritePriority = function(streamID, p) {
var $ptr, _r, f, p, streamID, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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:
f = this;
if (!http2validStreamID(streamID) && !f.AllowIllegalWrites) {
$s = -1; return http2errStreamID;
}
if (!http2validStreamIDOrZero(p.StreamDep)) {
$s = -1; return http2errDepStreamID;
}
f.startWrite(2, 0, streamID);
v = p.StreamDep;
if (p.Exclusive) {
v = (v | (2147483648)) >>> 0;
}
f.writeUint32(v);
f.writeByte(p.Weight);
_r = f.endWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WritePriority }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.p = p; $f.streamID = streamID; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
http2Framer.prototype.WritePriority = function(streamID, p) { return this.$val.WritePriority(streamID, p); };
http2parseRSTStreamFrame = function(fh, p) {
var $ptr, fh, p;
if (!((p.$length === 4))) {
return [$ifaceNil, new http2ConnectionError(6)];
}
if (fh.StreamID === 0) {
return [$ifaceNil, new http2ConnectionError(1)];
}
return [new http2RSTStreamFrame.ptr($clone(fh, http2FrameHeader), (($clone(binary.BigEndian, binary.bigEndian).Uint32($subslice(p, 0, 4)) >>> 0))), $ifaceNil];
};
http2Framer.ptr.prototype.WriteRSTStream = function(streamID, code) {
var $ptr, _r, code, f, streamID, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; code = $f.code; f = $f.f; streamID = $f.streamID; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
f = this;
if (!http2validStreamID(streamID) && !f.AllowIllegalWrites) {
$s = -1; return http2errStreamID;
}
f.startWrite(3, 0, streamID);
f.writeUint32(((code >>> 0)));
_r = f.endWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WriteRSTStream }; } $f.$ptr = $ptr; $f._r = _r; $f.code = code; $f.f = f; $f.streamID = streamID; $f.$s = $s; $f.$r = $r; return $f;
};
http2Framer.prototype.WriteRSTStream = function(streamID, code) { return this.$val.WriteRSTStream(streamID, code); };
http2parseContinuationFrame = function(fh, p) {
var $ptr, fh, p, x$3;
if (fh.StreamID === 0) {
return [$ifaceNil, (x$3 = new http2connError.ptr(1, "CONTINUATION frame with stream ID 0"), new x$3.constructor.elem(x$3))];
}
return [new http2ContinuationFrame.ptr($clone(fh, http2FrameHeader), p), $ifaceNil];
};
http2ContinuationFrame.ptr.prototype.HeaderBlockFragment = function() {
var $ptr, f;
f = this;
f.http2FrameHeader.checkValid();
return f.headerFragBuf;
};
http2ContinuationFrame.prototype.HeaderBlockFragment = function() { return this.$val.HeaderBlockFragment(); };
http2ContinuationFrame.ptr.prototype.HeadersEnded = function() {
var $ptr, f;
f = this;
return new http2Flags(f.http2FrameHeader.Flags).Has(4);
};
http2ContinuationFrame.prototype.HeadersEnded = function() { return this.$val.HeadersEnded(); };
http2Framer.ptr.prototype.WriteContinuation = function(streamID, endHeaders, headerBlockFragment) {
var $ptr, _r, endHeaders, f, flags, headerBlockFragment, streamID, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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:
f = this;
if (!http2validStreamID(streamID) && !f.AllowIllegalWrites) {
$s = -1; return http2errStreamID;
}
flags = 0;
if (endHeaders) {
flags = (flags | (4)) >>> 0;
}
f.startWrite(9, flags, streamID);
f.wbuf = $appendSlice(f.wbuf, headerBlockFragment);
_r = f.endWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WriteContinuation }; } $f.$ptr = $ptr; $f._r = _r; $f.endHeaders = endHeaders; $f.f = f; $f.flags = flags; $f.headerBlockFragment = headerBlockFragment; $f.streamID = streamID; $f.$s = $s; $f.$r = $r; return $f;
};
http2Framer.prototype.WriteContinuation = function(streamID, endHeaders, headerBlockFragment) { return this.$val.WriteContinuation(streamID, endHeaders, headerBlockFragment); };
http2PushPromiseFrame.ptr.prototype.HeaderBlockFragment = function() {
var $ptr, f;
f = this;
f.http2FrameHeader.checkValid();
return f.headerFragBuf;
};
http2PushPromiseFrame.prototype.HeaderBlockFragment = function() { return this.$val.HeaderBlockFragment(); };
http2PushPromiseFrame.ptr.prototype.HeadersEnded = function() {
var $ptr, f;
f = this;
return new http2Flags(f.http2FrameHeader.Flags).Has(4);
};
http2PushPromiseFrame.prototype.HeadersEnded = function() { return this.$val.HeadersEnded(); };
http2parsePushPromise = function(fh, p) {
var $ptr, _, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, err, fh, p, padLength, pp;
_ = $ifaceNil;
err = $ifaceNil;
pp = new http2PushPromiseFrame.ptr($clone(fh, http2FrameHeader), 0, sliceType$2.nil);
if (pp.http2FrameHeader.StreamID === 0) {
_tmp = $ifaceNil;
_tmp$1 = new http2ConnectionError(1);
_ = _tmp;
err = _tmp$1;
return [_, err];
}
padLength = 0;
if (new http2Flags(fh.Flags).Has(8)) {
_tuple = http2readByte(p);
p = _tuple[0];
padLength = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [_, err];
}
}
_tuple$1 = http2readUint32(p);
p = _tuple$1[0];
pp.PromiseID = _tuple$1[1];
err = _tuple$1[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [_, err];
}
pp.PromiseID = (pp.PromiseID & 2147483647) >>> 0;
if (((padLength >> 0)) > p.$length) {
_tmp$2 = $ifaceNil;
_tmp$3 = new http2ConnectionError(1);
_ = _tmp$2;
err = _tmp$3;
return [_, err];
}
pp.headerFragBuf = $subslice(p, 0, (p.$length - ((padLength >> 0)) >> 0));
_tmp$4 = pp;
_tmp$5 = $ifaceNil;
_ = _tmp$4;
err = _tmp$5;
return [_, err];
};
http2Framer.ptr.prototype.WritePushPromise = function(p) {
var $ptr, _r, f, flags, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; f = $f.f; flags = $f.flags; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
f = this;
if (!http2validStreamID(p.StreamID) && !f.AllowIllegalWrites) {
$s = -1; return http2errStreamID;
}
flags = 0;
if (!((p.PadLength === 0))) {
flags = (flags | (8)) >>> 0;
}
if (p.EndHeaders) {
flags = (flags | (4)) >>> 0;
}
f.startWrite(5, flags, p.StreamID);
if (!((p.PadLength === 0))) {
f.writeByte(p.PadLength);
}
if (!http2validStreamID(p.PromiseID) && !f.AllowIllegalWrites) {
$s = -1; return http2errStreamID;
}
f.writeUint32(p.PromiseID);
f.wbuf = $appendSlice(f.wbuf, p.BlockFragment);
f.wbuf = $appendSlice(f.wbuf, $subslice(http2padZeros, 0, p.PadLength));
_r = f.endWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WritePushPromise }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.flags = flags; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
};
http2Framer.prototype.WritePushPromise = function(p) { return this.$val.WritePushPromise(p); };
http2Framer.ptr.prototype.WriteRawFrame = function(t, flags, streamID, payload) {
var $ptr, _r, f, flags, payload, streamID, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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:
f = this;
f.startWrite(t, flags, streamID);
f.writeBytes(payload);
_r = f.endWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WriteRawFrame }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.flags = flags; $f.payload = payload; $f.streamID = streamID; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
http2Framer.prototype.WriteRawFrame = function(t, flags, streamID, payload) { return this.$val.WriteRawFrame(t, flags, streamID, payload); };
http2readByte = function(p) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, b, err, p, remain;
remain = sliceType$2.nil;
b = 0;
err = $ifaceNil;
if (p.$length === 0) {
_tmp = sliceType$2.nil;
_tmp$1 = 0;
_tmp$2 = io.ErrUnexpectedEOF;
remain = _tmp;
b = _tmp$1;
err = _tmp$2;
return [remain, b, err];
}
_tmp$3 = $subslice(p, 1);
_tmp$4 = (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0]);
_tmp$5 = $ifaceNil;
remain = _tmp$3;
b = _tmp$4;
err = _tmp$5;
return [remain, b, err];
};
http2readUint32 = function(p) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, err, p, remain, v;
remain = sliceType$2.nil;
v = 0;
err = $ifaceNil;
if (p.$length < 4) {
_tmp = sliceType$2.nil;
_tmp$1 = 0;
_tmp$2 = io.ErrUnexpectedEOF;
remain = _tmp;
v = _tmp$1;
err = _tmp$2;
return [remain, v, err];
}
_tmp$3 = $subslice(p, 4);
_tmp$4 = $clone(binary.BigEndian, binary.bigEndian).Uint32($subslice(p, 0, 4));
_tmp$5 = $ifaceNil;
remain = _tmp$3;
v = _tmp$4;
err = _tmp$5;
return [remain, v, err];
};
http2MetaHeadersFrame.ptr.prototype.PseudoValue = function(pseudo) {
var $ptr, _i, _ref, hf, mh, pseudo;
mh = this;
_ref = mh.Fields;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
hf = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), hpack.HeaderField);
if (!$clone(hf, hpack.HeaderField).IsPseudo()) {
return "";
}
if ($substring(hf.Name, 1) === pseudo) {
return hf.Value;
}
_i++;
}
return "";
};
http2MetaHeadersFrame.prototype.PseudoValue = function(pseudo) { return this.$val.PseudoValue(pseudo); };
http2MetaHeadersFrame.ptr.prototype.RegularFields = function() {
var $ptr, _i, _ref, hf, i, mh;
mh = this;
_ref = mh.Fields;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
hf = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), hpack.HeaderField);
if (!$clone(hf, hpack.HeaderField).IsPseudo()) {
return $subslice(mh.Fields, i);
}
_i++;
}
return sliceType$14.nil;
};
http2MetaHeadersFrame.prototype.RegularFields = function() { return this.$val.RegularFields(); };
http2MetaHeadersFrame.ptr.prototype.PseudoFields = function() {
var $ptr, _i, _ref, hf, i, mh;
mh = this;
_ref = mh.Fields;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
hf = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), hpack.HeaderField);
if (!$clone(hf, hpack.HeaderField).IsPseudo()) {
return $subslice(mh.Fields, 0, i);
}
_i++;
}
return mh.Fields;
};
http2MetaHeadersFrame.prototype.PseudoFields = function() { return this.$val.PseudoFields(); };
http2MetaHeadersFrame.ptr.prototype.checkPseudos = function() {
var $ptr, _1, _i, _i$1, _ref, _ref$1, _tmp, _tmp$1, hf, hf2, i, isRequest, isResponse, mh, pf;
mh = this;
_tmp = false;
_tmp$1 = false;
isRequest = _tmp;
isResponse = _tmp$1;
pf = mh.PseudoFields();
_ref = pf;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
hf = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), hpack.HeaderField);
_1 = hf.Name;
if (_1 === (":method") || _1 === (":path") || _1 === (":scheme") || _1 === (":authority")) {
isRequest = true;
} else if (_1 === (":status")) {
isResponse = true;
} else {
return new http2pseudoHeaderError((hf.Name));
}
_ref$1 = $subslice(pf, 0, i);
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
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);
if (hf.Name === hf2.Name) {
return new http2duplicatePseudoHeaderError((hf.Name));
}
_i$1++;
}
_i++;
}
if (isRequest && isResponse) {
return http2errMixPseudoHeaderTypes;
}
return $ifaceNil;
};
http2MetaHeadersFrame.prototype.checkPseudos = function() { return this.$val.checkPseudos(); };
http2Framer.ptr.prototype.maxHeaderStringLen = function() {
var $ptr, fr, v;
fr = this;
v = fr.maxHeaderListSize();
if (((((v >> 0)) >>> 0)) === v) {
return ((v >> 0));
}
return 0;
};
http2Framer.prototype.maxHeaderStringLen = function() { return this.$val.maxHeaderStringLen(); };
http2Framer.ptr.prototype.readMetaFrame = function(hf) {
var $ptr, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, err, err$1, err$2, err$3, f, fr, frag, hc, hdec, hf, invalid, mh, remainSize, sawRegular, x$3, x$4, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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$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);
fr = [fr];
hdec = [hdec];
invalid = [invalid];
mh = [mh];
remainSize = [remainSize];
sawRegular = [sawRegular];
fr[0] = this;
if (fr[0].AllowIllegalReads) {
$s = -1; return [ptrType$36.nil, errors.New("illegal use of AllowIllegalReads with ReadMetaHeaders")];
}
mh[0] = new http2MetaHeadersFrame.ptr(hf, sliceType$14.nil, false);
remainSize[0] = fr[0].maxHeaderListSize();
sawRegular[0] = false;
invalid[0] = $ifaceNil;
hdec[0] = fr[0].ReadMetaHeaders;
hdec[0].SetEmitEnabled(true);
hdec[0].SetMaxStringLength(fr[0].maxHeaderStringLen());
hdec[0].SetEmitFunc((function(fr, hdec, invalid, mh, remainSize, sawRegular) { return function $b(hf$1) {
var $ptr, hf$1, isPseudo, size, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; hf$1 = $f.hf$1; isPseudo = $f.isPseudo; size = $f.size; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
/* */ if (http2VerboseLogs && fr[0].logReads) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (http2VerboseLogs && fr[0].logReads) { */ case 1:
$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; }
/* } */ case 2:
if (!httplex.ValidHeaderFieldValue(hf$1.Value)) {
invalid[0] = new http2headerFieldValueError((hf$1.Value));
}
isPseudo = strings.HasPrefix(hf$1.Name, ":");
if (isPseudo) {
if (sawRegular[0]) {
invalid[0] = http2errPseudoAfterRegular;
}
} else {
sawRegular[0] = true;
if (!http2validWireHeaderFieldName(hf$1.Name)) {
invalid[0] = new http2headerFieldNameError((hf$1.Name));
}
}
if (!($interfaceIsEqual(invalid[0], $ifaceNil))) {
hdec[0].SetEmitEnabled(false);
$s = -1; return;
}
size = $clone(hf$1, hpack.HeaderField).Size();
if (size > remainSize[0]) {
hdec[0].SetEmitEnabled(false);
mh[0].Truncated = true;
$s = -1; return;
}
remainSize[0] = remainSize[0] - (size) >>> 0;
mh[0].Fields = $append(mh[0].Fields, hf$1);
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.hf$1 = hf$1; $f.isPseudo = isPseudo; $f.size = size; $f.$s = $s; $f.$r = $r; return $f;
}; })(fr, hdec, invalid, mh, remainSize, sawRegular));
$deferred.push([$methodVal(hdec[0], "SetEmitFunc"), [(function(fr, hdec, invalid, mh, remainSize, sawRegular) { return function(hf$1) {
var $ptr, hf$1;
}; })(fr, hdec, invalid, mh, remainSize, sawRegular)]]);
hc = hf;
/* while (true) { */ case 1:
_r = hc.HeaderBlockFragment(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
frag = _r;
_r$1 = hdec[0].Write(frag); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$36.nil, new http2ConnectionError(9)];
}
_r$2 = hc.HeadersEnded(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
/* */ if (_r$2) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (_r$2) { */ case 5:
/* break; */ $s = 2; continue;
/* } */ case 6:
_r$3 = fr[0].ReadFrame(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$1 = _r$3;
f = _tuple$1[0];
err$1 = _tuple$1[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return [ptrType$36.nil, err$1];
} else {
hc = $assertType(f, ptrType$37);
}
/* } */ $s = 1; continue; case 2:
mh[0].http2HeadersFrame.headerFragBuf = sliceType$2.nil;
mh[0].http2HeadersFrame.http2FrameHeader.invalidate();
err$2 = hdec[0].Close();
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return [ptrType$36.nil, new http2ConnectionError(9)];
}
/* */ if (!($interfaceIsEqual(invalid[0], $ifaceNil))) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (!($interfaceIsEqual(invalid[0], $ifaceNil))) { */ case 9:
fr[0].errDetail = invalid[0];
/* */ if (http2VerboseLogs) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if (http2VerboseLogs) { */ case 11:
$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; }
/* } */ case 12:
$s = -1; return [ptrType$36.nil, (x$3 = new http2StreamError.ptr(mh[0].http2HeadersFrame.http2FrameHeader.StreamID, 1, invalid[0]), new x$3.constructor.elem(x$3))];
/* } */ case 10:
err$3 = mh[0].checkPseudos();
/* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 14:
fr[0].errDetail = err$3;
/* */ if (http2VerboseLogs) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (http2VerboseLogs) { */ case 16:
$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; }
/* } */ case 17:
$s = -1; return [ptrType$36.nil, (x$4 = new http2StreamError.ptr(mh[0].http2HeadersFrame.http2FrameHeader.StreamID, 1, err$3), new x$4.constructor.elem(x$4))];
/* } */ case 15:
$s = -1; return [mh[0], $ifaceNil];
/* */ } return; } } catch(err) { $err = err; $s = -1; return [ptrType$36.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.readMetaFrame }; } $f.$ptr = $ptr; $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.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$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
http2Framer.prototype.readMetaFrame = function(hf) { return this.$val.readMetaFrame(hf); };
http2summarizeFrame = function(f) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, buf, data, f, f$1, f$2, f$3, f$4, f$5, f$6, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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:
buf = [buf];
n = [n];
buf[0] = new bytes.Buffer.ptr(sliceType$2.nil, 0, arrayType.zero(), 0);
_r = f.Header(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$r = $clone(_r, http2FrameHeader).writeDebug(buf[0]); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_ref = f;
/* */ if ($assertType(_ref, ptrType$38, true)[1]) { $s = 3; continue; }
/* */ if ($assertType(_ref, ptrType$39, true)[1]) { $s = 4; continue; }
/* */ if ($assertType(_ref, ptrType$40, true)[1]) { $s = 5; continue; }
/* */ if ($assertType(_ref, ptrType$41, true)[1]) { $s = 6; continue; }
/* */ if ($assertType(_ref, ptrType$42, true)[1]) { $s = 7; continue; }
/* */ if ($assertType(_ref, ptrType$43, true)[1]) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if ($assertType(_ref, ptrType$38, true)[1]) { */ case 3:
f$1 = _ref.$val;
n[0] = 0;
_r$1 = f$1.ForeachSetting((function(buf, n) { return function $b(s) {
var $ptr, _r$1, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$1 = $f._r$1; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
n[0] = n[0] + (1) >> 0;
if (n[0] === 1) {
buf[0].WriteString(", settings:");
}
_r$1 = 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$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r$1 = _r$1; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
}; })(buf, n)); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
if (n[0] > 0) {
buf[0].Truncate(buf[0].Len() - 1 >> 0);
}
$s = 9; continue;
/* } else if ($assertType(_ref, ptrType$39, true)[1]) { */ case 4:
f$2 = _ref.$val;
data = f$2.Data();
if (data.$length > 256) {
data = $subslice(data, 0, 256);
}
_r$2 = fmt.Fprintf(buf[0], " data=%q", new sliceType([data])); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
/* */ if (f$2.Data().$length > 256) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (f$2.Data().$length > 256) { */ case 12:
_r$3 = 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$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$3;
/* } */ case 13:
$s = 9; continue;
/* } else if ($assertType(_ref, ptrType$40, true)[1]) { */ case 5:
f$3 = _ref.$val;
if (f$3.http2FrameHeader.StreamID === 0) {
buf[0].WriteString(" (conn)");
}
_r$4 = fmt.Fprintf(buf[0], " incr=%v", new sliceType([new $Uint32(f$3.Increment)])); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_r$4;
$s = 9; continue;
/* } else if ($assertType(_ref, ptrType$41, true)[1]) { */ case 6:
f$4 = _ref.$val;
_r$5 = fmt.Fprintf(buf[0], " ping=%q", new sliceType([new sliceType$2(f$4.Data)])); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_r$5;
$s = 9; continue;
/* } else if ($assertType(_ref, ptrType$42, true)[1]) { */ case 7:
f$5 = _ref.$val;
_r$6 = 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$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_r$6;
$s = 9; continue;
/* } else if ($assertType(_ref, ptrType$43, true)[1]) { */ case 8:
f$6 = _ref.$val;
_r$7 = fmt.Fprintf(buf[0], " ErrCode=%v", new sliceType([new http2ErrCode(f$6.ErrCode)])); /* */ $s = 18; case 18: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_r$7;
/* } */ case 9:
$s = -1; return buf[0].String();
/* */ } return; } if ($f === undefined) { $f = { $blk: http2summarizeFrame }; } $f.$ptr = $ptr; $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.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;
};
http2transportExpectContinueTimeout = function(t1) {
var $ptr, t1;
return t1.ExpectContinueTimeout;
};
http2isBadCipher = function(cipher) {
var $ptr, _1, cipher;
_1 = cipher;
if ((_1 === (5)) || (_1 === (10)) || (_1 === (47)) || (_1 === (53)) || (_1 === (156)) || (_1 === (157)) || (_1 === (49159)) || (_1 === (49161)) || (_1 === (49162)) || (_1 === (49169)) || (_1 === (49170)) || (_1 === (49171)) || (_1 === (49172))) {
return true;
} else {
return false;
}
};
http2serverConnBaseContext = function(c, opts) {
var $ptr, _arg, _arg$1, _arg$2, _r, _r$1, _r$2, _r$3, _tuple, c, cancel, ctx, hs, opts, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
ctx = $ifaceNil;
cancel = $throwNilPointerError;
_r = context.WithCancel(context.Background()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
ctx = _tuple[0];
cancel = _tuple[1];
_arg = ctx;
_arg$1 = $pkg.LocalAddrContextKey;
_r$1 = c.LocalAddr(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_arg$2 = _r$1;
_r$2 = context.WithValue(_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; }
ctx = _r$2;
hs = opts.baseConfig();
/* */ if (!(hs === ptrType$44.nil)) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!(hs === ptrType$44.nil)) { */ case 4:
_r$3 = context.WithValue(ctx, $pkg.ServerContextKey, hs); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
ctx = _r$3;
/* } */ case 5:
$s = -1; return [ctx, cancel];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConnBaseContext }; } $f.$ptr = $ptr; $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._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;
};
http2contextWithCancel = function(ctx) {
var $ptr, _, _r, _tuple, cancel, ctx, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ = $f._; _r = $f._r; _tuple = $f._tuple; cancel = $f.cancel; ctx = $f.ctx; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_ = $ifaceNil;
cancel = $throwNilPointerError;
_r = context.WithCancel(ctx); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
_ = _tuple[0];
cancel = _tuple[1];
$s = -1; return [_, cancel];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2contextWithCancel }; } $f.$ptr = $ptr; $f._ = _; $f._r = _r; $f._tuple = _tuple; $f.cancel = cancel; $f.ctx = ctx; $f.$s = $s; $f.$r = $r; return $f;
};
http2requestWithContext = function(req, ctx) {
var $ptr, ctx, req;
return req.WithContext(ctx);
};
http2reqContext = function(r) {
var $ptr, r;
return r.Context();
};
http2Transport.ptr.prototype.idleConnTimeout = function() {
var $ptr, t;
t = this;
if (!(t.t1 === ptrType$21.nil)) {
return t.t1.IdleConnTimeout;
}
return new time.Duration(0, 0);
};
http2Transport.prototype.idleConnTimeout = function() { return this.$val.idleConnTimeout(); };
http2setResponseUncompressed = function(res) {
var $ptr, res;
res.Uncompressed = true;
};
http2traceGotConn = function(req, cc) {
var $ptr, _r, cc, ci, req, trace, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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:
_r = httptrace.ContextClientTrace(req.Context()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
trace = _r;
if (trace === ptrType$45.nil || trace.GotConn === $throwNilPointerError) {
$s = -1; return;
}
ci = new httptrace.GotConnInfo.ptr(cc.tconn, false, false, new time.Duration(0, 0));
$r = cc.mu.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
ci.Reused = cc.nextStreamID > 1;
ci.WasIdle = ($keys(cc.streams).length === 0) && ci.Reused;
if (ci.WasIdle && !$clone(cc.lastActive, time.Time).IsZero()) {
ci.IdleTime = $clone(time.Now(), time.Time).Sub($clone(cc.lastActive, time.Time));
}
$r = cc.mu.Unlock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2traceGotConn }; } $f.$ptr = $ptr; $f._r = _r; $f.cc = cc; $f.ci = ci; $f.req = req; $f.trace = trace; $f.$s = $s; $f.$r = $r; return $f;
};
http2traceWroteHeaders = function(trace) {
var $ptr, trace, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; trace = $f.trace; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
/* */ if (!(trace === ptrType$46.nil) && !(trace.WroteHeaders === $throwNilPointerError)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(trace === ptrType$46.nil) && !(trace.WroteHeaders === $throwNilPointerError)) { */ case 1:
$r = trace.WroteHeaders(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2traceWroteHeaders }; } $f.$ptr = $ptr; $f.trace = trace; $f.$s = $s; $f.$r = $r; return $f;
};
http2traceGot100Continue = function(trace) {
var $ptr, trace, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; trace = $f.trace; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
/* */ if (!(trace === ptrType$46.nil) && !(trace.Got100Continue === $throwNilPointerError)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(trace === ptrType$46.nil) && !(trace.Got100Continue === $throwNilPointerError)) { */ case 1:
$r = trace.Got100Continue(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2traceGot100Continue }; } $f.$ptr = $ptr; $f.trace = trace; $f.$s = $s; $f.$r = $r; return $f;
};
http2traceWait100Continue = function(trace) {
var $ptr, trace, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; trace = $f.trace; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
/* */ if (!(trace === ptrType$46.nil) && !(trace.Wait100Continue === $throwNilPointerError)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(trace === ptrType$46.nil) && !(trace.Wait100Continue === $throwNilPointerError)) { */ case 1:
$r = trace.Wait100Continue(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2traceWait100Continue }; } $f.$ptr = $ptr; $f.trace = trace; $f.$s = $s; $f.$r = $r; return $f;
};
http2traceWroteRequest = function(trace, err) {
var $ptr, err, trace, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; err = $f.err; trace = $f.trace; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
/* */ if (!(trace === ptrType$46.nil) && !(trace.WroteRequest === $throwNilPointerError)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(trace === ptrType$46.nil) && !(trace.WroteRequest === $throwNilPointerError)) { */ case 1:
$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; }
/* } */ case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2traceWroteRequest }; } $f.$ptr = $ptr; $f.err = err; $f.trace = trace; $f.$s = $s; $f.$r = $r; return $f;
};
http2traceFirstResponseByte = function(trace) {
var $ptr, trace, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; trace = $f.trace; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
/* */ if (!(trace === ptrType$46.nil) && !(trace.GotFirstResponseByte === $throwNilPointerError)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(trace === ptrType$46.nil) && !(trace.GotFirstResponseByte === $throwNilPointerError)) { */ case 1:
$r = trace.GotFirstResponseByte(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2traceFirstResponseByte }; } $f.$ptr = $ptr; $f.trace = trace; $f.$s = $s; $f.$r = $r; return $f;
};
http2requestTrace = function(req) {
var $ptr, _r, req, trace, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; req = $f.req; trace = $f.trace; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = httptrace.ContextClientTrace(req.Context()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
trace = _r;
$s = -1; return ($pointerOfStructConversion(trace, ptrType$46));
/* */ } return; } if ($f === undefined) { $f = { $blk: http2requestTrace }; } $f.$ptr = $ptr; $f._r = _r; $f.req = req; $f.trace = trace; $f.$s = $s; $f.$r = $r; return $f;
};
http2ClientConn.ptr.prototype.Ping = function(ctx) {
var $ptr, _r, cc, ctx, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; cc = $f.cc; ctx = $f.ctx; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
cc = this;
_r = cc.ping(ctx); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.Ping }; } $f.$ptr = $ptr; $f._r = _r; $f.cc = cc; $f.ctx = ctx; $f.$s = $s; $f.$r = $r; return $f;
};
http2ClientConn.prototype.Ping = function(ctx) { return this.$val.Ping(ctx); };
http2cloneTLSConfig = function(c) {
var $ptr, _r, c, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = c.Clone(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2cloneTLSConfig }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
};
http2responseWriter.ptr.prototype.Push = function(target, opts) {
var $ptr, _r, internalOpts, opts, target, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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:
w = this;
internalOpts = new http2pushOptions.ptr("", false);
if (!(opts === ptrType$47.nil)) {
internalOpts.Method = opts.Method;
internalOpts.Header = opts.Header;
}
_r = w.push(target, $clone(internalOpts, http2pushOptions)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2responseWriter.ptr.prototype.Push }; } $f.$ptr = $ptr; $f._r = _r; $f.internalOpts = internalOpts; $f.opts = opts; $f.target = target; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
http2responseWriter.prototype.Push = function(target, opts) { return this.$val.Push(target, opts); };
http2configureServer18 = function(h1, h2) {
var $ptr, h1, h2, x$3, x$4;
if ((x$3 = h2.IdleTimeout, (x$3.$high === 0 && x$3.$low === 0))) {
if (!((x$4 = h1.IdleTimeout, (x$4.$high === 0 && x$4.$low === 0)))) {
h2.IdleTimeout = h1.IdleTimeout;
} else {
h2.IdleTimeout = h1.ReadTimeout;
}
}
return $ifaceNil;
};
http2shouldLogPanic = function(panicValue) {
var $ptr, panicValue;
return !($interfaceIsEqual(panicValue, $ifaceNil)) && !($interfaceIsEqual(panicValue, $pkg.ErrAbortHandler));
};
http2reqGetBody = function(req) {
var $ptr, req;
return req.GetBody;
};
http2reqBodyIsNoBody = function(body$1) {
var $ptr, body$1;
return $interfaceIsEqual(body$1, new $pkg.NoBody.constructor.elem($pkg.NoBody));
};
http2newGoroutineLock = function() {
var $ptr, _r, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
if (!http2DebugGoroutines) {
$s = -1; return new http2goroutineLock(0, 0);
}
_r = http2curGoroutineID(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return ((x$3 = _r, new http2goroutineLock(x$3.$high, x$3.$low)));
/* */ } return; } if ($f === undefined) { $f = { $blk: http2newGoroutineLock }; } $f.$ptr = $ptr; $f._r = _r; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
};
http2goroutineLock.prototype.check = function() {
var $ptr, _r, g, x$3, x$4, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; g = $f.g; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
g = this;
if (!http2DebugGoroutines) {
$s = -1; return;
}
_r = http2curGoroutineID(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (!((x$3 = _r, x$4 = (new $Uint64(g.$high, g.$low)), (x$3.$high === x$4.$high && x$3.$low === x$4.$low)))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!((x$3 = _r, x$4 = (new $Uint64(g.$high, g.$low)), (x$3.$high === x$4.$high && x$3.$low === x$4.$low)))) { */ case 1:
$panic(new $String("running on the wrong goroutine"));
/* } */ case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2goroutineLock.prototype.check }; } $f.$ptr = $ptr; $f._r = _r; $f.g = g; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(http2goroutineLock).prototype.check = function() { return this.$get().check(); };
http2goroutineLock.prototype.checkNotOn = function() {
var $ptr, _r, g, x$3, x$4, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; g = $f.g; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
g = this;
if (!http2DebugGoroutines) {
$s = -1; return;
}
_r = http2curGoroutineID(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if ((x$3 = _r, x$4 = (new $Uint64(g.$high, g.$low)), (x$3.$high === x$4.$high && x$3.$low === x$4.$low))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if ((x$3 = _r, x$4 = (new $Uint64(g.$high, g.$low)), (x$3.$high === x$4.$high && x$3.$low === x$4.$low))) { */ case 1:
$panic(new $String("running on the wrong goroutine"));
/* } */ case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2goroutineLock.prototype.checkNotOn }; } $f.$ptr = $ptr; $f._r = _r; $f.g = g; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(http2goroutineLock).prototype.checkNotOn = function() { return this.$get().checkNotOn(); };
http2curGoroutineID = function() {
var $ptr, _r, _r$1, _r$2, _tuple, b, bp, err, i, n, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _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);
_r = http2littleBuf.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
bp = $assertType(_r, ptrType$4);
$deferred.push([$methodVal(http2littleBuf, "Put"), [bp]]);
b = bp.$get();
b = $subslice(b, 0, runtime.Stack(b, false));
b = bytes.TrimPrefix(b, http2goroutineSpace);
i = bytes.IndexByte(b, 32);
/* */ if (i < 0) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (i < 0) { */ case 2:
_r$1 = fmt.Sprintf("No space found in %q", new sliceType([b])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$panic(new $String(_r$1));
/* } */ case 3:
b = $subslice(b, 0, i);
_tuple = http2parseUintBytes(b, 10, 64);
n = _tuple[0];
err = _tuple[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 5:
_r$2 = fmt.Sprintf("Failed to parse goroutine ID out of %q: %v", new sliceType([b, err])); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$panic(new $String(_r$2));
/* } */ case 6:
$s = -1; return n;
/* */ } 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.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $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; } }
};
http2parseUintBytes = function(s, base, bitSize) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, base, bitSize, cutoff, d, err, i, maxVal, n, n1, s, s0, v, x$3, x$4, $s;
/* */ $s = 0; s: while (true) { switch ($s) { case 0:
n = new $Uint64(0, 0);
err = $ifaceNil;
_tmp = new $Uint64(0, 0);
_tmp$1 = new $Uint64(0, 0);
cutoff = _tmp;
maxVal = _tmp$1;
if (bitSize === 0) {
bitSize = 32;
}
s0 = s;
/* */ if (s.$length < 1) { $s = 2; continue; }
/* */ if (2 <= base && base <= 36) { $s = 3; continue; }
/* */ if ((base === 0)) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (s.$length < 1) { */ case 2:
err = strconv.ErrSyntax;
/* goto Error */ $s = 7; continue;
$s = 6; continue;
/* } else if (2 <= base && base <= 36) { */ case 3:
$s = 6; continue;
/* } else if ((base === 0)) { */ case 4:
/* */ 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; }
/* */ if (((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) === 48)) { $s = 10; continue; }
/* */ $s = 11; continue;
/* 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:
base = 16;
s = $subslice(s, 2);
/* */ if (s.$length < 1) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (s.$length < 1) { */ case 13:
err = strconv.ErrSyntax;
/* goto Error */ $s = 7; continue;
/* } */ case 14:
$s = 12; continue;
/* } else if (((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) === 48)) { */ case 10:
base = 8;
$s = 12; continue;
/* } else { */ case 11:
base = 10;
/* } */ case 12:
case 8:
$s = 6; continue;
/* } else { */ case 5:
err = errors.New("invalid base " + strconv.Itoa(base));
/* goto Error */ $s = 7; continue;
/* } */ case 6:
case 1:
n = new $Uint64(0, 0);
cutoff = http2cutoff64(base);
maxVal = (x$3 = $shiftLeft64(new $Uint64(0, 1), ((bitSize >>> 0))), new $Uint64(x$3.$high - 0, x$3.$low - 1));
i = 0;
/* while (true) { */ case 15:
/* if (!(i < s.$length)) { break; } */ if(!(i < s.$length)) { $s = 16; continue; }
v = 0;
d = ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]);
/* */ if (48 <= d && d <= 57) { $s = 18; continue; }
/* */ if (97 <= d && d <= 122) { $s = 19; continue; }
/* */ if (65 <= d && d <= 90) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if (48 <= d && d <= 57) { */ case 18:
v = d - 48 << 24 >>> 24;
$s = 22; continue;
/* } else if (97 <= d && d <= 122) { */ case 19:
v = (d - 97 << 24 >>> 24) + 10 << 24 >>> 24;
$s = 22; continue;
/* } else if (65 <= d && d <= 90) { */ case 20:
v = (d - 65 << 24 >>> 24) + 10 << 24 >>> 24;
$s = 22; continue;
/* } else { */ case 21:
n = new $Uint64(0, 0);
err = strconv.ErrSyntax;
/* goto Error */ $s = 7; continue;
/* } */ case 22:
case 17:
/* */ if (((v >> 0)) >= base) { $s = 23; continue; }
/* */ $s = 24; continue;
/* if (((v >> 0)) >= base) { */ case 23:
n = new $Uint64(0, 0);
err = strconv.ErrSyntax;
/* goto Error */ $s = 7; continue;
/* } */ case 24:
/* */ if ((n.$high > cutoff.$high || (n.$high === cutoff.$high && n.$low >= cutoff.$low))) { $s = 25; continue; }
/* */ $s = 26; continue;
/* if ((n.$high > cutoff.$high || (n.$high === cutoff.$high && n.$low >= cutoff.$low))) { */ case 25:
n = new $Uint64(4294967295, 4294967295);
err = strconv.ErrRange;
/* goto Error */ $s = 7; continue;
/* } */ case 26:
n = $mul64(n, ((new $Uint64(0, base))));
n1 = (x$4 = (new $Uint64(0, v)), new $Uint64(n.$high + x$4.$high, n.$low + x$4.$low));
/* */ 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; }
/* */ $s = 28; continue;
/* 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:
n = new $Uint64(4294967295, 4294967295);
err = strconv.ErrRange;
/* goto Error */ $s = 7; continue;
/* } */ case 28:
n = n1;
i = i + (1) >> 0;
/* } */ $s = 15; continue; case 16:
_tmp$2 = n;
_tmp$3 = $ifaceNil;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
/* Error: */ case 7:
_tmp$4 = n;
_tmp$5 = new strconv.NumError.ptr("ParseUint", ($bytesToString(s0)), err);
n = _tmp$4;
err = _tmp$5;
$s = -1; return [n, err];
$s = -1; return [n, err];
/* */ } return; }
};
http2cutoff64 = function(base) {
var $ptr, base, x$3;
if (base < 2) {
return new $Uint64(0, 0);
}
return (x$3 = $div64(new $Uint64(4294967295, 4294967295), (new $Uint64(0, base)), false), new $Uint64(x$3.$high + 0, x$3.$low + 1));
};
init = function() {
var $ptr, _i, _key, _key$1, _ref, chk, v;
_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"]);
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
chk = CanonicalHeaderKey(v);
_key = chk; (http2commonLowerHeader || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: v };
_key$1 = v; (http2commonCanonHeader || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$1)] = { k: _key$1, v: chk };
_i++;
}
};
http2lowerHeader = function(v) {
var $ptr, _entry, _r, _tuple, ok, s, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _r = $f._r; _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:
_tuple = (_entry = http2commonLowerHeader[$String.keyFor(v)], _entry !== undefined ? [_entry.v, true] : ["", false]);
s = _tuple[0];
ok = _tuple[1];
if (ok) {
$s = -1; return s;
}
_r = strings.ToLower(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2lowerHeader }; } $f.$ptr = $ptr; $f._entry = _entry; $f._r = _r; $f._tuple = _tuple; $f.ok = ok; $f.s = s; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
init$1 = function() {
var $ptr, e;
e = os.Getenv("GODEBUG");
if (strings.Contains(e, "http2debug=1")) {
http2VerboseLogs = true;
}
if (strings.Contains(e, "http2debug=2")) {
http2VerboseLogs = true;
http2logFrameWrites = true;
http2logFrameReads = true;
}
};
http2streamState.prototype.String = function() {
var $ptr, st;
st = this.$val;
return ((st < 0 || st >= http2stateName.length) ? ($throwRuntimeError("index out of range"), undefined) : http2stateName[st]);
};
$ptrType(http2streamState).prototype.String = function() { return new http2streamState(this.$get()).String(); };
http2Setting.ptr.prototype.String = function() {
var $ptr, _r, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
s = this;
_r = fmt.Sprintf("[%v = %d]", new sliceType([new http2SettingID(s.ID), new $Uint32(s.Val)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Setting.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
http2Setting.prototype.String = function() { return this.$val.String(); };
http2Setting.ptr.prototype.Valid = function() {
var $ptr, _1, s;
s = this;
_1 = s.ID;
if (_1 === (2)) {
if (!((s.Val === 1)) && !((s.Val === 0))) {
return new http2ConnectionError(1);
}
} else if (_1 === (4)) {
if (s.Val > 2147483647) {
return new http2ConnectionError(3);
}
} else if (_1 === (5)) {
if (s.Val < 16384 || s.Val > 16777215) {
return new http2ConnectionError(1);
}
}
return $ifaceNil;
};
http2Setting.prototype.Valid = function() { return this.$val.Valid(); };
http2SettingID.prototype.String = function() {
var $ptr, _entry, _r, _tuple, ok, s, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _r = $f._r; _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:
s = this.$val;
_tuple = (_entry = http2settingName[http2SettingID.keyFor(s)], _entry !== undefined ? [_entry.v, true] : ["", false]);
v = _tuple[0];
ok = _tuple[1];
if (ok) {
$s = -1; return v;
}
_r = fmt.Sprintf("UNKNOWN_SETTING_%d", new sliceType([new $Uint16(((s << 16 >>> 16)))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2SettingID.prototype.String }; } $f.$ptr = $ptr; $f._entry = _entry; $f._r = _r; $f._tuple = _tuple; $f.ok = ok; $f.s = s; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(http2SettingID).prototype.String = function() { return new http2SettingID(this.$get()).String(); };
http2validWireHeaderFieldName = function(v) {
var $ptr, _i, _ref, _rune, r, v;
if (v.length === 0) {
return false;
}
_ref = v;
_i = 0;
while (true) {
if (!(_i < _ref.length)) { break; }
_rune = $decodeRune(_ref, _i);
r = _rune[0];
if (!httplex.IsTokenRune(r)) {
return false;
}
if (65 <= r && r <= 90) {
return false;
}
_i += _rune[1];
}
return true;
};
init$2 = function() {
var $ptr, _key, i, v;
i = 100;
while (true) {
if (!(i <= 999)) { break; }
v = StatusText(i);
if (!(v === "")) {
_key = i; (http2httpCodeStringCommon || $throwRuntimeError("assignment to entry in nil map"))[$Int.keyFor(_key)] = { k: _key, v: strconv.Itoa(i) };
}
i = i + (1) >> 0;
}
};
http2httpCodeString = function(code) {
var $ptr, _entry, _tuple, code, ok, s;
_tuple = (_entry = http2httpCodeStringCommon[$Int.keyFor(code)], _entry !== undefined ? [_entry.v, true] : ["", false]);
s = _tuple[0];
ok = _tuple[1];
if (ok) {
return s;
}
return strconv.Itoa(code);
};
http2gate.prototype.Done = function() {
var $ptr, g, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; g = $f.g; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
g = this.$val;
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2gate.prototype.Done }; } $f.$ptr = $ptr; $f.g = g; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(http2gate).prototype.Done = function() { return new http2gate(this.$get()).Done(); };
http2gate.prototype.Wait = function() {
var $ptr, _r, g, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; g = $f.g; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
g = this.$val;
_r = $recv(g); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r[0];
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2gate.prototype.Wait }; } $f.$ptr = $ptr; $f._r = _r; $f.g = g; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(http2gate).prototype.Wait = function() { return new http2gate(this.$get()).Wait(); };
$ptrType(http2closeWaiter).prototype.Init = function() {
var $ptr, cw;
cw = this;
cw.$set(new $Chan(structType, 0));
};
http2closeWaiter.prototype.Close = function() {
var $ptr, cw;
cw = this.$val;
$close(cw);
};
$ptrType(http2closeWaiter).prototype.Close = function() { return new http2closeWaiter(this.$get()).Close(); };
http2closeWaiter.prototype.Wait = function() {
var $ptr, _r, cw, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; cw = $f.cw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
cw = this.$val;
_r = $recv(cw); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r[0];
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2closeWaiter.prototype.Wait }; } $f.$ptr = $ptr; $f._r = _r; $f.cw = cw; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(http2closeWaiter).prototype.Wait = function() { return new http2closeWaiter(this.$get()).Wait(); };
http2newBufferedWriter = function(w) {
var $ptr, w;
return new http2bufferedWriter.ptr(w, ptrType$10.nil);
};
http2bufferedWriter.ptr.prototype.Available = function() {
var $ptr, w;
w = this;
if (w.bw === ptrType$10.nil) {
return 4096;
}
return w.bw.Available();
};
http2bufferedWriter.prototype.Available = function() { return this.$val.Available(); };
http2bufferedWriter.ptr.prototype.Write = function(p) {
var $ptr, _r, _r$1, _tuple, bw, err, n, p, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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:
n = 0;
err = $ifaceNil;
w = this;
/* */ if (w.bw === ptrType$10.nil) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (w.bw === ptrType$10.nil) { */ case 1:
_r = http2bufWriterPool.Get(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
bw = $assertType(_r, ptrType$10);
bw.Reset(w.w);
w.bw = bw;
/* } */ case 2:
_r$1 = w.bw.Write(p); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
n = _tuple[0];
err = _tuple[1];
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2bufferedWriter.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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;
};
http2bufferedWriter.prototype.Write = function(p) { return this.$val.Write(p); };
http2bufferedWriter.ptr.prototype.Flush = function() {
var $ptr, _r, bw, err, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; bw = $f.bw; err = $f.err; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
w = this;
bw = w.bw;
if (bw === ptrType$10.nil) {
$s = -1; return $ifaceNil;
}
_r = bw.Flush(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
bw.Reset($ifaceNil);
http2bufWriterPool.Put(bw);
w.bw = ptrType$10.nil;
$s = -1; return err;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2bufferedWriter.ptr.prototype.Flush }; } $f.$ptr = $ptr; $f._r = _r; $f.bw = bw; $f.err = err; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
http2bufferedWriter.prototype.Flush = function() { return this.$val.Flush(); };
http2mustUint31 = function(v) {
var $ptr, v;
if (v < 0 || v > 2147483647) {
$panic(new $String("out of range"));
}
return ((v >>> 0));
};
http2bodyAllowedForStatus = function(status) {
var $ptr, status;
if (status >= 100 && status <= 199) {
return false;
} else if ((status === 204)) {
return false;
} else if ((status === 304)) {
return false;
}
return true;
};
http2httpError.ptr.prototype.Error = function() {
var $ptr, e;
e = this;
return e.msg;
};
http2httpError.prototype.Error = function() { return this.$val.Error(); };
http2httpError.ptr.prototype.Timeout = function() {
var $ptr, e;
e = this;
return e.timeout;
};
http2httpError.prototype.Timeout = function() { return this.$val.Timeout(); };
http2httpError.ptr.prototype.Temporary = function() {
var $ptr, e;
e = this;
return true;
};
http2httpError.prototype.Temporary = function() { return this.$val.Temporary(); };
http2sorter.ptr.prototype.Len = function() {
var $ptr, s;
s = this;
return s.v.$length;
};
http2sorter.prototype.Len = function() { return this.$val.Len(); };
http2sorter.ptr.prototype.Swap = function(i, j) {
var $ptr, _tmp, _tmp$1, i, j, s, x$3, x$4, x$5, x$6;
s = this;
_tmp = (x$3 = s.v, ((j < 0 || j >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + j]));
_tmp$1 = (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, ((i < 0 || i >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + i] = _tmp));
(x$6 = s.v, ((j < 0 || j >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + j] = _tmp$1));
};
http2sorter.prototype.Swap = function(i, j) { return this.$val.Swap(i, j); };
http2sorter.ptr.prototype.Less = function(i, j) {
var $ptr, i, j, s, x$3, x$4;
s = this;
return (x$3 = s.v, ((i < 0 || i >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i])) < (x$4 = s.v, ((j < 0 || j >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + j]));
};
http2sorter.prototype.Less = function(i, j) { return this.$val.Less(i, j); };
http2sorter.ptr.prototype.Keys = function(h) {
var $ptr, _entry, _i, _keys, _ref, h, k, keys, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
s = this;
keys = $subslice(s.v, 0, 0);
_ref = h;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
continue;
}
k = _entry.k;
keys = $append(keys, k);
_i++;
}
s.v = keys;
$r = sort.Sort(s); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return keys;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2sorter.ptr.prototype.Keys }; } $f.$ptr = $ptr; $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;
};
http2sorter.prototype.Keys = function(h) { return this.$val.Keys(h); };
http2sorter.ptr.prototype.SortStrings = function(ss) {
var $ptr, s, save, ss, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; s = $f.s; save = $f.save; ss = $f.ss; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
s = this;
save = s.v;
s.v = ss;
$r = sort.Sort(s); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
s.v = save;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2sorter.ptr.prototype.SortStrings }; } $f.$ptr = $ptr; $f.s = s; $f.save = save; $f.ss = ss; $f.$s = $s; $f.$r = $r; return $f;
};
http2sorter.prototype.SortStrings = function(ss) { return this.$val.SortStrings(ss); };
http2validPseudoPath = function(v) {
var $ptr, v;
return (v.length > 0 && (v.charCodeAt(0) === 47) && ((v.length === 1) || !((v.charCodeAt(1) === 47)))) || v === "*";
};
http2pipe.ptr.prototype.Len = function() {
var $ptr, _r, p, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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);
p = this;
$r = p.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(p.mu, "Unlock"), []]);
_r = p.b.Len(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } 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.$ptr = $ptr; $f._r = _r; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
http2pipe.prototype.Len = function() { return this.$val.Len(); };
http2pipe.ptr.prototype.Read = function(d) {
var $ptr, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, d, err, n, p, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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);
n = 0;
err = $ifaceNil;
p = this;
$r = p.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(p.mu, "Unlock"), []]);
if ($interfaceIsEqual(p.c.L, $ifaceNil)) {
p.c.L = p.mu;
}
/* while (true) { */ case 2:
if (!($interfaceIsEqual(p.breakErr, $ifaceNil))) {
_tmp = 0;
_tmp$1 = p.breakErr;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
_r = p.b.Len(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (_r > 0) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (_r > 0) { */ case 4:
_r$1 = p.b.Read(d); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
n = _tuple[0];
err = _tuple[1];
$s = -1; return [n, err];
/* } */ case 5:
/* */ if (!($interfaceIsEqual(p.err, $ifaceNil))) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (!($interfaceIsEqual(p.err, $ifaceNil))) { */ case 8:
/* */ if (!(p.readFn === $throwNilPointerError)) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (!(p.readFn === $throwNilPointerError)) { */ case 10:
$r = p.readFn(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
p.readFn = $throwNilPointerError;
/* } */ case 11:
_tmp$2 = 0;
_tmp$3 = p.err;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
/* } */ case 9:
$r = p.c.Wait(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ $s = 2; continue; case 3:
$s = -1; return [n, err];
/* */ } 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.$ptr = $ptr; $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.d = d; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
http2pipe.prototype.Read = function(d) { return this.$val.Read(d); };
http2pipe.ptr.prototype.Write = function(d) {
var $ptr, _r, _tmp, _tmp$1, _tuple, d, err, n, p, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _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);
n = 0;
err = $ifaceNil;
p = this;
$r = p.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(p.mu, "Unlock"), []]);
if ($interfaceIsEqual(p.c.L, $ifaceNil)) {
p.c.L = p.mu;
}
$deferred.push([$methodVal(p.c, "Signal"), []]);
if (!($interfaceIsEqual(p.err, $ifaceNil))) {
_tmp = 0;
_tmp$1 = http2errClosedPipeWrite;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
_r = p.b.Write(d); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
$s = -1; return [n, err];
/* */ } 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.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $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; } }
};
http2pipe.prototype.Write = function(d) { return this.$val.Write(d); };
http2pipe.ptr.prototype.CloseWithError = function(err) {
var $ptr, err, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; err = $f.err; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
p = this;
$r = p.closeWithError((p.$ptr_err || (p.$ptr_err = new ptrType$48(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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2pipe.ptr.prototype.CloseWithError }; } $f.$ptr = $ptr; $f.err = err; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
};
http2pipe.prototype.CloseWithError = function(err) { return this.$val.CloseWithError(err); };
http2pipe.ptr.prototype.BreakWithError = function(err) {
var $ptr, err, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; err = $f.err; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
p = this;
$r = p.closeWithError((p.$ptr_breakErr || (p.$ptr_breakErr = new ptrType$48(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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2pipe.ptr.prototype.BreakWithError }; } $f.$ptr = $ptr; $f.err = err; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
};
http2pipe.prototype.BreakWithError = function(err) { return this.$val.BreakWithError(err); };
http2pipe.ptr.prototype.closeWithErrorAndCode = function(err, fn) {
var $ptr, err, fn, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; err = $f.err; fn = $f.fn; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
p = this;
$r = p.closeWithError((p.$ptr_err || (p.$ptr_err = new ptrType$48(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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2pipe.ptr.prototype.closeWithErrorAndCode }; } $f.$ptr = $ptr; $f.err = err; $f.fn = fn; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
};
http2pipe.prototype.closeWithErrorAndCode = function(err, fn) { return this.$val.closeWithErrorAndCode(err, fn); };
http2pipe.ptr.prototype.closeWithError = function(dst, err, fn) {
var $ptr, dst, err, fn, p, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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);
p = this;
if ($interfaceIsEqual(err, $ifaceNil)) {
$panic(new $String("err must be non-nil"));
}
$r = p.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(p.mu, "Unlock"), []]);
if ($interfaceIsEqual(p.c.L, $ifaceNil)) {
p.c.L = p.mu;
}
$deferred.push([$methodVal(p.c, "Signal"), []]);
if (!($interfaceIsEqual(dst.$get(), $ifaceNil))) {
$s = -1; return;
}
p.readFn = fn;
dst.$set(err);
p.closeDoneLocked();
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2pipe.ptr.prototype.closeWithError }; } $f.$ptr = $ptr; $f.dst = dst; $f.err = err; $f.fn = fn; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
http2pipe.prototype.closeWithError = function(dst, err, fn) { return this.$val.closeWithError(dst, err, fn); };
http2pipe.ptr.prototype.closeDoneLocked = function() {
var $ptr, _selection, p, $r;
/* */ var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _selection = $f._selection; p = $f.p; $r = $f.$r; }
p = this;
if (p.donec === $chanNil) {
return;
}
_selection = $select([[p.donec], []]);
if (_selection[0] === 0) {
} else if (_selection[0] === 1) {
$close(p.donec);
}
/* */ if ($f === undefined) { $f = { $blk: http2pipe.ptr.prototype.closeDoneLocked }; } $f.$ptr = $ptr; $f._selection = _selection; $f.p = p; $f.$r = $r; return $f;
};
http2pipe.prototype.closeDoneLocked = function() { return this.$val.closeDoneLocked(); };
http2pipe.ptr.prototype.Err = function() {
var $ptr, p, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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);
p = this;
$r = p.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(p.mu, "Unlock"), []]);
if (!($interfaceIsEqual(p.breakErr, $ifaceNil))) {
$s = -1; return p.breakErr;
}
$s = -1; return p.err;
/* */ } 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.$ptr = $ptr; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
http2pipe.prototype.Err = function() { return this.$val.Err(); };
http2pipe.ptr.prototype.Done = function() {
var $ptr, p, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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);
p = this;
$r = p.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(p.mu, "Unlock"), []]);
if (p.donec === $chanNil) {
p.donec = new $Chan(structType, 0);
if (!($interfaceIsEqual(p.err, $ifaceNil)) || !($interfaceIsEqual(p.breakErr, $ifaceNil))) {
p.closeDoneLocked();
}
}
$s = -1; return p.donec;
/* */ } 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.$ptr = $ptr; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
http2pipe.prototype.Done = function() { return this.$val.Done(); };
http2Server.ptr.prototype.maxReadFrameSize = function() {
var $ptr, s, v;
s = this;
v = s.MaxReadFrameSize;
if (v >= 16384 && v <= 16777215) {
return v;
}
return 1048576;
};
http2Server.prototype.maxReadFrameSize = function() { return this.$val.maxReadFrameSize(); };
http2Server.ptr.prototype.maxConcurrentStreams = function() {
var $ptr, s, v;
s = this;
v = s.MaxConcurrentStreams;
if (v > 0) {
return v;
}
return 250;
};
http2Server.prototype.maxConcurrentStreams = function() { return this.$val.maxConcurrentStreams(); };
http2ConfigureServer = function(s, conf) {
var $ptr, _i, _i$1, _key, _r, _r$1, _ref, _ref$1, conf, cs, err, haveNPN, haveRequired, i, p, protoHandler, s, sawBad, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _i$1 = $f._i$1; _key = $f._key; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _ref$1 = $f._ref$1; conf = $f.conf; cs = $f.cs; err = $f.err; 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:
conf = [conf];
if (s === ptrType$44.nil) {
$panic(new $String("nil *http.Server"));
}
if (conf[0] === ptrType$49.nil) {
conf[0] = new http2Server.ptr(0, 0, 0, false, new time.Duration(0, 0), $throwNilPointerError);
}
err = http2configureServer18(s, conf[0]);
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
/* */ if (s.TLSConfig === ptrType$13.nil) { $s = 1; continue; }
/* */ if (!(s.TLSConfig.CipherSuites === sliceType$11.nil)) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (s.TLSConfig === ptrType$13.nil) { */ case 1:
s.TLSConfig = new tls.Config.ptr($ifaceNil, $throwNilPointerError, sliceType$10.nil, false, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, ptrType$30.nil, sliceType$1.nil, "", 0, ptrType$30.nil, false, sliceType$11.nil, false, false, arrayType$2.zero(), $ifaceNil, 0, 0, sliceType$12.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$13.nil, ptrType$13.nil);
$s = 3; continue;
/* } else if (!(s.TLSConfig.CipherSuites === sliceType$11.nil)) { */ case 2:
haveRequired = false;
sawBad = false;
_ref = s.TLSConfig.CipherSuites;
_i = 0;
/* while (true) { */ case 4:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; }
i = _i;
cs = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (cs === 49199) {
haveRequired = true;
}
/* */ if (http2isBadCipher(cs)) { $s = 6; continue; }
/* */ if (sawBad) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (http2isBadCipher(cs)) { */ case 6:
sawBad = true;
$s = 8; continue;
/* } else if (sawBad) { */ case 7:
_r = 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 = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 8:
_i++;
/* } */ $s = 4; continue; case 5:
/* */ if (!haveRequired) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (!haveRequired) { */ case 10:
_r$1 = fmt.Errorf("http2: TLSConfig.CipherSuites is missing HTTP/2-required TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", new sliceType([])); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* } */ case 11:
/* } */ case 3:
s.TLSConfig.PreferServerCipherSuites = true;
haveNPN = false;
_ref$1 = s.TLSConfig.NextProtos;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
p = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
if (p === "h2") {
haveNPN = true;
break;
}
_i$1++;
}
if (!haveNPN) {
s.TLSConfig.NextProtos = $append(s.TLSConfig.NextProtos, "h2");
}
if (s.TLSNextProto === false) {
s.TLSNextProto = $makeMap($String.keyFor, []);
}
protoHandler = (function(conf) { return function $b(hs, c, h) {
var $ptr, c, h, hs, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; c = $f.c; h = $f.h; hs = $f.hs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
/* */ if (!(http2testHookOnConn === $throwNilPointerError)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(http2testHookOnConn === $throwNilPointerError)) { */ case 1:
$r = http2testHookOnConn(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.c = c; $f.h = h; $f.hs = hs; $f.$s = $s; $f.$r = $r; return $f;
}; })(conf);
_key = "h2"; (s.TLSNextProto || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: protoHandler };
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2ConfigureServer }; } $f.$ptr = $ptr; $f._i = _i; $f._i$1 = _i$1; $f._key = _key; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f.conf = conf; $f.cs = cs; $f.err = err; $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;
};
http2ServeConnOpts.ptr.prototype.baseConfig = function() {
var $ptr, o;
o = this;
if (!(o === ptrType$50.nil) && !(o.BaseConfig === ptrType$44.nil)) {
return o.BaseConfig;
}
return new Server.ptr("", $ifaceNil, ptrType$13.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$51.nil, 0, 0, new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0), $ifaceNil, new sync.Mutex.ptr(0, 0), false, false, $chanNil);
};
http2ServeConnOpts.prototype.baseConfig = function() { return this.$val.baseConfig(); };
http2ServeConnOpts.ptr.prototype.handler = function() {
var $ptr, o;
o = this;
if (!(o === ptrType$50.nil)) {
if (!($interfaceIsEqual(o.Handler, $ifaceNil))) {
return o.Handler;
}
if (!(o.BaseConfig === ptrType$44.nil) && !($interfaceIsEqual(o.BaseConfig.Handler, $ifaceNil))) {
return o.BaseConfig.Handler;
}
}
return $pkg.DefaultServeMux;
};
http2ServeConnOpts.prototype.handler = function() { return this.$val.handler(); };
http2Server.ptr.prototype.ServeConn = function(c, opts) {
var $ptr, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, _tuple$1, baseCtx, c, cancel, fr, hook, ok, opts, s, sc, tc, x$3, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _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; 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$3 = $f.x$3; $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);
s = this;
_r = http2serverConnBaseContext(c, opts); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
baseCtx = _tuple[0];
cancel = _tuple[1];
$deferred.push([cancel, []]);
_r$1 = c.RemoteAddr(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$2 = _r$1.String(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$3 = http2newGoroutineLock(); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
sc = new http2serverConn.ptr(s, opts.baseConfig(), c, http2newBufferedWriter(c), opts.handler(), baseCtx, ptrType$32.nil, new $Chan(structType, 0), new $Chan(http2readFrameResult, 0), new $Chan(http2FrameWriteRequest, 8), new $Chan(http2startPushRequest, 8), new $Chan(http2frameWriteResult, 1), new $Chan(http2bodyReadMsg, 0), $chanNil, new http2flow.ptr(0, ptrType$31.nil), new http2flow.ptr(0, ptrType$31.nil), ptrType$17.nil, _r$2, $ifaceNil, _r$3, true, false, false, 0, 4294967295, s.maxConcurrentStreams(), 0, 0, 0, 0, {}, 65535, 16384, 4096, 0, false, false, false, false, false, false, false, 0, $chanNil, ptrType$53.nil, ptrType$53.nil, $chanNil, new bytes.Buffer.ptr(sliceType$2.nil, 0, arrayType.zero(), 0), ptrType$54.nil);
/* */ if (!((x$3 = sc.hs.WriteTimeout, (x$3.$high === 0 && x$3.$low === 0)))) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (!((x$3 = sc.hs.WriteTimeout, (x$3.$high === 0 && x$3.$low === 0)))) { */ case 5:
_r$4 = sc.conn.SetWriteDeadline(new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil)); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_r$4;
/* } */ case 6:
/* */ if (!(s.NewWriteScheduler === $throwNilPointerError)) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (!(s.NewWriteScheduler === $throwNilPointerError)) { */ case 8:
_r$5 = s.NewWriteScheduler(); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
sc.writeSched = _r$5;
$s = 10; continue;
/* } else { */ case 9:
sc.writeSched = http2NewRandomWriteScheduler();
/* } */ case 10:
sc.flow.add(65535);
sc.inflow.add(65535);
sc.hpackEncoder = hpack.NewEncoder(sc.headerWriteBuf);
fr = http2NewFramer(sc.bw, c);
fr.ReadMetaHeaders = hpack.NewDecoder(4096, $throwNilPointerError);
fr.MaxHeaderListSize = sc.maxHeaderListSize();
fr.SetMaxReadFrameSize(s.maxReadFrameSize());
sc.framer = fr;
_tuple$1 = $assertType(c, http2connectionStater, true);
tc = _tuple$1[0];
ok = _tuple$1[1];
/* */ if (ok) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (ok) { */ case 12:
sc.tlsState = new tls.ConnectionState.ptr(0, false, false, 0, "", false, "", sliceType$15.nil, sliceType$16.nil, sliceType$4.nil, sliceType$2.nil, sliceType$2.nil);
_r$6 = tc.ConnectionState(); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
tls.ConnectionState.copy(sc.tlsState, _r$6);
/* */ if (sc.tlsState.Version < 771) { $s = 15; continue; }
/* */ $s = 16; continue;
/* if (sc.tlsState.Version < 771) { */ case 15:
$r = sc.rejectConn(12, "TLS version too low"); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } */ case 16:
if (sc.tlsState.ServerName === "") {
}
/* */ if (!s.PermitProhibitedCipherSuites && http2isBadCipher(sc.tlsState.CipherSuite)) { $s = 18; continue; }
/* */ $s = 19; continue;
/* if (!s.PermitProhibitedCipherSuites && http2isBadCipher(sc.tlsState.CipherSuite)) { */ case 18:
_r$7 = fmt.Sprintf("Prohibited TLS 1.2 Cipher Suite: %x", new sliceType([new $Uint16(sc.tlsState.CipherSuite)])); /* */ $s = 20; case 20: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_arg = _r$7;
$r = sc.rejectConn(12, _arg); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } */ case 19:
/* } */ case 13:
hook = http2testHookGetServerConn;
/* */ if (!(hook === $throwNilPointerError)) { $s = 22; continue; }
/* */ $s = 23; continue;
/* if (!(hook === $throwNilPointerError)) { */ case 22:
$r = hook(sc); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 23:
$r = sc.serve(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2Server.ptr.prototype.ServeConn }; } $f.$ptr = $ptr; $f._arg = _arg; $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.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$3 = x$3; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
http2Server.prototype.ServeConn = function(c, opts) { return this.$val.ServeConn(c, opts); };
http2serverConn.ptr.prototype.rejectConn = function(err, debug) {
var $ptr, _r, _r$1, _r$2, debug, err, sc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; debug = $f.debug; err = $f.err; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
$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; }
_r = sc.framer.WriteGoAway(0, err, (new sliceType$2($stringToBytes(debug)))); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
_r$1 = sc.bw.Flush(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
_r$2 = sc.conn.Close(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.rejectConn }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.debug = debug; $f.err = err; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.rejectConn = function(err, debug) { return this.$val.rejectConn(err, debug); };
http2serverConn.ptr.prototype.maxHeaderListSize = function() {
var $ptr, n, sc;
sc = this;
n = sc.hs.MaxHeaderBytes;
if (n <= 0) {
n = 1048576;
}
return (((n + 320 >> 0) >>> 0));
};
http2serverConn.prototype.maxHeaderListSize = function() { return this.$val.maxHeaderListSize(); };
http2serverConn.ptr.prototype.curOpenStreams = function() {
var $ptr, sc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return sc.curClientStreams + sc.curPushedStreams >>> 0;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.curOpenStreams }; } $f.$ptr = $ptr; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.curOpenStreams = function() { return this.$val.curOpenStreams(); };
http2serverConn.ptr.prototype.Framer = function() {
var $ptr, sc;
sc = this;
return sc.framer;
};
http2serverConn.prototype.Framer = function() { return this.$val.Framer(); };
http2serverConn.ptr.prototype.CloseConn = function() {
var $ptr, _r, sc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
_r = sc.conn.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.CloseConn }; } $f.$ptr = $ptr; $f._r = _r; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.CloseConn = function() { return this.$val.CloseConn(); };
http2serverConn.ptr.prototype.Flush = function() {
var $ptr, _r, sc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
_r = sc.bw.Flush(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.Flush }; } $f.$ptr = $ptr; $f._r = _r; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.Flush = function() { return this.$val.Flush(); };
http2serverConn.ptr.prototype.HeaderEncoder = function() {
var $ptr, sc;
sc = this;
return [sc.hpackEncoder, sc.headerWriteBuf];
};
http2serverConn.prototype.HeaderEncoder = function() { return this.$val.HeaderEncoder(); };
http2serverConn.ptr.prototype.state = function(streamID) {
var $ptr, _entry, _r, _tuple, ok, sc, st, streamID, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _r = $f._r; _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:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_tuple = (_entry = sc.streams[$Uint32.keyFor(streamID)], _entry !== undefined ? [_entry.v, true] : [ptrType$6.nil, false]);
st = _tuple[0];
ok = _tuple[1];
if (ok) {
$s = -1; return [st.state, st];
}
if ((_r = streamID % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 1) {
if (streamID <= sc.maxClientStreamID) {
$s = -1; return [4, ptrType$6.nil];
}
} else {
if (streamID <= sc.maxPushPromiseID) {
$s = -1; return [4, ptrType$6.nil];
}
}
$s = -1; return [0, ptrType$6.nil];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.state }; } $f.$ptr = $ptr; $f._entry = _entry; $f._r = _r; $f._tuple = _tuple; $f.ok = ok; $f.sc = sc; $f.st = st; $f.streamID = streamID; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.state = function(streamID) { return this.$val.state(streamID); };
http2serverConn.ptr.prototype.setConnState = function(state) {
var $ptr, sc, state, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; sc = $f.sc; state = $f.state; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
/* */ if (!(sc.hs.ConnState === $throwNilPointerError)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(sc.hs.ConnState === $throwNilPointerError)) { */ case 1:
$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; }
/* } */ case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.setConnState }; } $f.$ptr = $ptr; $f.sc = sc; $f.state = state; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.setConnState = function(state) { return this.$val.setConnState(state); };
http2serverConn.ptr.prototype.vlogf = function(format, args) {
var $ptr, args, format, sc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; args = $f.args; format = $f.format; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
/* */ if (http2VerboseLogs) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (http2VerboseLogs) { */ case 1:
$r = sc.logf(format, args); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.vlogf }; } $f.$ptr = $ptr; $f.args = args; $f.format = format; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.vlogf = function(format, args) { return this.$val.vlogf(format, args); };
http2serverConn.ptr.prototype.logf = function(format, args) {
var $ptr, args, format, lg, sc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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:
sc = this;
lg = sc.hs.ErrorLog;
/* */ if (!(lg === ptrType$51.nil)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(lg === ptrType$51.nil)) { */ case 1:
$r = lg.Printf(format, args); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 3; continue;
/* } else { */ case 2:
$r = log.Printf(format, args); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 3:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.logf }; } $f.$ptr = $ptr; $f.args = args; $f.format = format; $f.lg = lg; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.logf = function(format, args) { return this.$val.logf(format, args); };
http2errno = function(v) {
var $ptr, _r, rv, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; rv = $f.rv; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = reflect.ValueOf(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
rv = _r;
if ($clone(rv, reflect.Value).Kind() === 12) {
$s = -1; return (($clone(rv, reflect.Value).Uint().$low >>> 0));
}
$s = -1; return 0;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2errno }; } $f.$ptr = $ptr; $f._r = _r; $f.rv = rv; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
http2isClosedConnError = function(err) {
var $ptr, _r, _r$1, _tuple, _tuple$1, err, n, oe, ok, ok$1, se, str, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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:
if ($interfaceIsEqual(err, $ifaceNil)) {
$s = -1; return false;
}
_r = err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
str = _r;
if (strings.Contains(str, "use of closed network connection")) {
$s = -1; return true;
}
/* */ if (true) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (true) { */ case 2:
_tuple = $assertType(err, ptrType$56, true);
oe = _tuple[0];
ok = _tuple[1];
/* */ if (ok && oe.Op === "read") { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (ok && oe.Op === "read") { */ case 4:
_tuple$1 = $assertType(oe.Err, ptrType$57, true);
se = _tuple$1[0];
ok$1 = _tuple$1[1];
/* */ if (ok$1 && se.Syscall === "wsarecv") { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (ok$1 && se.Syscall === "wsarecv") { */ case 6:
_r$1 = http2errno(se.Err); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
n = _r$1;
if ((n === 10054) || (n === 10053)) {
$s = -1; return true;
}
/* } */ case 7:
/* } */ case 5:
/* } */ case 3:
$s = -1; return false;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2isClosedConnError }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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;
};
http2serverConn.ptr.prototype.condlogf = function(err, format, args) {
var $ptr, _r, _v, args, err, format, sc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
sc = this;
if ($interfaceIsEqual(err, $ifaceNil)) {
$s = -1; return;
}
if ($interfaceIsEqual(err, io.EOF) || $interfaceIsEqual(err, io.ErrUnexpectedEOF)) { _v = true; $s = 4; continue s; }
_r = http2isClosedConnError(err); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_v = _r; case 4:
/* */ if (_v) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (_v) { */ case 1:
$r = sc.vlogf(format, args); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 3; continue;
/* } else { */ case 2:
$r = sc.logf(format, args); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 3:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.condlogf }; } $f.$ptr = $ptr; $f._r = _r; $f._v = _v; $f.args = args; $f.err = err; $f.format = format; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.condlogf = function(err, format, args) { return this.$val.condlogf(err, format, args); };
http2serverConn.ptr.prototype.canonicalHeader = function(v) {
var $ptr, _entry, _entry$1, _key, _tuple, _tuple$1, cv, ok, sc, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_tuple = (_entry = http2commonCanonHeader[$String.keyFor(v)], _entry !== undefined ? [_entry.v, true] : ["", false]);
cv = _tuple[0];
ok = _tuple[1];
if (ok) {
$s = -1; return cv;
}
_tuple$1 = (_entry$1 = sc.canonHeader[$String.keyFor(v)], _entry$1 !== undefined ? [_entry$1.v, true] : ["", false]);
cv = _tuple$1[0];
ok = _tuple$1[1];
if (ok) {
$s = -1; return cv;
}
if (sc.canonHeader === false) {
sc.canonHeader = {};
}
cv = CanonicalHeaderKey(v);
_key = v; (sc.canonHeader || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: cv };
$s = -1; return cv;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.canonicalHeader }; } $f.$ptr = $ptr; $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;
};
http2serverConn.prototype.canonicalHeader = function(v) { return this.$val.canonicalHeader(v); };
http2serverConn.ptr.prototype.readFrames = function() {
var $ptr, _r, _r$1, _r$2, _selection, _selection$1, _tuple, err, f, gate, gateDone, sc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _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:
sc = this;
gate = new $Chan(structType, 0);
gateDone = $methodVal(new http2gate(gate), "Done");
/* while (true) { */ case 1:
_r = sc.framer.ReadFrame(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
f = _tuple[0];
err = _tuple[1];
_r$1 = $select([[sc.readFrameCh, new http2readFrameResult.ptr(f, err, gateDone)], [sc.doneServing]]); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_selection = _r$1;
if (_selection[0] === 0) {
} else if (_selection[0] === 1) {
$s = -1; return;
}
_r$2 = $select([[gate], [sc.doneServing]]); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_selection$1 = _r$2;
if (_selection$1[0] === 0) {
} else if (_selection$1[0] === 1) {
$s = -1; return;
}
if (http2terminalReadFrameError(err)) {
$s = -1; return;
}
/* } */ $s = 1; continue; case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.readFrames }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $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;
};
http2serverConn.prototype.readFrames = function() { return this.$val.readFrames(); };
http2serverConn.ptr.prototype.writeFrameAsync = function(wr) {
var $ptr, _r, err, sc, wr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; err = $f.err; sc = $f.sc; wr = $f.wr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
_r = wr.write.writeFrame(sc); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.writeFrameAsync }; } $f.$ptr = $ptr; $f._r = _r; $f.err = err; $f.sc = sc; $f.wr = wr; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.writeFrameAsync = function(wr) { return this.$val.writeFrameAsync(wr); };
http2serverConn.ptr.prototype.closeAllStreamsOnConnClose = function() {
var $ptr, _entry, _i, _keys, _ref, sc, st, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_ref = sc.streams;
_i = 0;
_keys = $keys(_ref);
/* while (true) { */ case 2:
/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 3; continue; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
/* continue; */ $s = 2; continue;
}
st = _entry.v;
$r = sc.closeStream(st, http2errClientDisconnected); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_i++;
/* } */ $s = 2; continue; case 3:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.closeAllStreamsOnConnClose }; } $f.$ptr = $ptr; $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;
};
http2serverConn.prototype.closeAllStreamsOnConnClose = function() { return this.$val.closeAllStreamsOnConnClose(); };
http2serverConn.ptr.prototype.stopShutdownTimer = function() {
var $ptr, sc, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; sc = $f.sc; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
t = sc.shutdownTimer;
if (!(t === ptrType$53.nil)) {
t.Stop();
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.stopShutdownTimer }; } $f.$ptr = $ptr; $f.sc = sc; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.stopShutdownTimer = function() { return this.$val.stopShutdownTimer(); };
http2serverConn.ptr.prototype.notePanic = function() {
var $ptr, _r, e, sc, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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);
sc = this;
/* */ if (!(http2testHookOnPanicMu === ptrType.nil)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(http2testHookOnPanicMu === ptrType.nil)) { */ case 1:
$r = http2testHookOnPanicMu.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(http2testHookOnPanicMu, "Unlock"), []]);
/* } */ case 2:
/* */ if (!(http2testHookOnPanic === $throwNilPointerError)) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!(http2testHookOnPanic === $throwNilPointerError)) { */ case 4:
e = $recover();
/* */ if (!($interfaceIsEqual(e, $ifaceNil))) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!($interfaceIsEqual(e, $ifaceNil))) { */ case 6:
_r = http2testHookOnPanic(sc, e); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (_r) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (_r) { */ case 8:
$panic(e);
/* } */ case 9:
/* } */ case 7:
/* } */ case 5:
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.notePanic }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.sc = sc; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
http2serverConn.prototype.notePanic = function() { return this.$val.notePanic(); };
http2serverConn.ptr.prototype.serve = function() {
var $ptr, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _selection, _v, ch, err, fn, gracefulShutdownCh, loopNum, m, res, res$1, sc, settingsTimer, spr, wr, x$3, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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 = $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; _selection = $f._selection; _v = $f._v; ch = $f.ch; err = $f.err; fn = $f.fn; gracefulShutdownCh = $f.gracefulShutdownCh; loopNum = $f.loopNum; m = $f.m; res = $f.res; res$1 = $f.res$1; sc = $f.sc; settingsTimer = $f.settingsTimer; spr = $f.spr; wr = $f.wr; x$3 = $f.x$3; $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);
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(sc, "notePanic"), []]);
$deferred.push([$methodVal(sc.conn, "Close"), []]);
$deferred.push([$methodVal(sc, "closeAllStreamsOnConnClose"), []]);
$deferred.push([$methodVal(sc, "stopShutdownTimer"), []]);
$deferred.push([function(_arg) { $close(_arg); }, [sc.doneServing]]);
/* */ if (http2VerboseLogs) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (http2VerboseLogs) { */ case 2:
_r = sc.conn.RemoteAddr(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_arg$1 = _r;
_arg$2 = sc.hs;
$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; }
/* } */ case 3:
$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())]), ptrType$6.nil, $chanNil)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
sc.unackedSettings = sc.unackedSettings + (1) >> 0;
_r$1 = sc.readPreface(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
err = _r$1;
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 8:
_arg$3 = err;
_r$2 = sc.conn.RemoteAddr(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_arg$4 = _r$2;
_arg$5 = err;
$r = sc.condlogf(_arg$3, "http2: server: error reading preface from client %v: %v", new sliceType([_arg$4, _arg$5])); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } */ case 9:
$r = sc.setConnState(1); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sc.setConnState(2); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (!((x$3 = sc.srv.IdleTimeout, (x$3.$high === 0 && x$3.$low === 0)))) {
sc.idleTimer = time.NewTimer(sc.srv.IdleTimeout);
$deferred.push([$methodVal(sc.idleTimer, "Stop"), []]);
sc.idleTimerCh = sc.idleTimer.C;
}
gracefulShutdownCh = $chanNil;
/* */ if (!(sc.hs === ptrType$44.nil)) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if (!(sc.hs === ptrType$44.nil)) { */ case 14:
_r$3 = http2h1ServerShutdownChan(sc.hs); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
ch = _r$3;
if (!(ch === $chanNil)) {
gracefulShutdownCh = new $Chan(structType, 0);
$go($methodVal(sc, "awaitGracefulShutdown"), [ch, gracefulShutdownCh]);
}
/* } */ case 15:
$go($methodVal(sc, "readFrames"), []);
settingsTimer = time.NewTimer(new time.Duration(0, 2000000000));
loopNum = 0;
/* while (true) { */ case 17:
loopNum = loopNum + (1) >> 0;
_r$4 = $select([[sc.wantWriteFrameCh], [sc.wantStartPushCh], [sc.wroteFrameCh], [sc.readFrameCh], [sc.bodyReadCh], [settingsTimer.C], [gracefulShutdownCh], [sc.shutdownTimerCh], [sc.idleTimerCh], [sc.testHookCh]]); /* */ $s = 19; case 19: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_selection = _r$4;
/* */ if (_selection[0] === 0) { $s = 20; continue; }
/* */ if (_selection[0] === 1) { $s = 21; continue; }
/* */ if (_selection[0] === 2) { $s = 22; continue; }
/* */ if (_selection[0] === 3) { $s = 23; continue; }
/* */ if (_selection[0] === 4) { $s = 24; continue; }
/* */ if (_selection[0] === 5) { $s = 25; continue; }
/* */ if (_selection[0] === 6) { $s = 26; continue; }
/* */ if (_selection[0] === 7) { $s = 27; continue; }
/* */ if (_selection[0] === 8) { $s = 28; continue; }
/* */ if (_selection[0] === 9) { $s = 29; continue; }
/* */ $s = 30; continue;
/* if (_selection[0] === 0) { */ case 20:
wr = $clone(_selection[1][0], http2FrameWriteRequest);
$r = sc.writeFrame($clone(wr, http2FrameWriteRequest)); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 30; continue;
/* } else if (_selection[0] === 1) { */ case 21:
spr = $clone(_selection[1][0], http2startPushRequest);
$r = sc.startPush($clone(spr, http2startPushRequest)); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 30; continue;
/* } else if (_selection[0] === 2) { */ case 22:
res = $clone(_selection[1][0], http2frameWriteResult);
$r = sc.wroteFrame($clone(res, http2frameWriteResult)); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 30; continue;
/* } else if (_selection[0] === 3) { */ case 23:
res$1 = $clone(_selection[1][0], http2readFrameResult);
_r$5 = sc.processFrameFromReader($clone(res$1, http2readFrameResult)); /* */ $s = 36; case 36: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
/* */ if (!_r$5) { $s = 34; continue; }
/* */ $s = 35; continue;
/* if (!_r$5) { */ case 34:
$s = -1; return;
/* } */ case 35:
$r = res$1.readMore(); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (!(settingsTimer.C === $chanNil)) {
settingsTimer.Stop();
settingsTimer.C = $chanNil;
}
$s = 30; continue;
/* } else if (_selection[0] === 4) { */ case 24:
m = $clone(_selection[1][0], http2bodyReadMsg);
$r = sc.noteBodyRead(m.st, m.n); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 30; continue;
/* } else if (_selection[0] === 5) { */ case 25:
_r$6 = sc.conn.RemoteAddr(); /* */ $s = 39; case 39: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_arg$6 = _r$6;
$r = sc.logf("timeout waiting for SETTINGS frames from %v", new sliceType([_arg$6])); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } else if (_selection[0] === 6) { */ case 26:
gracefulShutdownCh = $chanNil;
$r = sc.startGracefulShutdown(); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 30; continue;
/* } else if (_selection[0] === 7) { */ case 27:
_r$7 = sc.conn.RemoteAddr(); /* */ $s = 42; case 42: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_arg$7 = _r$7;
$r = sc.vlogf("GOAWAY close timer fired; closing conn from %v", new sliceType([_arg$7])); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } else if (_selection[0] === 8) { */ case 28:
$r = sc.vlogf("connection is idle", new sliceType([])); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sc.goAway(0); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 30; continue;
/* } else if (_selection[0] === 9) { */ case 29:
fn = _selection[1][0];
$r = fn(loopNum); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 30:
if (!(sc.inGoAway)) { _v = false; $s = 49; continue s; }
_r$8 = sc.curOpenStreams(); /* */ $s = 50; case 50: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_v = _r$8 === 0; case 49:
/* */ if (_v && !sc.needToSendGoAway && !sc.writingFrame) { $s = 47; continue; }
/* */ $s = 48; continue;
/* if (_v && !sc.needToSendGoAway && !sc.writingFrame) { */ case 47:
$s = -1; return;
/* } */ case 48:
/* } */ $s = 17; continue; case 18:
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.serve }; } $f.$ptr = $ptr; $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 = _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._selection = _selection; $f._v = _v; $f.ch = ch; $f.err = err; $f.fn = fn; $f.gracefulShutdownCh = gracefulShutdownCh; $f.loopNum = loopNum; $f.m = m; $f.res = res; $f.res$1 = res$1; $f.sc = sc; $f.settingsTimer = settingsTimer; $f.spr = spr; $f.wr = wr; $f.x$3 = x$3; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
http2serverConn.prototype.serve = function() { return this.$val.serve(); };
http2serverConn.ptr.prototype.awaitGracefulShutdown = function(sharedCh, privateCh) {
var $ptr, _r, _selection, privateCh, sc, sharedCh, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _selection = $f._selection; privateCh = $f.privateCh; sc = $f.sc; sharedCh = $f.sharedCh; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
_r = $select([[sc.doneServing], [sharedCh]]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_selection = _r;
if (_selection[0] === 0) {
} else if (_selection[0] === 1) {
$close(privateCh);
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.awaitGracefulShutdown }; } $f.$ptr = $ptr; $f._r = _r; $f._selection = _selection; $f.privateCh = privateCh; $f.sc = sc; $f.sharedCh = sharedCh; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.awaitGracefulShutdown = function(sharedCh, privateCh) { return this.$val.awaitGracefulShutdown(sharedCh, privateCh); };
http2serverConn.ptr.prototype.readPreface = function() {
var $ptr, _arg, _r, _r$1, _selection, err, errc, sc, timer, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; _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);
errc = [errc];
sc = [sc];
sc[0] = this;
errc[0] = new $Chan($error, 1);
$go((function(errc, sc) { return function $b() {
var $ptr, _r, _r$1, _tuple, buf, err, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; buf = $f.buf; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
buf = $makeSlice(sliceType$2, 24);
_r = io.ReadFull(sc[0].conn, buf); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
err = _tuple[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
/* */ if (!bytes.Equal(buf, http2clientPreface)) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
$r = $send(errc[0], err); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 5; continue;
/* } else if (!bytes.Equal(buf, http2clientPreface)) { */ case 3:
_r$1 = fmt.Errorf("bogus greeting %q", new sliceType([buf])); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$r = $send(errc[0], _r$1); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 5; continue;
/* } else { */ case 4:
$r = $send(errc[0], $ifaceNil); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 5:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
}; })(errc, sc), []);
timer = time.NewTimer(new time.Duration(2, 1410065408));
$deferred.push([$methodVal(timer, "Stop"), []]);
_r = $select([[timer.C], [errc[0]]]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_selection = _r;
/* */ if (_selection[0] === 0) { $s = 2; continue; }
/* */ if (_selection[0] === 1) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (_selection[0] === 0) { */ case 2:
$s = -1; return errors.New("timeout waiting for client preface");
/* } else if (_selection[0] === 1) { */ case 3:
err = _selection[1][0];
/* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 5:
/* */ if (http2VerboseLogs) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (http2VerboseLogs) { */ case 7:
_r$1 = sc[0].conn.RemoteAddr(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_arg = _r$1;
$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; }
/* } */ case 8:
/* } */ case 6:
$s = -1; return err;
/* } */ case 4:
$s = -1; return $ifaceNil;
/* */ } 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.$ptr = $ptr; $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $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; } }
};
http2serverConn.prototype.readPreface = function() { return this.$val.readPreface(); };
http2serverConn.ptr.prototype.writeDataFromHandler = function(stream, data, endStream) {
var $ptr, _r, _r$1, _r$2, _r$3, _selection, _selection$1, ch, data, endStream, err, frameWriteDone, sc, stream, writeArg, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _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:
sc = this;
_r = http2errChanPool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
ch = $assertType(_r, chanType);
_r$1 = http2writeDataPool.Get(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
writeArg = $assertType(_r$1, ptrType$58);
http2writeData.copy(writeArg, new http2writeData.ptr(stream.id, data, endStream));
_r$2 = sc.writeFrameFromHandler(new http2FrameWriteRequest.ptr(writeArg, stream, ch)); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
err = _r$2;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
frameWriteDone = false;
_r$3 = $select([[ch], [sc.doneServing], [stream.cw]]); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_selection = _r$3;
if (_selection[0] === 0) {
err = _selection[1][0];
frameWriteDone = true;
} else if (_selection[0] === 1) {
$s = -1; return http2errClientDisconnected;
} else if (_selection[0] === 2) {
_selection$1 = $select([[ch], []]);
if (_selection$1[0] === 0) {
err = _selection$1[1][0];
frameWriteDone = true;
} else if (_selection$1[0] === 1) {
$s = -1; return http2errStreamClosed;
}
}
http2errChanPool.Put(new chanType(ch));
if (frameWriteDone) {
http2writeDataPool.Put(writeArg);
}
$s = -1; return err;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.writeDataFromHandler }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $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;
};
http2serverConn.prototype.writeDataFromHandler = function(stream, data, endStream) { return this.$val.writeDataFromHandler(stream, data, endStream); };
http2serverConn.ptr.prototype.writeFrameFromHandler = function(wr) {
var $ptr, _r, _selection, sc, wr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _selection = $f._selection; sc = $f.sc; wr = $f.wr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
$r = sc.serveG.checkNotOn(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r = $select([[sc.wantWriteFrameCh, $clone(wr, http2FrameWriteRequest)], [sc.doneServing]]); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_selection = _r;
if (_selection[0] === 0) {
$s = -1; return $ifaceNil;
} else if (_selection[0] === 1) {
$s = -1; return http2errClientDisconnected;
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.writeFrameFromHandler }; } $f.$ptr = $ptr; $f._r = _r; $f._selection = _selection; $f.sc = sc; $f.wr = wr; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.writeFrameFromHandler = function(wr) { return this.$val.writeFrameFromHandler(wr); };
http2serverConn.ptr.prototype.writeFrame = function(wr) {
var $ptr, _r, _ref, _tuple, _tuple$1, ignoreWrite, isReset, sc, state, wr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
ignoreWrite = false;
/* */ if (!(($clone(wr, http2FrameWriteRequest).StreamID() === 0))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!(($clone(wr, http2FrameWriteRequest).StreamID() === 0))) { */ case 2:
_tuple = $assertType(wr.write, http2StreamError, true);
isReset = _tuple[1];
_r = sc.state($clone(wr, http2FrameWriteRequest).StreamID()); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
state = _tuple$1[0];
if ((state === 4) && !isReset) {
ignoreWrite = true;
}
/* } */ case 3:
_ref = wr.write;
if ($assertType(_ref, ptrType$59, true)[1]) {
wr.stream.wroteHeaders = true;
} else if ($assertType(_ref, http2write100ContinueHeadersFrame, true)[1]) {
if (wr.stream.wroteHeaders) {
if (!(wr.done === $chanNil)) {
$panic(new $String("wr.done != nil for write100ContinueHeadersFrame"));
}
ignoreWrite = true;
}
}
/* */ if (!ignoreWrite) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (!ignoreWrite) { */ case 5:
$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; }
/* } */ case 6:
$r = sc.scheduleFrameWrite(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.writeFrame }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
http2serverConn.prototype.writeFrame = function(wr) { return this.$val.writeFrame(wr); };
http2serverConn.ptr.prototype.startFrameWrite = function(wr) {
var $ptr, _1, _r, _r$1, _r$2, _r$3, _r$4, _ref, _tuple, _tuple$1, err, err$1, ok, sc, st, wpp, wr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (sc.writingFrame) {
$panic(new $String("internal error: can only be writing one frame at a time"));
}
st = wr.stream;
/* */ if (!(st === ptrType$6.nil)) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!(st === ptrType$6.nil)) { */ case 2:
_1 = st.state;
/* */ if (_1 === (2)) { $s = 5; continue; }
/* */ if (_1 === (4)) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (_1 === (2)) { */ case 5:
_ref = wr.write;
/* */ if ($assertType(_ref, http2StreamError, true)[1] || $assertType(_ref, http2handlerPanicRST, true)[1] || $assertType(_ref, http2writeWindowUpdate, true)[1]) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if ($assertType(_ref, http2StreamError, true)[1] || $assertType(_ref, http2handlerPanicRST, true)[1] || $assertType(_ref, http2writeWindowUpdate, true)[1]) { */ case 8:
$s = 10; continue;
/* } else { */ case 9:
_r = 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 = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$panic(new $String(_r));
/* } */ case 10:
$s = 7; continue;
/* } else if (_1 === (4)) { */ case 6:
_r$1 = 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$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$panic(new $String(_r$1));
/* } */ case 7:
case 4:
/* } */ case 3:
_tuple = $assertType(wr.write, ptrType$60, true);
wpp = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (ok) { */ case 13:
err = $ifaceNil;
_r$2 = wpp.allocatePromisedID(); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$1 = _r$2;
wpp.promisedID = _tuple$1[0];
err = _tuple$1[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 16:
sc.writingFrameAsync = false;
$r = wr.replyToWriter(err); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } */ case 17:
/* } */ case 14:
sc.writingFrame = true;
sc.needsFrameFlush = true;
_r$3 = wr.write.staysWithinBuffer(sc.bw.Available()); /* */ $s = 22; case 22: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
/* */ if (_r$3) { $s = 19; continue; }
/* */ $s = 20; continue;
/* if (_r$3) { */ case 19:
sc.writingFrameAsync = false;
_r$4 = wr.write.writeFrame(sc); /* */ $s = 23; case 23: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
err$1 = _r$4;
$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; }
$s = 21; continue;
/* } else { */ case 20:
sc.writingFrameAsync = true;
$go($methodVal(sc, "writeFrameAsync"), [$clone(wr, http2FrameWriteRequest)]);
/* } */ case 21:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.startFrameWrite }; } $f.$ptr = $ptr; $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._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;
};
http2serverConn.prototype.startFrameWrite = function(wr) { return this.$val.startFrameWrite(wr); };
http2serverConn.ptr.prototype.wroteFrame = function(res) {
var $ptr, _1, _entry, _ref, _tuple, ok, res, sc, st, st$1, v, v$1, wr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (!sc.writingFrame) {
$panic(new $String("internal error: expected to be already writing a frame"));
}
sc.writingFrame = false;
sc.writingFrameAsync = false;
wr = $clone(res.wr, http2FrameWriteRequest);
/* */ if (http2writeEndsStream(wr.write)) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (http2writeEndsStream(wr.write)) { */ case 2:
st = wr.stream;
if (st === ptrType$6.nil) {
$panic(new $String("internal error: expecting non-nil stream"));
}
_1 = st.state;
/* */ if (_1 === (1)) { $s = 6; continue; }
/* */ if (_1 === (3)) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (_1 === (1)) { */ case 6:
st.state = 2;
$r = sc.resetStream($clone(http2streamError(st.id, 8), http2StreamError)); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 8; continue;
/* } else if (_1 === (3)) { */ case 7:
$r = sc.closeStream(st, http2errHandlerComplete); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 8:
case 5:
$s = 4; continue;
/* } else { */ case 3:
_ref = wr.write;
/* */ if ($assertType(_ref, http2StreamError, true)[1]) { $s = 11; continue; }
/* */ if ($assertType(_ref, http2handlerPanicRST, true)[1]) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if ($assertType(_ref, http2StreamError, true)[1]) { */ case 11:
v = $clone(_ref.$val, http2StreamError);
_tuple = (_entry = sc.streams[$Uint32.keyFor(v.StreamID)], _entry !== undefined ? [_entry.v, true] : [ptrType$6.nil, false]);
st$1 = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if (ok) { */ case 14:
$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; }
/* } */ case 15:
$s = 13; continue;
/* } else if ($assertType(_ref, http2handlerPanicRST, true)[1]) { */ case 12:
v$1 = $clone(_ref.$val, http2handlerPanicRST);
$r = sc.closeStream(wr.stream, http2errHandlerPanicked); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 13:
/* } */ case 4:
$r = wr.replyToWriter(res.err); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sc.scheduleFrameWrite(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.wroteFrame }; } $f.$ptr = $ptr; $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;
};
http2serverConn.prototype.wroteFrame = function(res) { return this.$val.wroteFrame(res); };
http2serverConn.ptr.prototype.scheduleFrameWrite = function() {
var $ptr, _r, _tuple, ok, sc, wr, x$3, x$4, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; ok = $f.ok; sc = $f.sc; wr = $f.wr; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (sc.writingFrame || sc.inFrameScheduleLoop) {
$s = -1; return;
}
sc.inFrameScheduleLoop = true;
/* while (true) { */ case 2:
/* if (!(!sc.writingFrameAsync)) { break; } */ if(!(!sc.writingFrameAsync)) { $s = 3; continue; }
/* */ if (sc.needToSendGoAway) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (sc.needToSendGoAway) { */ case 4:
sc.needToSendGoAway = false;
$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; }
/* continue; */ $s = 2; continue;
/* } */ case 5:
/* */ if (sc.needToSendSettingsAck) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (sc.needToSendSettingsAck) { */ case 7:
sc.needToSendSettingsAck = false;
$r = sc.startFrameWrite(new http2FrameWriteRequest.ptr((x$3 = new http2writeSettingsAck.ptr(), new x$3.constructor.elem(x$3)), ptrType$6.nil, $chanNil)); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* continue; */ $s = 2; continue;
/* } */ case 8:
/* */ if (!sc.inGoAway || (sc.goAwayCode === 0)) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (!sc.inGoAway || (sc.goAwayCode === 0)) { */ case 10:
_r = sc.writeSched.Pop(); /* */ $s = 12; case 12: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
wr = $clone(_tuple[0], http2FrameWriteRequest);
ok = _tuple[1];
/* */ if (ok) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (ok) { */ case 13:
$r = sc.startFrameWrite($clone(wr, http2FrameWriteRequest)); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* continue; */ $s = 2; continue;
/* } */ case 14:
/* } */ case 11:
/* */ if (sc.needsFrameFlush) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (sc.needsFrameFlush) { */ case 16:
$r = sc.startFrameWrite(new http2FrameWriteRequest.ptr((x$4 = new http2flushFrameWriter.ptr(), new x$4.constructor.elem(x$4)), ptrType$6.nil, $chanNil)); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
sc.needsFrameFlush = false;
/* continue; */ $s = 2; continue;
/* } */ case 17:
/* break; */ $s = 3; continue;
/* } */ $s = 2; continue; case 3:
sc.inFrameScheduleLoop = false;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.scheduleFrameWrite }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.ok = ok; $f.sc = sc; $f.wr = wr; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.scheduleFrameWrite = function() { return this.$val.scheduleFrameWrite(); };
http2serverConn.ptr.prototype.startGracefulShutdown = function() {
var $ptr, sc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
$r = sc.goAwayIn(0, new time.Duration(0, 0)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.startGracefulShutdown }; } $f.$ptr = $ptr; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.startGracefulShutdown = function() { return this.$val.startGracefulShutdown(); };
http2serverConn.ptr.prototype.goAway = function(code) {
var $ptr, code, forceCloseIn, sc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; code = $f.code; forceCloseIn = $f.forceCloseIn; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
forceCloseIn = new time.Duration(0, 0);
if (!((code === 0))) {
forceCloseIn = new time.Duration(0, 250000000);
} else {
forceCloseIn = new time.Duration(0, 1000000000);
}
$r = sc.goAwayIn(code, forceCloseIn); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.goAway }; } $f.$ptr = $ptr; $f.code = code; $f.forceCloseIn = forceCloseIn; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.goAway = function(code) { return this.$val.goAway(code); };
http2serverConn.ptr.prototype.goAwayIn = function(code, forceCloseIn) {
var $ptr, code, forceCloseIn, sc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; code = $f.code; forceCloseIn = $f.forceCloseIn; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (sc.inGoAway) {
$s = -1; return;
}
/* */ if (!((forceCloseIn.$high === 0 && forceCloseIn.$low === 0))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!((forceCloseIn.$high === 0 && forceCloseIn.$low === 0))) { */ case 2:
$r = sc.shutDownIn(forceCloseIn); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 3:
sc.inGoAway = true;
sc.needToSendGoAway = true;
sc.goAwayCode = code;
$r = sc.scheduleFrameWrite(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.goAwayIn }; } $f.$ptr = $ptr; $f.code = code; $f.forceCloseIn = forceCloseIn; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.goAwayIn = function(code, forceCloseIn) { return this.$val.goAwayIn(code, forceCloseIn); };
http2serverConn.ptr.prototype.shutDownIn = function(d) {
var $ptr, d, sc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; d = $f.d; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
sc.shutdownTimer = time.NewTimer(d);
sc.shutdownTimerCh = sc.shutdownTimer.C;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.shutDownIn }; } $f.$ptr = $ptr; $f.d = d; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.shutDownIn = function(d) { return this.$val.shutDownIn(d); };
http2serverConn.ptr.prototype.resetStream = function(se) {
var $ptr, _entry, _tuple, ok, sc, se, st, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$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; }
_tuple = (_entry = sc.streams[$Uint32.keyFor(se.StreamID)], _entry !== undefined ? [_entry.v, true] : [ptrType$6.nil, false]);
st = _tuple[0];
ok = _tuple[1];
if (ok) {
st.resetQueued = true;
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.resetStream }; } $f.$ptr = $ptr; $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;
};
http2serverConn.prototype.resetStream = function(se) { return this.$val.resetStream(se); };
http2serverConn.ptr.prototype.processFrameFromReader = function(res) {
var $ptr, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r, _r$1, _r$2, _r$3, _r$4, _ref, _v, clientGone, err, ev, ev$1, ev$2, ev$3, f, res, sc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _arg$4 = $f._arg$4; _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; 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:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
err = res.err;
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
/* */ if ($interfaceIsEqual(err, http2ErrFrameTooLarge)) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if ($interfaceIsEqual(err, http2ErrFrameTooLarge)) { */ case 5:
$r = sc.goAway(6); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return true;
/* } */ case 6:
if ($interfaceIsEqual(err, io.EOF) || $interfaceIsEqual(err, io.ErrUnexpectedEOF)) { _v = true; $s = 8; continue s; }
_r = http2isClosedConnError(err); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_v = _r; case 8:
clientGone = _v;
if (clientGone) {
$s = -1; return false;
}
$s = 4; continue;
/* } else { */ case 3:
f = res.f;
/* */ if (http2VerboseLogs) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (http2VerboseLogs) { */ case 10:
_r$1 = http2summarizeFrame(f); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_arg = new $String(_r$1);
$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; }
/* } */ case 11:
_r$2 = sc.processFrame(f); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
err = _r$2;
if ($interfaceIsEqual(err, $ifaceNil)) {
$s = -1; return true;
}
/* } */ case 4:
_ref = err;
/* */ if ($assertType(_ref, http2StreamError, true)[1]) { $s = 15; continue; }
/* */ if ($assertType(_ref, http2goAwayFlowError, true)[1]) { $s = 16; continue; }
/* */ if ($assertType(_ref, http2ConnectionError, true)[1]) { $s = 17; continue; }
/* */ $s = 18; continue;
/* if ($assertType(_ref, http2StreamError, true)[1]) { */ case 15:
ev = $clone(_ref.$val, http2StreamError);
$r = sc.resetStream($clone(ev, http2StreamError)); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return true;
/* } else if ($assertType(_ref, http2goAwayFlowError, true)[1]) { */ case 16:
ev$1 = $clone(_ref.$val, http2goAwayFlowError);
$r = sc.goAway(3); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return true;
/* } else if ($assertType(_ref, http2ConnectionError, true)[1]) { */ case 17:
ev$2 = _ref.$val;
_r$3 = sc.conn.RemoteAddr(); /* */ $s = 22; case 22: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_arg$1 = _r$3;
_arg$2 = new http2ConnectionError(ev$2);
$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; }
$r = sc.goAway(((ev$2 >>> 0))); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return true;
/* } else { */ case 18:
ev$3 = _ref;
/* */ if (!($interfaceIsEqual(res.err, $ifaceNil))) { $s = 25; continue; }
/* */ $s = 26; continue;
/* if (!($interfaceIsEqual(res.err, $ifaceNil))) { */ case 25:
_r$4 = sc.conn.RemoteAddr(); /* */ $s = 28; case 28: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_arg$3 = _r$4;
_arg$4 = err;
$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; }
$s = 27; continue;
/* } else { */ case 26:
$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; }
/* } */ case 27:
$s = -1; return false;
/* } */ case 19:
$s = -1; return false;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.processFrameFromReader }; } $f.$ptr = $ptr; $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 = _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.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;
};
http2serverConn.prototype.processFrameFromReader = function(res) { return this.$val.processFrameFromReader(res); };
http2serverConn.ptr.prototype.processFrame = function(f) {
var $ptr, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _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$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _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; _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$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (!sc.sawFirstSettings) {
_tuple = $assertType(f, ptrType$38, true);
ok = _tuple[1];
if (!ok) {
$s = -1; return new http2ConnectionError(1);
}
sc.sawFirstSettings = true;
}
_ref = f;
/* */ if ($assertType(_ref, ptrType$38, true)[1]) { $s = 2; continue; }
/* */ if ($assertType(_ref, ptrType$36, true)[1]) { $s = 3; continue; }
/* */ if ($assertType(_ref, ptrType$40, true)[1]) { $s = 4; continue; }
/* */ if ($assertType(_ref, ptrType$41, true)[1]) { $s = 5; continue; }
/* */ if ($assertType(_ref, ptrType$39, true)[1]) { $s = 6; continue; }
/* */ if ($assertType(_ref, ptrType$43, true)[1]) { $s = 7; continue; }
/* */ if ($assertType(_ref, ptrType$61, true)[1]) { $s = 8; continue; }
/* */ if ($assertType(_ref, ptrType$42, true)[1]) { $s = 9; continue; }
/* */ if ($assertType(_ref, ptrType$62, true)[1]) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if ($assertType(_ref, ptrType$38, true)[1]) { */ case 2:
f$1 = _ref.$val;
_r = sc.processSettings(f$1); /* */ $s = 13; case 13: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } else if ($assertType(_ref, ptrType$36, true)[1]) { */ case 3:
f$2 = _ref.$val;
_r$1 = sc.processHeaders(f$2); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* } else if ($assertType(_ref, ptrType$40, true)[1]) { */ case 4:
f$3 = _ref.$val;
_r$2 = sc.processWindowUpdate(f$3); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$s = -1; return _r$2;
/* } else if ($assertType(_ref, ptrType$41, true)[1]) { */ case 5:
f$4 = _ref.$val;
_r$3 = sc.processPing(f$4); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
$s = -1; return _r$3;
/* } else if ($assertType(_ref, ptrType$39, true)[1]) { */ case 6:
f$5 = _ref.$val;
_r$4 = sc.processData(f$5); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
$s = -1; return _r$4;
/* } else if ($assertType(_ref, ptrType$43, true)[1]) { */ case 7:
f$6 = _ref.$val;
_r$5 = sc.processResetStream(f$6); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
$s = -1; return _r$5;
/* } else if ($assertType(_ref, ptrType$61, true)[1]) { */ case 8:
f$7 = _ref.$val;
_r$6 = sc.processPriority(f$7); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
$s = -1; return _r$6;
/* } else if ($assertType(_ref, ptrType$42, true)[1]) { */ case 9:
f$8 = _ref.$val;
_r$7 = sc.processGoAway(f$8); /* */ $s = 20; case 20: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
$s = -1; return _r$7;
/* } else if ($assertType(_ref, ptrType$62, true)[1]) { */ case 10:
f$9 = _ref.$val;
$s = -1; return new http2ConnectionError(1);
/* } else { */ case 11:
f$10 = _ref;
_r$8 = f$10.Header(); /* */ $s = 21; case 21: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_arg = (x$3 = _r$8, new x$3.constructor.elem(x$3));
$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; }
$s = -1; return $ifaceNil;
/* } */ case 12:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.processFrame }; } $f.$ptr = $ptr; $f._arg = _arg; $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._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$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.processFrame = function(f) { return this.$val.processFrame(f); };
http2serverConn.ptr.prototype.processPing = function(f) {
var $ptr, f, sc, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; sc = $f.sc; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (f.IsAck()) {
$s = -1; return $ifaceNil;
}
if (!((f.http2FrameHeader.StreamID === 0))) {
$s = -1; return new http2ConnectionError(1);
}
if (sc.inGoAway && !((sc.goAwayCode === 0))) {
$s = -1; return $ifaceNil;
}
$r = sc.writeFrame(new http2FrameWriteRequest.ptr((x$3 = new http2writePingAck.ptr(f), new x$3.constructor.elem(x$3)), ptrType$6.nil, $chanNil)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.processPing }; } $f.$ptr = $ptr; $f.f = f; $f.sc = sc; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.processPing = function(f) { return this.$val.processPing(f); };
http2serverConn.ptr.prototype.processWindowUpdate = function(f) {
var $ptr, _r, _tuple, f, sc, st, state, x$3, x$4, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; f = $f.f; sc = $f.sc; st = $f.st; state = $f.state; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (!((f.http2FrameHeader.StreamID === 0))) { $s = 3; continue; }
/* */ if (!sc.flow.add(((f.Increment >> 0)))) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!((f.http2FrameHeader.StreamID === 0))) { */ case 3:
_r = sc.state(f.http2FrameHeader.StreamID); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
state = _tuple[0];
st = _tuple[1];
if (state === 0) {
$s = -1; return new http2ConnectionError(1);
}
if (st === ptrType$6.nil) {
$s = -1; return $ifaceNil;
}
if (!st.flow.add(((f.Increment >> 0)))) {
$s = -1; return (x$3 = http2streamError(f.http2FrameHeader.StreamID, 3), new x$3.constructor.elem(x$3));
}
$s = 5; continue;
/* } else if (!sc.flow.add(((f.Increment >> 0)))) { */ case 4:
$s = -1; return (x$4 = new http2goAwayFlowError.ptr(), new x$4.constructor.elem(x$4));
/* } */ case 5:
case 2:
$r = sc.scheduleFrameWrite(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.processWindowUpdate }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.f = f; $f.sc = sc; $f.st = st; $f.state = state; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.processWindowUpdate = function(f) { return this.$val.processWindowUpdate(f); };
http2serverConn.ptr.prototype.processResetStream = function(f) {
var $ptr, _r, _tuple, f, sc, st, state, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; f = $f.f; sc = $f.sc; st = $f.st; state = $f.state; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r = sc.state(f.http2FrameHeader.StreamID); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
state = _tuple[0];
st = _tuple[1];
if (state === 0) {
$s = -1; return new http2ConnectionError(1);
}
/* */ if (!(st === ptrType$6.nil)) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!(st === ptrType$6.nil)) { */ case 3:
$r = st.cancelCtx(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sc.closeStream(st, (x$3 = http2streamError(f.http2FrameHeader.StreamID, f.ErrCode), new x$3.constructor.elem(x$3))); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 4:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.processResetStream }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.f = f; $f.sc = sc; $f.st = st; $f.state = state; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.processResetStream = function(f) { return this.$val.processResetStream(f); };
http2serverConn.ptr.prototype.closeStream = function(st, err) {
var $ptr, _arg, _arg$1, _r, _r$1, _r$2, err, p, sc, st, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; err = $f.err; p = $f.p; sc = $f.sc; st = $f.st; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if ((st.state === 0) || (st.state === 4)) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if ((st.state === 0) || (st.state === 4)) { */ case 2:
_r = 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 = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$panic(new $String(_r));
/* } */ case 3:
st.state = 4;
if (st.isPushed()) {
sc.curPushedStreams = sc.curPushedStreams - (1) >>> 0;
} else {
sc.curClientStreams = sc.curClientStreams - (1) >>> 0;
}
delete sc.streams[$Uint32.keyFor(st.id)];
/* */ if ($keys(sc.streams).length === 0) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if ($keys(sc.streams).length === 0) { */ case 5:
$r = sc.setConnState(2); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (!((x$3 = sc.srv.IdleTimeout, (x$3.$high === 0 && x$3.$low === 0)))) {
sc.idleTimer.Reset(sc.srv.IdleTimeout);
}
_r$1 = http2h1ServerKeepAlivesDisabled(sc.hs); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
/* */ if (_r$1) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (_r$1) { */ case 8:
$r = sc.startGracefulShutdown(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 9:
/* } */ case 6:
p = st.body;
/* */ if (!(p === ptrType$63.nil)) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (!(p === ptrType$63.nil)) { */ case 12:
_arg = ptrType$6.nil;
_r$2 = p.Len(); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_arg$1 = _r$2;
$r = sc.sendWindowUpdate(_arg, _arg$1); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = p.CloseWithError(err); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 13:
new http2closeWaiter(st.cw).Close();
$r = sc.writeSched.CloseStream(st.id); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.closeStream }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.err = err; $f.p = p; $f.sc = sc; $f.st = st; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.closeStream = function(st, err) { return this.$val.closeStream(st, err); };
http2serverConn.ptr.prototype.processSettings = function(f) {
var $ptr, _r, err, f, sc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; err = $f.err; f = $f.f; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (f.IsAck()) {
sc.unackedSettings = sc.unackedSettings - (1) >> 0;
if (sc.unackedSettings < 0) {
$s = -1; return new http2ConnectionError(1);
}
$s = -1; return $ifaceNil;
}
_r = f.ForeachSetting($methodVal(sc, "processSetting")); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
sc.needToSendSettingsAck = true;
$r = sc.scheduleFrameWrite(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.processSettings }; } $f.$ptr = $ptr; $f._r = _r; $f.err = err; $f.f = f; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.processSettings = function(f) { return this.$val.processSettings(f); };
http2serverConn.ptr.prototype.processSetting = function(s) {
var $ptr, _1, _r, err, s, sc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _r = $f._r; err = $f.err; s = $f.s; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
err = $clone(s, http2Setting).Valid();
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
/* */ if (http2VerboseLogs) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (http2VerboseLogs) { */ case 2:
$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; }
/* } */ case 3:
_1 = s.ID;
/* */ if (_1 === (1)) { $s = 6; continue; }
/* */ if (_1 === (2)) { $s = 7; continue; }
/* */ if (_1 === (3)) { $s = 8; continue; }
/* */ if (_1 === (4)) { $s = 9; continue; }
/* */ if (_1 === (5)) { $s = 10; continue; }
/* */ if (_1 === (6)) { $s = 11; continue; }
/* */ if (http2VerboseLogs) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (_1 === (1)) { */ case 6:
sc.headerTableSize = s.Val;
sc.hpackEncoder.SetMaxDynamicTableSize(s.Val);
$s = 13; continue;
/* } else if (_1 === (2)) { */ case 7:
sc.pushEnabled = !((s.Val === 0));
$s = 13; continue;
/* } else if (_1 === (3)) { */ case 8:
sc.clientMaxStreams = s.Val;
$s = 13; continue;
/* } else if (_1 === (4)) { */ case 9:
_r = sc.processSettingInitialWindowSize(s.Val); /* */ $s = 14; case 14: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } else if (_1 === (5)) { */ case 10:
sc.maxFrameSize = ((s.Val >> 0));
$s = 13; continue;
/* } else if (_1 === (6)) { */ case 11:
sc.peerMaxHeaderListSize = s.Val;
$s = 13; continue;
/* } else if (http2VerboseLogs) { */ case 12:
$r = sc.vlogf("http2: server ignoring unknown setting %v", new sliceType([new s.constructor.elem(s)])); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 13:
case 5:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.processSetting }; } $f.$ptr = $ptr; $f._1 = _1; $f._r = _r; $f.err = err; $f.s = s; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.processSetting = function(s) { return this.$val.processSetting(s); };
http2serverConn.ptr.prototype.processSettingInitialWindowSize = function(val) {
var $ptr, _entry, _i, _keys, _ref, growth, old, sc, st, val, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
old = sc.initialWindowSize;
sc.initialWindowSize = ((val >> 0));
growth = sc.initialWindowSize - old >> 0;
_ref = sc.streams;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
continue;
}
st = _entry.v;
if (!st.flow.add(growth)) {
$s = -1; return new http2ConnectionError(3);
}
_i++;
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.processSettingInitialWindowSize }; } $f.$ptr = $ptr; $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;
};
http2serverConn.prototype.processSettingInitialWindowSize = function(val) { return this.$val.processSettingInitialWindowSize(val); };
http2serverConn.ptr.prototype.processData = function(f) {
var $ptr, _r, _r$1, _r$2, _tuple, _tuple$1, data, err, f, id, pad, sc, st, state, wrote, x$10, x$11, x$12, x$13, x$14, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _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$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:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (sc.inGoAway && !((sc.goAwayCode === 0))) {
$s = -1; return $ifaceNil;
}
data = f.Data();
id = $clone(f.http2FrameHeader, http2FrameHeader).Header().StreamID;
_r = sc.state(id); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
state = _tuple[0];
st = _tuple[1];
if ((id === 0) || (state === 0)) {
$s = -1; return new http2ConnectionError(1);
}
/* */ if (st === ptrType$6.nil || !((state === 1)) || st.gotTrailerHeader || st.resetQueued) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (st === ptrType$6.nil || !((state === 1)) || st.gotTrailerHeader || st.resetQueued) { */ case 3:
if (sc.inflow.available() < ((f.http2FrameHeader.Length >> 0))) {
$s = -1; return (x$3 = http2streamError(id, 3), new x$3.constructor.elem(x$3));
}
sc.inflow.take(((f.http2FrameHeader.Length >> 0)));
$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; }
if (!(st === ptrType$6.nil) && st.resetQueued) {
$s = -1; return $ifaceNil;
}
$s = -1; return (x$4 = http2streamError(id, 5), new x$4.constructor.elem(x$4));
/* } */ case 4:
if (st.body === ptrType$63.nil) {
$panic(new $String("internal error: should have a body in this state"));
}
/* */ if (!((x$5 = st.declBodyBytes, (x$5.$high === -1 && x$5.$low === 4294967295))) && (x$6 = (x$7 = st.bodyBytes, x$8 = (new $Int64(0, data.$length)), new $Int64(x$7.$high + x$8.$high, x$7.$low + x$8.$low)), x$9 = st.declBodyBytes, (x$6.$high > x$9.$high || (x$6.$high === x$9.$high && x$6.$low > x$9.$low)))) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!((x$5 = st.declBodyBytes, (x$5.$high === -1 && x$5.$low === 4294967295))) && (x$6 = (x$7 = st.bodyBytes, x$8 = (new $Int64(0, data.$length)), new $Int64(x$7.$high + x$8.$high, x$7.$low + x$8.$low)), x$9 = st.declBodyBytes, (x$6.$high > x$9.$high || (x$6.$high === x$9.$high && x$6.$low > x$9.$low)))) { */ case 6:
_r$1 = 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$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$r = st.body.CloseWithError(_r$1); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return (x$10 = http2streamError(id, 5), new x$10.constructor.elem(x$10));
/* } */ case 7:
/* */ if (f.http2FrameHeader.Length > 0) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (f.http2FrameHeader.Length > 0) { */ case 10:
if (st.inflow.available() < ((f.http2FrameHeader.Length >> 0))) {
$s = -1; return (x$11 = http2streamError(id, 3), new x$11.constructor.elem(x$11));
}
st.inflow.take(((f.http2FrameHeader.Length >> 0)));
/* */ if (data.$length > 0) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (data.$length > 0) { */ case 12:
_r$2 = st.body.Write(data); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$1 = _r$2;
wrote = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return (x$12 = http2streamError(id, 5), new x$12.constructor.elem(x$12));
}
if (!((wrote === data.$length))) {
$panic(new $String("internal error: bad Writer"));
}
st.bodyBytes = (x$13 = st.bodyBytes, x$14 = (new $Int64(0, data.$length)), new $Int64(x$13.$high + x$14.$high, x$13.$low + x$14.$low));
/* } */ case 13:
pad = ((f.http2FrameHeader.Length >> 0)) - ((data.$length >> 0)) >> 0;
/* */ if (pad > 0) { $s = 15; continue; }
/* */ $s = 16; continue;
/* if (pad > 0) { */ case 15:
$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; }
$r = sc.sendWindowUpdate32(st, pad); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 16:
/* } */ case 11:
/* */ if (f.StreamEnded()) { $s = 19; continue; }
/* */ $s = 20; continue;
/* if (f.StreamEnded()) { */ case 19:
$r = st.endStream(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 20:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.processData }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $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$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;
};
http2serverConn.prototype.processData = function(f) { return this.$val.processData(f); };
http2serverConn.ptr.prototype.processGoAway = function(f) {
var $ptr, f, sc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (!((f.ErrCode === 0))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!((f.ErrCode === 0))) { */ case 2:
$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; }
$s = 4; continue;
/* } else { */ case 3:
$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; }
/* } */ case 4:
$r = sc.startGracefulShutdown(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
sc.pushEnabled = false;
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.processGoAway }; } $f.$ptr = $ptr; $f.f = f; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.processGoAway = function(f) { return this.$val.processGoAway(f); };
http2stream.ptr.prototype.isPushed = function() {
var $ptr, _r, st;
st = this;
return (_r = st.id % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0;
};
http2stream.prototype.isPushed = function() { return this.$val.isPushed(); };
http2stream.ptr.prototype.endStream = function() {
var $ptr, _r, sc, st, x$3, x$4, x$5, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; sc = $f.sc; st = $f.st; 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:
st = this;
sc = st.sc;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (!((x$3 = st.declBodyBytes, (x$3.$high === -1 && x$3.$low === 4294967295))) && !((x$4 = st.declBodyBytes, x$5 = st.bodyBytes, (x$4.$high === x$5.$high && x$4.$low === x$5.$low)))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!((x$3 = st.declBodyBytes, (x$3.$high === -1 && x$3.$low === 4294967295))) && !((x$4 = st.declBodyBytes, x$5 = st.bodyBytes, (x$4.$high === x$5.$high && x$4.$low === x$5.$low)))) { */ case 2:
_r = 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 = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$r = st.body.CloseWithError(_r); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 4; continue;
/* } else { */ case 3:
$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; }
$r = st.body.CloseWithError(io.EOF); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 4:
st.state = 3;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2stream.ptr.prototype.endStream }; } $f.$ptr = $ptr; $f._r = _r; $f.sc = sc; $f.st = st; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
};
http2stream.prototype.endStream = function() { return this.$val.endStream(); };
http2stream.ptr.prototype.copyTrailersToHandlerRequest = function() {
var $ptr, _entry, _entry$1, _i, _key, _keys, _ref, _tuple, k, ok, st, vv;
st = this;
_ref = st.trailer;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
continue;
}
k = _entry.k;
vv = _entry.v;
_tuple = (_entry$1 = st.reqTrailer[$String.keyFor(k)], _entry$1 !== undefined ? [_entry$1.v, true] : [sliceType$1.nil, false]);
ok = _tuple[1];
if (ok) {
_key = k; (st.reqTrailer || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: vv };
}
_i++;
}
};
http2stream.prototype.copyTrailersToHandlerRequest = function() { return this.$val.copyTrailersToHandlerRequest(); };
http2serverConn.ptr.prototype.processHeaders = function(f) {
var $ptr, _entry, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, err, err$1, err$2, f, handler, id, initialState, req, rw, sc, st, st$1, x$3, x$4, x$5, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _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; 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$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:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
id = f.http2HeadersFrame.http2FrameHeader.StreamID;
if (sc.inGoAway) {
$s = -1; return $ifaceNil;
}
if (!(((_r = id % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 1))) {
$s = -1; return new http2ConnectionError(1);
}
st = (_entry = sc.streams[$Uint32.keyFor(f.http2HeadersFrame.http2FrameHeader.StreamID)], _entry !== undefined ? _entry.v : ptrType$6.nil);
/* */ if (!(st === ptrType$6.nil)) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!(st === ptrType$6.nil)) { */ case 2:
if (st.resetQueued) {
$s = -1; return $ifaceNil;
}
_r$1 = st.processTrailerHeaders(f); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* } */ case 3:
if (id <= sc.maxClientStreamID) {
$s = -1; return new http2ConnectionError(1);
}
sc.maxClientStreamID = id;
if (!(sc.idleTimer === ptrType$53.nil)) {
sc.idleTimer.Stop();
}
if ((sc.curClientStreams + 1 >>> 0) > sc.advMaxStreams) {
if (sc.unackedSettings === 0) {
$s = -1; return (x$3 = http2streamError(id, 1), new x$3.constructor.elem(x$3));
}
$s = -1; return (x$4 = http2streamError(id, 7), new x$4.constructor.elem(x$4));
}
initialState = 1;
if (f.http2HeadersFrame.StreamEnded()) {
initialState = 3;
}
_r$2 = sc.newStream(id, 0, initialState); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
st$1 = _r$2;
/* */ if (f.http2HeadersFrame.HasPriority()) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (f.http2HeadersFrame.HasPriority()) { */ case 6:
err = http2checkPriority(f.http2HeadersFrame.http2FrameHeader.StreamID, $clone(f.http2HeadersFrame.Priority, http2PriorityParam));
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
$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; }
/* } */ case 7:
_r$3 = sc.newWriterAndRequest(st$1, f); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple = _r$3;
rw = _tuple[0];
req = _tuple[1];
err$1 = _tuple[2];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return err$1;
}
st$1.reqTrailer = req.Trailer;
if (!(st$1.reqTrailer === false)) {
st$1.trailer = {};
}
st$1.body = $assertType(req.Body, ptrType$8).pipe;
st$1.declBodyBytes = req.ContentLength;
handler = $methodVal(sc.handler, "ServeHTTP");
/* */ if (f.Truncated) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (f.Truncated) { */ case 10:
handler = http2handleHeaderListTooLong;
$s = 12; continue;
/* } else { */ case 11:
_r$4 = http2checkValidHTTP2RequestHeaders(req.Header); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
err$2 = _r$4;
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
handler = http2new400Handler(err$2);
}
/* } */ case 12:
/* */ if (!((x$5 = sc.hs.ReadTimeout, (x$5.$high === 0 && x$5.$low === 0)))) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if (!((x$5 = sc.hs.ReadTimeout, (x$5.$high === 0 && x$5.$low === 0)))) { */ case 14:
_r$5 = sc.conn.SetReadDeadline(new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil)); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_r$5;
/* } */ case 15:
$go($methodVal(sc, "runHandler"), [rw, req, handler]);
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.processHeaders }; } $f.$ptr = $ptr; $f._entry = _entry; $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.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$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.processHeaders = function(f) { return this.$val.processHeaders(f); };
http2stream.ptr.prototype.processTrailerHeaders = function(f) {
var $ptr, _entry, _i, _key, _r, _ref, f, hf, key, sc, st, x$3, x$4, x$5, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _i = $f._i; _key = $f._key; _r = $f._r; _ref = $f._ref; f = $f.f; hf = $f.hf; key = $f.key; sc = $f.sc; st = $f.st; 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:
st = this;
sc = st.sc;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (st.gotTrailerHeader) {
$s = -1; return new http2ConnectionError(1);
}
st.gotTrailerHeader = true;
if (!f.http2HeadersFrame.StreamEnded()) {
$s = -1; return (x$3 = http2streamError(st.id, 1), new x$3.constructor.elem(x$3));
}
if (f.PseudoFields().$length > 0) {
$s = -1; return (x$4 = http2streamError(st.id, 1), new x$4.constructor.elem(x$4));
}
/* */ if (!(st.trailer === false)) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!(st.trailer === false)) { */ case 2:
_ref = f.RegularFields();
_i = 0;
/* while (true) { */ case 4:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; }
hf = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), hpack.HeaderField);
_r = sc.canonicalHeader(hf.Name); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
key = _r;
if (!http2ValidTrailerHeader(key)) {
$s = -1; return (x$5 = http2streamError(st.id, 1), new x$5.constructor.elem(x$5));
}
_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) };
_i++;
/* } */ $s = 4; continue; case 5:
/* } */ case 3:
$r = st.endStream(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2stream.ptr.prototype.processTrailerHeaders }; } $f.$ptr = $ptr; $f._entry = _entry; $f._i = _i; $f._key = _key; $f._r = _r; $f._ref = _ref; $f.f = f; $f.hf = hf; $f.key = key; $f.sc = sc; $f.st = st; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
};
http2stream.prototype.processTrailerHeaders = function(f) { return this.$val.processTrailerHeaders(f); };
http2checkPriority = function(streamID, p) {
var $ptr, p, streamID, x$3;
if (streamID === p.StreamDep) {
return (x$3 = http2streamError(streamID, 1), new x$3.constructor.elem(x$3));
}
return $ifaceNil;
};
http2serverConn.ptr.prototype.processPriority = function(f) {
var $ptr, err, f, sc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; err = $f.err; f = $f.f; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
if (sc.inGoAway) {
$s = -1; return $ifaceNil;
}
err = http2checkPriority(f.http2FrameHeader.StreamID, $clone(f.http2PriorityParam, http2PriorityParam));
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
$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; }
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.processPriority }; } $f.$ptr = $ptr; $f.err = err; $f.f = f; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.processPriority = function(f) { return this.$val.processPriority(f); };
http2serverConn.ptr.prototype.newStream = function(id, pusherID, state) {
var $ptr, _key, _r, _r$1, _tuple, cancelCtx, ctx, id, pusherID, sc, st, state, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _key = $f._key; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; cancelCtx = $f.cancelCtx; ctx = $f.ctx; id = $f.id; pusherID = $f.pusherID; sc = $f.sc; st = $f.st; state = $f.state; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (id === 0) {
$panic(new $String("internal error: cannot create stream with id 0"));
}
_r = http2contextWithCancel(sc.baseCtx); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
ctx = _tuple[0];
cancelCtx = _tuple[1];
st = new http2stream.ptr(sc, id, ptrType$63.nil, $chanNil, ctx, cancelCtx, new $Int64(0, 0), new $Int64(0, 0), new http2flow.ptr(0, ptrType$31.nil), new http2flow.ptr(0, ptrType$31.nil), ptrType$6.nil, new $Int64(0, 0), 0, state, false, false, false, sliceType$2.nil, false, false);
(st.$ptr_cw || (st.$ptr_cw = new ptrType$64(function() { return this.$target.cw; }, function($v) { this.$target.cw = $v; }, st))).Init();
st.flow.conn = sc.flow;
st.flow.add(sc.initialWindowSize);
st.inflow.conn = sc.inflow;
st.inflow.add(65535);
_key = id; (sc.streams || $throwRuntimeError("assignment to entry in nil map"))[$Uint32.keyFor(_key)] = { k: _key, v: st };
$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; }
if (st.isPushed()) {
sc.curPushedStreams = sc.curPushedStreams + (1) >>> 0;
} else {
sc.curClientStreams = sc.curClientStreams + (1) >>> 0;
}
_r$1 = sc.curOpenStreams(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
/* */ if (_r$1 === 1) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (_r$1 === 1) { */ case 4:
$r = sc.setConnState(1); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 5:
$s = -1; return st;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.newStream }; } $f.$ptr = $ptr; $f._key = _key; $f._r = _r; $f._r$1 = _r$1; $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.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.newStream = function(id, pusherID, state) { return this.$val.newStream(id, pusherID, state); };
http2serverConn.ptr.prototype.newWriterAndRequest = function(st, f) {
var $ptr, _entry, _i, _r, _r$1, _ref, _tuple, _tuple$1, _tuple$2, bodyOpen, err, f, hf, isConnect, ok, req, rp, rw, sc, st, vv, x$3, x$4, x$5, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _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; 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$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:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
rp = new http2requestParam.ptr(f.PseudoValue("method"), f.PseudoValue("scheme"), f.PseudoValue("authority"), f.PseudoValue("path"), false);
isConnect = rp.method === "CONNECT";
if (isConnect) {
if (!(rp.path === "") || !(rp.scheme === "") || rp.authority === "") {
$s = -1; return [ptrType$5.nil, ptrType$7.nil, (x$3 = http2streamError(f.http2HeadersFrame.http2FrameHeader.StreamID, 1), new x$3.constructor.elem(x$3))];
}
} else if (rp.method === "" || rp.path === "" || (!(rp.scheme === "https") && !(rp.scheme === "http"))) {
$s = -1; return [ptrType$5.nil, ptrType$7.nil, (x$4 = http2streamError(f.http2HeadersFrame.http2FrameHeader.StreamID, 1), new x$4.constructor.elem(x$4))];
}
bodyOpen = !f.http2HeadersFrame.StreamEnded();
if (rp.method === "HEAD" && bodyOpen) {
$s = -1; return [ptrType$5.nil, ptrType$7.nil, (x$5 = http2streamError(f.http2HeadersFrame.http2FrameHeader.StreamID, 1), new x$5.constructor.elem(x$5))];
}
rp.header = {};
_ref = f.RegularFields();
_i = 0;
/* while (true) { */ case 2:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
hf = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), hpack.HeaderField);
_r = sc.canonicalHeader(hf.Name); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$r = new Header(rp.header).Add(_r, hf.Value); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_i++;
/* } */ $s = 2; continue; case 3:
if (rp.authority === "") {
rp.authority = new Header(rp.header).Get("Host");
}
_r$1 = sc.newWriterAndRequestNoBody(st, $clone(rp, http2requestParam)); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
rw = _tuple[0];
req = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$5.nil, ptrType$7.nil, err];
}
if (bodyOpen) {
st.reqBuf = http2getRequestBodyBuf();
$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 http2fixedBuffer.ptr(st.reqBuf, 0, 0), $ifaceNil, $ifaceNil, $chanNil, $throwNilPointerError);
_tuple$1 = (_entry = rp.header[$String.keyFor("Content-Length")], _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
vv = _tuple$1[0];
ok = _tuple$1[1];
if (ok) {
_tuple$2 = strconv.ParseInt((0 >= vv.$length ? ($throwRuntimeError("index out of range"), undefined) : vv.$array[vv.$offset + 0]), 10, 64);
req.ContentLength = _tuple$2[0];
} else {
req.ContentLength = new $Int64(-1, 4294967295);
}
}
$s = -1; return [rw, req, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.newWriterAndRequest }; } $f.$ptr = $ptr; $f._entry = _entry; $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.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$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.newWriterAndRequest = function(st, f) { return this.$val.newWriterAndRequest(st, f); };
http2serverConn.ptr.prototype.newWriterAndRequestNoBody = function(st, rp) {
var $ptr, _1, _entry, _entry$1, _i, _i$1, _key, _r, _r$1, _r$2, _r$3, _ref, _ref$1, _tuple, body$1, bwSave, cookies, err, key, needsContinue, req, requestURI, rp, rw, rws, sc, st, tlsState, trailer, url_, v, x$3, x$4, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _i$1 = $f._i$1; _key = $f._key; _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; _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$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
tlsState = ptrType$17.nil;
if (rp.scheme === "https") {
tlsState = sc.tlsState;
}
needsContinue = new Header(rp.header).Get("Expect") === "100-continue";
if (needsContinue) {
new Header(rp.header).Del("Expect");
}
cookies = (_entry = rp.header[$String.keyFor("Cookie")], _entry !== undefined ? _entry.v : sliceType$1.nil);
if (cookies.$length > 1) {
new Header(rp.header).Set("Cookie", strings.Join(cookies, "; "));
}
trailer = false;
_ref = (_entry$1 = rp.header[$String.keyFor("Trailer")], _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil);
_i = 0;
/* while (true) { */ case 2:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_ref$1 = strings.Split(v, ",");
_i$1 = 0;
/* while (true) { */ case 4:
/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 5; continue; }
key = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
_r = strings.TrimSpace(key); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r$1 = CanonicalHeaderKey(_r); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
key = _r$1;
_1 = key;
if (_1 === ("Transfer-Encoding") || _1 === ("Trailer") || _1 === ("Content-Length")) {
} else {
if (trailer === false) {
trailer = {};
}
_key = key; (trailer || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: sliceType$1.nil };
}
_i$1++;
/* } */ $s = 4; continue; case 5:
_i++;
/* } */ $s = 2; continue; case 3:
delete rp.header[$String.keyFor("Trailer")];
url_ = ptrType$19.nil;
requestURI = "";
/* */ if (rp.method === "CONNECT") { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (rp.method === "CONNECT") { */ case 8:
url_ = new url.URL.ptr("", "", ptrType$18.nil, rp.authority, "", "", false, "", "");
requestURI = rp.authority;
$s = 10; continue;
/* } else { */ case 9:
err = $ifaceNil;
_r$2 = url.ParseRequestURI(rp.path); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple = _r$2;
url_ = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$5.nil, ptrType$7.nil, (x$3 = http2streamError(st.id, 1), new x$3.constructor.elem(x$3))];
}
requestURI = rp.path;
/* } */ case 10:
body$1 = new http2requestBody.ptr(st, sc, false, false, ptrType$63.nil, needsContinue);
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$20.nil, trailer, sc.remoteAddrStr, requestURI, tlsState, $chanNil, ptrType$16.nil, $ifaceNil);
req = http2requestWithContext(req, st.ctx);
_r$3 = http2responseWriterStatePool.Get(); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
rws = $assertType(_r$3, ptrType$65);
bwSave = rws.bw;
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, new $Int64(0, 0), new $Int64(0, 0), new sync.Mutex.ptr(0, 0), $chanNil));
rws.conn = sc;
rws.bw = bwSave;
rws.bw.Reset((x$4 = new http2chunkWriter.ptr(rws), new x$4.constructor.elem(x$4)));
rws.stream = st;
rws.req = req;
rws.body = body$1;
rw = new http2responseWriter.ptr(rws);
$s = -1; return [rw, req, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.newWriterAndRequestNoBody }; } $f.$ptr = $ptr; $f._1 = _1; $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._i$1 = _i$1; $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._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$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.newWriterAndRequestNoBody = function(st, rp) { return this.$val.newWriterAndRequestNoBody(st, rp); };
http2getRequestBodyBuf = function() {
var $ptr, _selection, b, $r;
/* */ var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _selection = $f._selection; b = $f.b; $r = $f.$r; }
_selection = $select([[http2reqBodyCache], []]);
if (_selection[0] === 0) {
b = _selection[1][0];
return b;
} else if (_selection[0] === 1) {
return $makeSlice(sliceType$2, 65535);
}
/* */ if ($f === undefined) { $f = { $blk: http2getRequestBodyBuf }; } $f.$ptr = $ptr; $f._selection = _selection; $f.b = b; $f.$r = $r; return $f;
};
http2putRequestBodyBuf = function(b) {
var $ptr, _selection, b, $r;
/* */ var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _selection = $f._selection; b = $f.b; $r = $f.$r; }
_selection = $select([[http2reqBodyCache, b], []]);
if (_selection[0] === 0) {
} else if (_selection[0] === 1) {
}
/* */ if ($f === undefined) { $f = { $blk: http2putRequestBodyBuf }; } $f.$ptr = $ptr; $f._selection = _selection; $f.b = b; $f.$r = $r; return $f;
};
http2serverConn.ptr.prototype.runHandler = function(rw, req, handler) {
var $ptr, didPanic, handler, req, rw, sc, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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);
didPanic = [didPanic];
rw = [rw];
sc = [sc];
sc[0] = this;
didPanic[0] = true;
$deferred.push([(function(didPanic, rw, sc) { return function $b() {
var $ptr, _arg, _arg$1, _arg$2, _r, _r$1, buf, e, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; buf = $f.buf; e = $f.e; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = rw[0].rws.stream.cancelCtx(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (didPanic[0]) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (didPanic[0]) { */ case 2:
e = $recover();
_r = sc[0].writeFrameFromHandler(new http2FrameWriteRequest.ptr((x$3 = new http2handlerPanicRST.ptr(rw[0].rws.stream.id), new x$3.constructor.elem(x$3)), rw[0].rws.stream, $chanNil)); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
/* */ if (http2shouldLogPanic(e)) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (http2shouldLogPanic(e)) { */ case 5:
buf = $makeSlice(sliceType$2, 65536);
buf = $subslice(buf, 0, runtime.Stack(buf, false));
_r$1 = sc[0].conn.RemoteAddr(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_arg = _r$1;
_arg$1 = e;
_arg$2 = buf;
$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; }
/* } */ case 6:
$s = -1; return;
/* } */ case 3:
$r = rw[0].handlerDone(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f.buf = buf; $f.e = e; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
}; })(didPanic, rw, sc), []]);
$r = handler(rw[0], req); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
didPanic[0] = false;
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.runHandler }; } $f.$ptr = $ptr; $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; } }
};
http2serverConn.prototype.runHandler = function(rw, req, handler) { return this.$val.runHandler(rw, req, handler); };
http2handleHeaderListTooLong = function(w, r) {
var $ptr, _r, r, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = w.WriteHeader(431); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r = 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 = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2handleHeaderListTooLong }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.ptr.prototype.writeHeaders = function(st, headerData) {
var $ptr, _r, _r$1, _r$2, _selection, err, err$1, errc, headerData, sc, st, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _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:
sc = this;
$r = sc.serveG.checkNotOn(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
errc = $chanNil;
/* */ if (!(headerData.h === false)) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!(headerData.h === false)) { */ case 2:
_r = http2errChanPool.Get(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
errc = $assertType(_r, chanType);
/* } */ case 3:
_r$1 = sc.writeFrameFromHandler(new http2FrameWriteRequest.ptr(headerData, st, errc)); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
err = _r$1;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
/* */ if (!(errc === $chanNil)) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!(errc === $chanNil)) { */ case 6:
_r$2 = $select([[errc], [sc.doneServing], [st.cw]]); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_selection = _r$2;
if (_selection[0] === 0) {
err$1 = _selection[1][0];
http2errChanPool.Put(new chanType(errc));
$s = -1; return err$1;
} else if (_selection[0] === 1) {
$s = -1; return http2errClientDisconnected;
} else if (_selection[0] === 2) {
$s = -1; return http2errStreamClosed;
}
/* } */ case 7:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.writeHeaders }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $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;
};
http2serverConn.prototype.writeHeaders = function(st, headerData) { return this.$val.writeHeaders(st, headerData); };
http2serverConn.ptr.prototype.write100ContinueHeaders = function(st) {
var $ptr, _r, sc, st, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; sc = $f.sc; st = $f.st; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
_r = sc.writeFrameFromHandler(new http2FrameWriteRequest.ptr((x$3 = new http2write100ContinueHeadersFrame.ptr(st.id), new x$3.constructor.elem(x$3)), st, $chanNil)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.write100ContinueHeaders }; } $f.$ptr = $ptr; $f._r = _r; $f.sc = sc; $f.st = st; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.write100ContinueHeaders = function(st) { return this.$val.write100ContinueHeaders(st); };
http2serverConn.ptr.prototype.noteBodyReadFromHandler = function(st, n, err) {
var $ptr, _r, _selection, buf, err, n, sc, st, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _selection = $f._selection; buf = $f.buf; 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:
sc = this;
$r = sc.serveG.checkNotOn(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (n > 0) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (n > 0) { */ case 2:
_r = $select([[sc.bodyReadCh, new http2bodyReadMsg.ptr(st, n)], [sc.doneServing]]); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_selection = _r;
if (_selection[0] === 0) {
} else if (_selection[0] === 1) {
}
/* } */ case 3:
if ($interfaceIsEqual(err, io.EOF)) {
buf = st.reqBuf;
if (!(buf === sliceType$2.nil)) {
st.reqBuf = sliceType$2.nil;
http2putRequestBodyBuf(buf);
}
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.noteBodyReadFromHandler }; } $f.$ptr = $ptr; $f._r = _r; $f._selection = _selection; $f.buf = buf; $f.err = err; $f.n = n; $f.sc = sc; $f.st = st; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.noteBodyReadFromHandler = function(st, n, err) { return this.$val.noteBodyReadFromHandler(st, n, err); };
http2serverConn.ptr.prototype.noteBodyRead = function(st, n) {
var $ptr, n, sc, st, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; n = $f.n; sc = $f.sc; st = $f.st; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$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; }
/* */ if (!((st.state === 3)) && !((st.state === 4))) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!((st.state === 3)) && !((st.state === 4))) { */ case 3:
$r = sc.sendWindowUpdate(st, n); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 4:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.noteBodyRead }; } $f.$ptr = $ptr; $f.n = n; $f.sc = sc; $f.st = st; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.noteBodyRead = function(st, n) { return this.$val.noteBodyRead(st, n); };
http2serverConn.ptr.prototype.sendWindowUpdate = function(st, n) {
var $ptr, n, sc, st, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; n = $f.n; sc = $f.sc; st = $f.st; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* while (true) { */ case 2:
/* if (!(n >= 2147483647)) { break; } */ if(!(n >= 2147483647)) { $s = 3; continue; }
$r = sc.sendWindowUpdate32(st, 2147483647); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
n = n - (2147483647) >> 0;
/* } */ $s = 2; continue; case 3:
$r = sc.sendWindowUpdate32(st, ((n >> 0))); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.sendWindowUpdate }; } $f.$ptr = $ptr; $f.n = n; $f.sc = sc; $f.st = st; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.sendWindowUpdate = function(st, n) { return this.$val.sendWindowUpdate(st, n); };
http2serverConn.ptr.prototype.sendWindowUpdate32 = function(st, n) {
var $ptr, n, ok, sc, st, streamID, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; n = $f.n; ok = $f.ok; sc = $f.sc; st = $f.st; streamID = $f.streamID; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sc = this;
$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (n === 0) {
$s = -1; return;
}
if (n < 0) {
$panic(new $String("negative update"));
}
streamID = 0;
if (!(st === ptrType$6.nil)) {
streamID = st.id;
}
$r = sc.writeFrame(new http2FrameWriteRequest.ptr((x$3 = new http2writeWindowUpdate.ptr(streamID, ((n >>> 0))), new x$3.constructor.elem(x$3)), st, $chanNil)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
ok = false;
if (st === ptrType$6.nil) {
ok = sc.inflow.add(n);
} else {
ok = st.inflow.add(n);
}
if (!ok) {
$panic(new $String("internal error; sent too many window updates without decrements?"));
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.sendWindowUpdate32 }; } $f.$ptr = $ptr; $f.n = n; $f.ok = ok; $f.sc = sc; $f.st = st; $f.streamID = streamID; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.sendWindowUpdate32 = function(st, n) { return this.$val.sendWindowUpdate32(st, n); };
http2requestBody.ptr.prototype.Close = function() {
var $ptr, b, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; b = $f.b; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
b = this;
/* */ if (!(b.pipe === ptrType$63.nil) && !b.closed) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(b.pipe === ptrType$63.nil) && !b.closed) { */ case 1:
$r = b.pipe.BreakWithError(http2errClosedBody); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
b.closed = true;
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2requestBody.ptr.prototype.Close }; } $f.$ptr = $ptr; $f.b = b; $f.$s = $s; $f.$r = $r; return $f;
};
http2requestBody.prototype.Close = function() { return this.$val.Close(); };
http2requestBody.ptr.prototype.Read = function(p) {
var $ptr, _r, _tmp, _tmp$1, _tuple, b, err, n, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
n = 0;
err = $ifaceNil;
b = this;
/* */ if (b.needsContinue) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (b.needsContinue) { */ case 1:
b.needsContinue = false;
$r = b.conn.write100ContinueHeaders(b.stream); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
if (b.pipe === ptrType$63.nil || b.sawEOF) {
_tmp = 0;
_tmp$1 = io.EOF;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
_r = b.pipe.Read(p); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
if ($interfaceIsEqual(err, io.EOF)) {
b.sawEOF = true;
}
if (b.conn === ptrType$9.nil && http2inTests) {
$s = -1; return [n, err];
}
$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; }
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2requestBody.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
http2requestBody.prototype.Read = function(p) { return this.$val.Read(p); };
http2chunkWriter.ptr.prototype.Write = function(p) {
var $ptr, _r, _tuple, cw, err, n, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
n = 0;
err = $ifaceNil;
cw = this;
_r = cw.rws.writeChunk(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2chunkWriter.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.cw = cw; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
};
http2chunkWriter.prototype.Write = function(p) { return this.$val.Write(p); };
http2responseWriterState.ptr.prototype.hasTrailers = function() {
var $ptr, rws;
rws = this;
return !((rws.trailers.$length === 0));
};
http2responseWriterState.prototype.hasTrailers = function() { return this.$val.hasTrailers(); };
http2responseWriterState.ptr.prototype.declareTrailer = function(k) {
var $ptr, k, rws, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; k = $f.k; rws = $f.rws; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
rws = this;
k = CanonicalHeaderKey(k);
/* */ if (!http2ValidTrailerHeader(k)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!http2ValidTrailerHeader(k)) { */ case 1:
$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; }
$s = -1; return;
/* } */ case 2:
if (!http2strSliceContains(rws.trailers, k)) {
rws.trailers = $append(rws.trailers, k);
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2responseWriterState.ptr.prototype.declareTrailer }; } $f.$ptr = $ptr; $f.k = k; $f.rws = rws; $f.$s = $s; $f.$r = $r; return $f;
};
http2responseWriterState.prototype.declareTrailer = function(k) { return this.$val.declareTrailer(k); };
http2responseWriterState.ptr.prototype.writeChunk = function(p) {
var $ptr, _entry, _entry$1, _entry$2, _i, _r, _r$1, _r$2, _r$3, _r$4, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _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; _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:
n = 0;
err = $ifaceNil;
rws = this;
if (!rws.wroteHeader) {
rws.writeHeader(200);
}
isHeadResp = rws.req.Method === "HEAD";
/* */ if (!rws.sentHeader) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!rws.sentHeader) { */ case 1:
rws.sentHeader = true;
_tmp = "";
_tmp$1 = "";
ctype = _tmp;
clen = _tmp$1;
clen = new Header(rws.snapHeader).Get("Content-Length");
if (!(clen === "")) {
new Header(rws.snapHeader).Del("Content-Length");
_tuple = strconv.ParseInt(clen, 10, 64);
clen64 = _tuple[0];
err$1 = _tuple[1];
if ($interfaceIsEqual(err$1, $ifaceNil) && (clen64.$high > 0 || (clen64.$high === 0 && clen64.$low >= 0))) {
rws.sentContentLen = clen64;
} else {
clen = "";
}
}
if (clen === "" && rws.handlerDone && http2bodyAllowedForStatus(rws.status) && (p.$length > 0 || !isHeadResp)) {
clen = strconv.Itoa(p.$length);
}
_tuple$1 = (_entry = rws.snapHeader[$String.keyFor("Content-Type")], _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
hasContentType = _tuple$1[1];
/* */ if (!hasContentType && http2bodyAllowedForStatus(rws.status)) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!hasContentType && http2bodyAllowedForStatus(rws.status)) { */ case 3:
_r = DetectContentType(p); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
ctype = _r;
/* } */ case 4:
date = "";
_tuple$2 = (_entry$1 = rws.snapHeader[$String.keyFor("Date")], _entry$1 !== undefined ? [_entry$1.v, true] : [sliceType$1.nil, false]);
ok = _tuple$2[1];
/* */ if (!ok) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!ok) { */ case 6:
_r$1 = $clone($clone(time.Now(), time.Time).UTC(), time.Time).Format("Mon, 02 Jan 2006 15:04:05 GMT"); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
date = _r$1;
/* } */ case 7:
_ref = (_entry$2 = rws.snapHeader[$String.keyFor("Trailer")], _entry$2 !== undefined ? _entry$2.v : sliceType$1.nil);
_i = 0;
/* while (true) { */ case 9:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 10; continue; }
v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
$r = http2foreachHeaderElement(v, $methodVal(rws, "declareTrailer")); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_i++;
/* } */ $s = 9; continue; case 10:
endStream = (rws.handlerDone && !rws.hasTrailers() && (p.$length === 0)) || isHeadResp;
_r$2 = rws.conn.writeHeaders(rws.stream, new http2writeResHeaders.ptr(rws.stream.id, rws.status, rws.snapHeader, sliceType$1.nil, endStream, date, ctype, clen)); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
err = _r$2;
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$2 = 0;
_tmp$3 = err;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
}
if (endStream) {
_tmp$4 = 0;
_tmp$5 = $ifaceNil;
n = _tmp$4;
err = _tmp$5;
$s = -1; return [n, err];
}
/* } */ case 2:
if (isHeadResp) {
_tmp$6 = p.$length;
_tmp$7 = $ifaceNil;
n = _tmp$6;
err = _tmp$7;
$s = -1; return [n, err];
}
if ((p.$length === 0) && !rws.handlerDone) {
_tmp$8 = 0;
_tmp$9 = $ifaceNil;
n = _tmp$8;
err = _tmp$9;
$s = -1; return [n, err];
}
/* */ if (rws.handlerDone) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (rws.handlerDone) { */ case 13:
$r = rws.promoteUndeclaredTrailers(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 14:
endStream$1 = rws.handlerDone && !rws.hasTrailers();
/* */ if (p.$length > 0 || endStream$1) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (p.$length > 0 || endStream$1) { */ case 16:
_r$3 = rws.conn.writeDataFromHandler(rws.stream, p, endStream$1); /* */ $s = 18; case 18: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
err$2 = _r$3;
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
_tmp$10 = 0;
_tmp$11 = err$2;
n = _tmp$10;
err = _tmp$11;
$s = -1; return [n, err];
}
/* } */ case 17:
/* */ if (rws.handlerDone && rws.hasTrailers()) { $s = 19; continue; }
/* */ $s = 20; continue;
/* if (rws.handlerDone && rws.hasTrailers()) { */ case 19:
_r$4 = rws.conn.writeHeaders(rws.stream, new http2writeResHeaders.ptr(rws.stream.id, 0, rws.handlerHeader, rws.trailers, true, "", "", "")); /* */ $s = 21; case 21: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
err = _r$4;
_tmp$12 = p.$length;
_tmp$13 = err;
n = _tmp$12;
err = _tmp$13;
$s = -1; return [n, err];
/* } */ case 20:
_tmp$14 = p.$length;
_tmp$15 = $ifaceNil;
n = _tmp$14;
err = _tmp$15;
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2responseWriterState.ptr.prototype.writeChunk }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $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._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;
};
http2responseWriterState.prototype.writeChunk = function(p) { return this.$val.writeChunk(p); };
http2responseWriterState.ptr.prototype.promoteUndeclaredTrailers = function() {
var $ptr, _entry, _i, _key, _keys, _r, _ref, k, rws, sorter, trailerKey, vv, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _i = $f._i; _key = $f._key; _keys = $f._keys; _r = $f._r; _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:
rws = this;
_ref = rws.handlerHeader;
_i = 0;
_keys = $keys(_ref);
/* while (true) { */ case 1:
/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 2; continue; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
/* continue; */ $s = 1; continue;
}
k = _entry.k;
vv = _entry.v;
/* */ if (!strings.HasPrefix(k, "Trailer:")) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!strings.HasPrefix(k, "Trailer:")) { */ case 3:
_i++;
/* continue; */ $s = 1; continue;
/* } */ case 4:
trailerKey = strings.TrimPrefix(k, "Trailer:");
$r = rws.declareTrailer(trailerKey); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_key = CanonicalHeaderKey(trailerKey); (rws.handlerHeader || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: vv };
_i++;
/* } */ $s = 1; continue; case 2:
/* */ if (rws.trailers.$length > 1) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (rws.trailers.$length > 1) { */ case 6:
_r = http2sorterPool.Get(); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
sorter = $assertType(_r, ptrType$66);
$r = sorter.SortStrings(rws.trailers); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
http2sorterPool.Put(sorter);
/* } */ case 7:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2responseWriterState.ptr.prototype.promoteUndeclaredTrailers }; } $f.$ptr = $ptr; $f._entry = _entry; $f._i = _i; $f._key = _key; $f._keys = _keys; $f._r = _r; $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;
};
http2responseWriterState.prototype.promoteUndeclaredTrailers = function() { return this.$val.promoteUndeclaredTrailers(); };
http2responseWriter.ptr.prototype.Flush = function() {
var $ptr, _r, _r$1, err, rws, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; err = $f.err; rws = $f.rws; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
w = this;
rws = w.rws;
if (rws === ptrType$65.nil) {
$panic(new $String("Header called after Handler finished"));
}
/* */ if (rws.bw.Buffered() > 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (rws.bw.Buffered() > 0) { */ case 1:
_r = rws.bw.Flush(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return;
}
$s = 3; continue;
/* } else { */ case 2:
_r$1 = rws.writeChunk(sliceType$2.nil); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
/* } */ case 3:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2responseWriter.ptr.prototype.Flush }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.err = err; $f.rws = rws; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
http2responseWriter.prototype.Flush = function() { return this.$val.Flush(); };
http2responseWriter.ptr.prototype.CloseNotify = function() {
var $ptr, ch, cw, rws, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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:
ch = [ch];
cw = [cw];
w = this;
rws = w.rws;
if (rws === ptrType$65.nil) {
$panic(new $String("CloseNotify called after Handler finished"));
}
$r = rws.closeNotifierMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
ch[0] = rws.closeNotifierCh;
/* */ if (ch[0] === $chanNil) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (ch[0] === $chanNil) { */ case 2:
ch[0] = new $Chan($Bool, 1);
rws.closeNotifierCh = ch[0];
cw[0] = rws.stream.cw;
$go((function(ch, cw) { return function $b() {
var $ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = new http2closeWaiter(cw[0]).Wait(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = $send(ch[0], true); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
}; })(ch, cw), []);
/* } */ case 3:
$r = rws.closeNotifierMu.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return ch[0];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2responseWriter.ptr.prototype.CloseNotify }; } $f.$ptr = $ptr; $f.ch = ch; $f.cw = cw; $f.rws = rws; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
http2responseWriter.prototype.CloseNotify = function() { return this.$val.CloseNotify(); };
http2responseWriter.ptr.prototype.Header = function() {
var $ptr, rws, w;
w = this;
rws = w.rws;
if (rws === ptrType$65.nil) {
$panic(new $String("Header called after Handler finished"));
}
if (rws.handlerHeader === false) {
rws.handlerHeader = {};
}
return rws.handlerHeader;
};
http2responseWriter.prototype.Header = function() { return this.$val.Header(); };
http2responseWriter.ptr.prototype.WriteHeader = function(code) {
var $ptr, code, rws, w;
w = this;
rws = w.rws;
if (rws === ptrType$65.nil) {
$panic(new $String("WriteHeader called after Handler finished"));
}
rws.writeHeader(code);
};
http2responseWriter.prototype.WriteHeader = function(code) { return this.$val.WriteHeader(code); };
http2responseWriterState.ptr.prototype.writeHeader = function(code) {
var $ptr, code, rws;
rws = this;
if (!rws.wroteHeader) {
rws.wroteHeader = true;
rws.status = code;
if ($keys(rws.handlerHeader).length > 0) {
rws.snapHeader = http2cloneHeader(rws.handlerHeader);
}
}
};
http2responseWriterState.prototype.writeHeader = function(code) { return this.$val.writeHeader(code); };
http2cloneHeader = function(h) {
var $ptr, _entry, _i, _key, _keys, _ref, h, h2, k, vv, vv2, x$3;
h2 = (x$3 = $keys(h).length, ((x$3 < 0 || x$3 > 2147483647) ? $throwRuntimeError("makemap: size out of range") : {}));
_ref = h;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
continue;
}
k = _entry.k;
vv = _entry.v;
vv2 = $makeSlice(sliceType$1, vv.$length);
$copySlice(vv2, vv);
_key = k; (h2 || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: vv2 };
_i++;
}
return h2;
};
http2responseWriter.ptr.prototype.Write = function(p) {
var $ptr, _r, _tuple, err, n, p, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
n = 0;
err = $ifaceNil;
w = this;
_r = w.write(p.$length, p, ""); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2responseWriter.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.n = n; $f.p = p; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
http2responseWriter.prototype.Write = function(p) { return this.$val.Write(p); };
http2responseWriter.ptr.prototype.WriteString = function(s) {
var $ptr, _r, _tuple, err, n, s, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
n = 0;
err = $ifaceNil;
w = this;
_r = w.write(s.length, sliceType$2.nil, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2responseWriter.ptr.prototype.WriteString }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.n = n; $f.s = s; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
http2responseWriter.prototype.WriteString = function(s) { return this.$val.WriteString(s); };
http2responseWriter.ptr.prototype.write = function(lenData, dataB, dataS) {
var $ptr, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, dataB, dataS, err, lenData, n, rws, w, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; dataB = $f.dataB; dataS = $f.dataS; err = $f.err; lenData = $f.lenData; n = $f.n; rws = $f.rws; w = $f.w; 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:
n = 0;
err = $ifaceNil;
w = this;
rws = w.rws;
if (rws === ptrType$65.nil) {
$panic(new $String("Write called after Handler finished"));
}
if (!rws.wroteHeader) {
w.WriteHeader(200);
}
if (!http2bodyAllowedForStatus(rws.status)) {
_tmp = 0;
_tmp$1 = $pkg.ErrBodyNotAllowed;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
rws.wroteBytes = (x$3 = rws.wroteBytes, x$4 = (x$5 = (new $Int64(0, dataB.$length)), x$6 = (new $Int64(0, dataS.length)), new $Int64(x$5.$high + x$6.$high, x$5.$low + x$6.$low)), new $Int64(x$3.$high + x$4.$high, x$3.$low + x$4.$low));
if (!((x$7 = rws.sentContentLen, (x$7.$high === 0 && x$7.$low === 0))) && (x$8 = rws.wroteBytes, x$9 = rws.sentContentLen, (x$8.$high > x$9.$high || (x$8.$high === x$9.$high && x$8.$low > x$9.$low)))) {
_tmp$2 = 0;
_tmp$3 = errors.New("http2: handler wrote more than declared Content-Length");
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
}
/* */ if (!(dataB === sliceType$2.nil)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(dataB === sliceType$2.nil)) { */ case 1:
_r = rws.bw.Write(dataB); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
$s = -1; return [n, err];
/* } else { */ case 2:
_r$1 = rws.bw.WriteString(dataS); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple$1 = _r$1;
n = _tuple$1[0];
err = _tuple$1[1];
$s = -1; return [n, err];
/* } */ case 3:
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2responseWriter.ptr.prototype.write }; } $f.$ptr = $ptr; $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.dataB = dataB; $f.dataS = dataS; $f.err = err; $f.lenData = lenData; $f.n = n; $f.rws = rws; $f.w = w; $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;
};
http2responseWriter.prototype.write = function(lenData, dataB, dataS) { return this.$val.write(lenData, dataB, dataS); };
http2responseWriter.ptr.prototype.handlerDone = function() {
var $ptr, rws, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; rws = $f.rws; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
w = this;
rws = w.rws;
rws.handlerDone = true;
$r = w.Flush(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
w.rws = ptrType$65.nil;
http2responseWriterStatePool.Put(rws);
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2responseWriter.ptr.prototype.handlerDone }; } $f.$ptr = $ptr; $f.rws = rws; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
http2responseWriter.prototype.handlerDone = function() { return this.$val.handlerDone(); };
http2responseWriter.ptr.prototype.push = function(target, opts) {
var $ptr, _1, _entry, _i, _keys, _r, _r$1, _r$10, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _entry = $f._entry; _i = $f._i; _keys = $f._keys; _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; _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:
w = this;
st = w.rws.stream;
sc = st.sc;
$r = sc.serveG.checkNotOn(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (st.isPushed()) {
$s = -1; return http2ErrRecursivePush;
}
if (opts.Method === "") {
opts.Method = "GET";
}
if (opts.Header === false) {
opts.Header = $makeMap($String.keyFor, []);
}
wantScheme = "http";
if (!(w.rws.req.TLS === ptrType$17.nil)) {
wantScheme = "https";
}
_r = url.Parse(target); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
u = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
/* */ if (u.Scheme === "") { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (u.Scheme === "") { */ case 3:
/* */ if (!strings.HasPrefix(target, "/")) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!strings.HasPrefix(target, "/")) { */ case 6:
_r$1 = 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$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* } */ case 7:
u.Scheme = wantScheme;
u.Host = w.rws.req.Host;
$s = 5; continue;
/* } else { */ case 4:
/* */ if (!(u.Scheme === wantScheme)) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (!(u.Scheme === wantScheme)) { */ case 9:
_r$2 = 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$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$s = -1; return _r$2;
/* } */ case 10:
if (u.Host === "") {
$s = -1; return errors.New("URL must have a host");
}
/* } */ case 5:
_ref = opts.Header;
_i = 0;
_keys = $keys(_ref);
/* while (true) { */ case 12:
/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 13; continue; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
/* continue; */ $s = 12; continue;
}
k = _entry.k;
/* */ if (strings.HasPrefix(k, ":")) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if (strings.HasPrefix(k, ":")) { */ case 14:
_r$3 = fmt.Errorf("promised request headers cannot include pseudo header %q", new sliceType([new $String(k)])); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
$s = -1; return _r$3;
/* } */ case 15:
_r$4 = strings.ToLower(k); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_1 = _r$4;
/* */ if (_1 === ("content-length") || _1 === ("content-encoding") || _1 === ("trailer") || _1 === ("te") || _1 === ("expect") || _1 === ("host")) { $s = 19; continue; }
/* */ $s = 20; continue;
/* if (_1 === ("content-length") || _1 === ("content-encoding") || _1 === ("trailer") || _1 === ("te") || _1 === ("expect") || _1 === ("host")) { */ case 19:
_r$5 = fmt.Errorf("promised request headers cannot include %q", new sliceType([new $String(k)])); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
$s = -1; return _r$5;
/* } */ case 20:
case 17:
_i++;
/* } */ $s = 12; continue; case 13:
_r$6 = http2checkValidHTTP2RequestHeaders(opts.Header); /* */ $s = 22; case 22: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
err$1 = _r$6;
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return err$1;
}
/* */ if (!(opts.Method === "GET") && !(opts.Method === "HEAD")) { $s = 23; continue; }
/* */ $s = 24; continue;
/* if (!(opts.Method === "GET") && !(opts.Method === "HEAD")) { */ case 23:
_r$7 = fmt.Errorf("method %q must be GET or HEAD", new sliceType([new $String(opts.Method)])); /* */ $s = 25; case 25: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
$s = -1; return _r$7;
/* } */ case 24:
_r$8 = http2errChanPool.Get(); /* */ $s = 26; case 26: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
msg = new http2startPushRequest.ptr(st, opts.Method, u, http2cloneHeader(opts.Header), $assertType(_r$8, chanType));
_r$9 = $select([[sc.doneServing], [st.cw], [sc.wantStartPushCh, $clone(msg, http2startPushRequest)]]); /* */ $s = 27; case 27: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
_selection = _r$9;
/* */ if (_selection[0] === 0) { $s = 28; continue; }
/* */ if (_selection[0] === 1) { $s = 29; continue; }
/* */ if (_selection[0] === 2) { $s = 30; continue; }
/* */ $s = 31; continue;
/* if (_selection[0] === 0) { */ case 28:
$s = -1; return http2errClientDisconnected;
/* } else if (_selection[0] === 1) { */ case 29:
$s = -1; return http2errStreamClosed;
/* } else if (_selection[0] === 2) { */ case 30:
/* } */ case 31:
_r$10 = $select([[sc.doneServing], [st.cw], [msg.done]]); /* */ $s = 32; case 32: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
_selection$1 = _r$10;
if (_selection$1[0] === 0) {
$s = -1; return http2errClientDisconnected;
} else if (_selection$1[0] === 1) {
$s = -1; return http2errStreamClosed;
} else if (_selection$1[0] === 2) {
err$2 = _selection$1[1][0];
http2errChanPool.Put(new chanType(msg.done));
$s = -1; return err$2;
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2responseWriter.ptr.prototype.push }; } $f.$ptr = $ptr; $f._1 = _1; $f._entry = _entry; $f._i = _i; $f._keys = _keys; $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._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;
};
http2responseWriter.prototype.push = function(target, opts) { return this.$val.push(target, opts); };
http2serverConn.ptr.prototype.startPush = function(msg) {
var $ptr, allocatePromisedID, msg, sc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; allocatePromisedID = $f.allocatePromisedID; msg = $f.msg; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
msg = [msg];
sc = [sc];
sc[0] = this;
$r = sc[0].serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (!((msg[0].parent.state === 1)) && !((msg[0].parent.state === 3))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!((msg[0].parent.state === 1)) && !((msg[0].parent.state === 3))) { */ case 2:
$r = $send(msg[0].done, http2errStreamClosed); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } */ case 3:
/* */ if (!sc[0].pushEnabled) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (!sc[0].pushEnabled) { */ case 5:
$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; }
$s = -1; return;
/* } */ case 6:
allocatePromisedID = (function(msg, sc) { return function $b() {
var $ptr, _r, _r$1, _r$2, _tuple, err, promised, promisedID, req, rw, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _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:
$r = sc[0].serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (!sc[0].pushEnabled) {
$s = -1; return [0, $pkg.ErrNotSupported];
}
if ((sc[0].curPushedStreams + 1 >>> 0) > sc[0].clientMaxStreams) {
$s = -1; return [0, http2ErrPushLimitReached];
}
/* */ if ((sc[0].maxPushPromiseID + 2 >>> 0) >= 2147483648) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if ((sc[0].maxPushPromiseID + 2 >>> 0) >= 2147483648) { */ case 2:
$r = sc[0].startGracefulShutdown(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return [0, http2ErrPushLimitReached];
/* } */ case 3:
sc[0].maxPushPromiseID = sc[0].maxPushPromiseID + (2) >>> 0;
promisedID = sc[0].maxPushPromiseID;
_r = sc[0].newStream(promisedID, msg[0].parent.id, 3); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
promised = _r;
_r$1 = 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$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
rw = _tuple[0];
req = _tuple[1];
err = _tuple[2];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 7:
_r$2 = fmt.Sprintf("newWriterAndRequestNoBody(%+v): %v", new sliceType([msg[0].url, err])); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$panic(new $String(_r$2));
/* } */ case 8:
$go($methodVal(sc[0], "runHandler"), [rw, req, $methodVal(sc[0].handler, "ServeHTTP")]);
$s = -1; return [promisedID, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $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;
}; })(msg, sc);
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.startPush }; } $f.$ptr = $ptr; $f.allocatePromisedID = allocatePromisedID; $f.msg = msg; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
};
http2serverConn.prototype.startPush = function(msg) { return this.$val.startPush(msg); };
http2foreachHeaderElement = function(v, fn) {
var $ptr, _i, _ref, f, fn, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
v = textproto.TrimString(v);
if (v === "") {
$s = -1; return;
}
/* */ if (!strings.Contains(v, ",")) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!strings.Contains(v, ",")) { */ case 1:
$r = fn(v); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } */ case 2:
_ref = strings.Split(v, ",");
_i = 0;
/* while (true) { */ case 4:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; }
f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
f = textproto.TrimString(f);
/* */ if (!(f === "")) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!(f === "")) { */ case 6:
$r = fn(f); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 7:
_i++;
/* } */ $s = 4; continue; case 5:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2foreachHeaderElement }; } $f.$ptr = $ptr; $f._i = _i; $f._ref = _ref; $f.f = f; $f.fn = fn; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
http2checkValidHTTP2RequestHeaders = function(h) {
var $ptr, _entry, _entry$1, _i, _r, _ref, _tuple, h, k, ok, te, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _r = $f._r; _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:
_ref = http2connHeaders;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
k = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_tuple = (_entry = h[$String.keyFor(k)], _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
ok = _tuple[1];
/* */ if (ok) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (ok) { */ case 3:
_r = 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 = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 4:
_i++;
/* } */ $s = 1; continue; case 2:
te = (_entry$1 = h[$String.keyFor("Te")], _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil);
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]) === "")))) {
$s = -1; return errors.New("request header \"TE\" may only be \"trailers\" in HTTP/2");
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2checkValidHTTP2RequestHeaders }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._r = _r; $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;
};
http2new400Handler = function(err) {
var $ptr, err;
return (function $b(w, r) {
var $ptr, _arg, _arg$1, _r, r, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; r = $f.r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_arg = w;
_r = err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_arg$1 = _r;
$r = Error(_arg, _arg$1, 400); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f.r = r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
});
};
http2ValidTrailerHeader = function(name) {
var $ptr, _entry, name;
name = CanonicalHeaderKey(name);
if (strings.HasPrefix(name, "If-") || (_entry = http2badTrailer[$String.keyFor(name)], _entry !== undefined ? _entry.v : false)) {
return false;
}
return true;
};
http2h1ServerShutdownChan = function(hs) {
var $ptr, _r, _r$1, _tuple, fn, hs, hs$1, ok, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; fn = $f.fn; hs = $f.hs; hs$1 = $f.hs$1; ok = $f.ok; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
fn = http2testh1ServerShutdownChan;
/* */ if (!(fn === $throwNilPointerError)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(fn === $throwNilPointerError)) { */ case 1:
_r = fn(hs); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 2:
x$3 = hs;
_tuple = $assertType(x$3, I, true);
hs$1 = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (ok) { */ case 4:
_r$1 = hs$1.getDoneChan(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* } */ case 5:
$s = -1; return $chanNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2h1ServerShutdownChan }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.fn = fn; $f.hs = hs; $f.hs$1 = hs$1; $f.ok = ok; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
};
http2h1ServerKeepAlivesDisabled = function(hs) {
var $ptr, _r, _tuple, hs, hs$1, ok, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; hs = $f.hs; hs$1 = $f.hs$1; ok = $f.ok; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
x$3 = hs;
_tuple = $assertType(x$3, I$1, true);
hs$1 = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (ok) { */ case 1:
_r = hs$1.doKeepAlives(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return !_r;
/* } */ case 2:
$s = -1; return false;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2h1ServerKeepAlivesDisabled }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.hs = hs; $f.hs$1 = hs$1; $f.ok = ok; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
};
http2Transport.ptr.prototype.maxHeaderListSize = function() {
var $ptr, t;
t = this;
if (t.MaxHeaderListSize === 0) {
return 10485760;
}
if (t.MaxHeaderListSize === 4294967295) {
return 0;
}
return t.MaxHeaderListSize;
};
http2Transport.prototype.maxHeaderListSize = function() { return this.$val.maxHeaderListSize(); };
http2Transport.ptr.prototype.disableCompression = function() {
var $ptr, t;
t = this;
return t.DisableCompression || (!(t.t1 === ptrType$21.nil) && t.t1.DisableCompression);
};
http2Transport.prototype.disableCompression = function() { return this.$val.disableCompression(); };
http2Transport.ptr.prototype.connPool = function() {
var $ptr, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
$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; }
$s = -1; return t.connPoolOrDef;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Transport.ptr.prototype.connPool }; } $f.$ptr = $ptr; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
http2Transport.prototype.connPool = function() { return this.$val.connPool(); };
http2Transport.ptr.prototype.initConnPool = function() {
var $ptr, t;
t = this;
if (!($interfaceIsEqual(t.ConnPool, $ifaceNil))) {
t.connPoolOrDef = t.ConnPool;
} else {
t.connPoolOrDef = new http2clientConnPool.ptr(t, new sync.Mutex.ptr(0, 0), false, false, false, false);
}
};
http2Transport.prototype.initConnPool = function() { return this.$val.initConnPool(); };
http2clientStream.ptr.prototype.awaitRequestCancel = function(req) {
var $ptr, _r, _r$1, _r$2, _r$3, _selection, _v, cs, ctx, req, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _selection = $f._selection; _v = $f._v; cs = $f.cs; ctx = $f.ctx; req = $f.req; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
cs = this;
ctx = http2reqContext(req);
if (!(req.Cancel === $chanNil)) { _v = false; $s = 3; continue s; }
_r = ctx.Done(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_v = _r === $chanNil; case 3:
/* */ if (_v) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (_v) { */ case 1:
$s = -1; return;
/* } */ case 2:
_r$1 = ctx.Done(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$2 = $select([[req.Cancel], [_r$1], [cs.done]]); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_selection = _r$2;
/* */ if (_selection[0] === 0) { $s = 7; continue; }
/* */ if (_selection[0] === 1) { $s = 8; continue; }
/* */ if (_selection[0] === 2) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (_selection[0] === 0) { */ case 7:
$r = cs.cancelStream(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = cs.bufPipe.CloseWithError(http2errRequestCanceled); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 10; continue;
/* } else if (_selection[0] === 1) { */ case 8:
$r = cs.cancelStream(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$3 = ctx.Err(); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
$r = cs.bufPipe.CloseWithError(_r$3); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 10; continue;
/* } else if (_selection[0] === 2) { */ case 9:
/* } */ case 10:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientStream.ptr.prototype.awaitRequestCancel }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._selection = _selection; $f._v = _v; $f.cs = cs; $f.ctx = ctx; $f.req = req; $f.$s = $s; $f.$r = $r; return $f;
};
http2clientStream.prototype.awaitRequestCancel = function(req) { return this.$val.awaitRequestCancel(req); };
http2clientStream.ptr.prototype.cancelStream = function() {
var $ptr, cs, didReset, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; cs = $f.cs; didReset = $f.didReset; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
cs = this;
$r = cs.cc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
didReset = cs.didReset;
cs.didReset = true;
$r = cs.cc.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (!didReset) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!didReset) { */ case 3:
$r = cs.cc.writeStreamReset(cs.ID, 8, $ifaceNil); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 4:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientStream.ptr.prototype.cancelStream }; } $f.$ptr = $ptr; $f.cs = cs; $f.didReset = didReset; $f.$s = $s; $f.$r = $r; return $f;
};
http2clientStream.prototype.cancelStream = function() { return this.$val.cancelStream(); };
http2clientStream.ptr.prototype.checkResetOrDone = function() {
var $ptr, _selection, cs, $r;
/* */ var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _selection = $f._selection; cs = $f.cs; $r = $f.$r; }
cs = this;
_selection = $select([[cs.peerReset], [cs.done], []]);
if (_selection[0] === 0) {
return cs.resetErr;
} else if (_selection[0] === 1) {
return http2errStreamClosed;
} else if (_selection[0] === 2) {
return $ifaceNil;
}
/* */ if ($f === undefined) { $f = { $blk: http2clientStream.ptr.prototype.checkResetOrDone }; } $f.$ptr = $ptr; $f._selection = _selection; $f.cs = cs; $f.$r = $r; return $f;
};
http2clientStream.prototype.checkResetOrDone = function() { return this.$val.checkResetOrDone(); };
http2clientStream.ptr.prototype.abortRequestBodyWrite = function(err) {
var $ptr, cc, cs, err, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; cc = $f.cc; cs = $f.cs; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
cs = this;
if ($interfaceIsEqual(err, $ifaceNil)) {
$panic(new $String("nil error"));
}
cc = cs.cc;
$r = cc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
cs.stopReqBody = err;
$r = cc.cond.Broadcast(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = cc.mu.Unlock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientStream.ptr.prototype.abortRequestBodyWrite }; } $f.$ptr = $ptr; $f.cc = cc; $f.cs = cs; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
};
http2clientStream.prototype.abortRequestBodyWrite = function(err) { return this.$val.abortRequestBodyWrite(err); };
http2stickyErrWriter.ptr.prototype.Write = function(p) {
var $ptr, _r, _tmp, _tmp$1, _tuple, err, n, p, sew, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
n = 0;
err = $ifaceNil;
sew = this;
if (!($interfaceIsEqual(sew.err.$get(), $ifaceNil))) {
_tmp = 0;
_tmp$1 = sew.err.$get();
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
_r = sew.w.Write(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
sew.err.$set(err);
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2stickyErrWriter.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
http2stickyErrWriter.prototype.Write = function(p) { return this.$val.Write(p); };
http2Transport.ptr.prototype.RoundTrip = function(req) {
var $ptr, _r, req, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; req = $f.req; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
_r = t.RoundTripOpt(req, new http2RoundTripOpt.ptr(false)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Transport.ptr.prototype.RoundTrip }; } $f.$ptr = $ptr; $f._r = _r; $f.req = req; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
http2Transport.prototype.RoundTrip = function(req) { return this.$val.RoundTrip(req); };
http2authorityAddr = function(scheme, authority) {
var $ptr, _r, _r$1, _tuple, _tuple$1, a, addr, authority, err, err$1, host, port, scheme, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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:
addr = "";
_r = net.SplitHostPort(authority); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
host = _tuple[0];
port = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
port = "443";
if (scheme === "http") {
port = "80";
}
host = authority;
}
_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; }
_tuple$1 = _r$1;
a = _tuple$1[0];
err$1 = _tuple$1[1];
if ($interfaceIsEqual(err$1, $ifaceNil)) {
host = a;
}
if (strings.HasPrefix(host, "[") && strings.HasSuffix(host, "]")) {
addr = host + ":" + port;
$s = -1; return addr;
}
addr = net.JoinHostPort(host, port);
$s = -1; return addr;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2authorityAddr }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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;
};
http2Transport.ptr.prototype.RoundTripOpt = function(req, opt) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, addr, cc, err, opt, req, res, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; addr = $f.addr; cc = $f.cc; err = $f.err; opt = $f.opt; req = $f.req; res = $f.res; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
if (!(req.URL.Scheme === "https" || (req.URL.Scheme === "http" && t.AllowHTTP))) {
$s = -1; return [ptrType$16.nil, errors.New("http2: unsupported scheme")];
}
_r = http2authorityAddr(req.URL.Scheme, req.URL.Host); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
addr = _r;
/* while (true) { */ case 2:
_r$1 = t.connPool(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$2 = _r$1.GetClientConn(req, addr); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple = _r$2;
cc = _tuple[0];
err = _tuple[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 6:
$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; }
$s = -1; return [ptrType$16.nil, err];
/* } */ case 7:
$r = http2traceGotConn(req, cc); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$3 = cc.RoundTrip(req); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$1 = _r$3;
res = _tuple$1[0];
err = _tuple$1[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 11:
_r$4 = http2shouldRetryRequest(req, err); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_tuple$2 = _r$4;
req = _tuple$2[0];
err = _tuple$2[1];
if ($interfaceIsEqual(err, $ifaceNil)) {
/* continue; */ $s = 2; continue;
}
/* } */ case 12:
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 14:
$r = t.vlogf("RoundTrip failure: %v", new sliceType([err])); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return [ptrType$16.nil, err];
/* } */ case 15:
$s = -1; return [res, $ifaceNil];
/* } */ $s = 2; continue; case 3:
$s = -1; return [ptrType$16.nil, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Transport.ptr.prototype.RoundTripOpt }; } $f.$ptr = $ptr; $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.addr = addr; $f.cc = cc; $f.err = err; $f.opt = opt; $f.req = req; $f.res = res; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
http2Transport.prototype.RoundTripOpt = function(req, opt) { return this.$val.RoundTripOpt(req, opt); };
http2Transport.ptr.prototype.CloseIdleConnections = function() {
var $ptr, _r, _tuple, cp, ok, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
t = this;
_r = t.connPool(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = $assertType(_r, http2clientConnPoolIdleCloser, true);
cp = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (ok) { */ case 2:
$r = cp.closeIdleConnections(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 3:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Transport.ptr.prototype.CloseIdleConnections }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.cp = cp; $f.ok = ok; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
http2Transport.prototype.CloseIdleConnections = function() { return this.$val.CloseIdleConnections(); };
http2shouldRetryRequest = function(req, err) {
var $ptr, _1, _r, _tuple, body$1, err, err$1, getBody, newReq, req, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _r = $f._r; _tuple = $f._tuple; body$1 = $f.body$1; err = $f.err; err$1 = $f.err$1; getBody = $f.getBody; newReq = $f.newReq; req = $f.req; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
newReq = [newReq];
_1 = err;
/* */ if ($interfaceIsEqual(_1, (http2errClientConnUnusable)) || $interfaceIsEqual(_1, (http2errClientConnGotGoAway))) { $s = 2; continue; }
/* */ if ($interfaceIsEqual(_1, (http2errClientConnGotGoAwayAfterSomeReqBody))) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if ($interfaceIsEqual(_1, (http2errClientConnUnusable)) || $interfaceIsEqual(_1, (http2errClientConnGotGoAway))) { */ case 2:
$s = -1; return [req, $ifaceNil];
/* } else if ($interfaceIsEqual(_1, (http2errClientConnGotGoAwayAfterSomeReqBody))) { */ case 3:
if ($interfaceIsEqual(req.Body, $ifaceNil) || http2reqBodyIsNoBody(req.Body)) {
$s = -1; return [req, $ifaceNil];
}
getBody = http2reqGetBody(req);
if (getBody === $throwNilPointerError) {
$s = -1; return [ptrType$7.nil, errors.New("http2: Transport: peer server initiated graceful shutdown after some of Request.Body was written; define Request.GetBody to avoid this error")];
}
_r = getBody(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
body$1 = _tuple[0];
err$1 = _tuple[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return [ptrType$7.nil, err$1];
}
newReq[0] = $clone(req, Request);
newReq[0].Body = body$1;
$s = -1; return [newReq[0], $ifaceNil];
/* } else { */ case 4:
$s = -1; return [ptrType$7.nil, err];
/* } */ case 5:
case 1:
$s = -1; return [ptrType$7.nil, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2shouldRetryRequest }; } $f.$ptr = $ptr; $f._1 = _1; $f._r = _r; $f._tuple = _tuple; $f.body$1 = body$1; $f.err = err; $f.err$1 = err$1; $f.getBody = getBody; $f.newReq = newReq; $f.req = req; $f.$s = $s; $f.$r = $r; return $f;
};
http2Transport.ptr.prototype.dialClientConn = function(addr, singleUse) {
var $ptr, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, addr, err, host, singleUse, t, tconn, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
t = this;
_r = net.SplitHostPort(addr); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
host = _tuple[0];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$27.nil, err];
}
_arg = addr;
_r$1 = t.newTLSConfig(host); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_arg$1 = _r$1;
_r$2 = t.dialTLS()("tcp", _arg, _arg$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$1 = _r$2;
tconn = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$27.nil, err];
}
_r$3 = t.newClientConn(tconn, singleUse); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
$s = -1; return _r$3;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Transport.ptr.prototype.dialClientConn }; } $f.$ptr = $ptr; $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._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;
};
http2Transport.prototype.dialClientConn = function(addr, singleUse) { return this.$val.dialClientConn(addr, singleUse); };
http2Transport.ptr.prototype.newTLSConfig = function(host) {
var $ptr, _r, cfg, host, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; cfg = $f.cfg; host = $f.host; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
cfg = new tls.Config.ptr($ifaceNil, $throwNilPointerError, sliceType$10.nil, false, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, ptrType$30.nil, sliceType$1.nil, "", 0, ptrType$30.nil, false, sliceType$11.nil, false, false, arrayType$2.zero(), $ifaceNil, 0, 0, sliceType$12.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$13.nil, ptrType$13.nil);
/* */ if (!(t.TLSClientConfig === ptrType$13.nil)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(t.TLSClientConfig === ptrType$13.nil)) { */ case 1:
_r = http2cloneTLSConfig(t.TLSClientConfig); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
tls.Config.copy(cfg, _r);
/* } */ case 2:
if (!http2strSliceContains(cfg.NextProtos, "h2")) {
cfg.NextProtos = $appendSlice(new sliceType$1(["h2"]), cfg.NextProtos);
}
if (cfg.ServerName === "") {
cfg.ServerName = host;
}
$s = -1; return cfg;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Transport.ptr.prototype.newTLSConfig }; } $f.$ptr = $ptr; $f._r = _r; $f.cfg = cfg; $f.host = host; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
http2Transport.prototype.newTLSConfig = function(host) { return this.$val.newTLSConfig(host); };
http2Transport.ptr.prototype.dialTLS = function() {
var $ptr, t;
t = this;
if (!(t.DialTLS === $throwNilPointerError)) {
return t.DialTLS;
}
return $methodVal(t, "dialTLSDefault");
};
http2Transport.prototype.dialTLS = function() { return this.$val.dialTLS(); };
http2Transport.ptr.prototype.dialTLSDefault = function(network, addr, cfg) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _tuple, addr, cfg, cn, err, err$1, err$2, network, p, state, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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:
t = this;
_r = tls.Dial(network, addr, cfg); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
cn = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [$ifaceNil, err];
}
_r$1 = cn.Handshake(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
err$1 = _r$1;
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return [$ifaceNil, err$1];
}
/* */ if (!cfg.InsecureSkipVerify) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!cfg.InsecureSkipVerify) { */ case 3:
_r$2 = cn.VerifyHostname(cfg.ServerName); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
err$2 = _r$2;
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return [$ifaceNil, err$2];
}
/* } */ case 4:
_r$3 = cn.ConnectionState(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
state = $clone(_r$3, tls.ConnectionState);
p = state.NegotiatedProtocol;
/* */ if (!(p === "h2")) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (!(p === "h2")) { */ case 7:
_r$4 = 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$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
$s = -1; return [$ifaceNil, _r$4];
/* } */ case 8:
if (!state.NegotiatedProtocolIsMutual) {
$s = -1; return [$ifaceNil, errors.New("http2: could not negotiate protocol mutually")];
}
$s = -1; return [cn, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Transport.ptr.prototype.dialTLSDefault }; } $f.$ptr = $ptr; $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.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;
};
http2Transport.prototype.dialTLSDefault = function(network, addr, cfg) { return this.$val.dialTLSDefault(network, addr, cfg); };
http2Transport.ptr.prototype.disableKeepAlives = function() {
var $ptr, t;
t = this;
return !(t.t1 === ptrType$21.nil) && t.t1.DisableKeepAlives;
};
http2Transport.prototype.disableKeepAlives = function() { return this.$val.disableKeepAlives(); };
http2Transport.ptr.prototype.expectContinueTimeout = function() {
var $ptr, t;
t = this;
if (t.t1 === ptrType$21.nil) {
return new time.Duration(0, 0);
}
return http2transportExpectContinueTimeout(t.t1);
};
http2Transport.prototype.expectContinueTimeout = function() { return this.$val.expectContinueTimeout(); };
http2Transport.ptr.prototype.NewClientConn = function(c) {
var $ptr, _r, c, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
_r = t.newClientConn(c, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Transport.ptr.prototype.NewClientConn }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
http2Transport.prototype.NewClientConn = function(c) { return this.$val.NewClientConn(c); };
http2Transport.ptr.prototype.newClientConn = function(c, singleUse) {
var $ptr, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, cc, cs, d, initialSettings, max, ok, singleUse, state, t, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
state = [state];
t = this;
cc = new http2ClientConn.ptr(t, c, ptrType$17.nil, singleUse, new $Chan(structType, 0), $ifaceNil, new time.Duration(0, 0), ptrType$53.nil, new sync.Mutex.ptr(0, 0), ptrType$67.nil, new http2flow.ptr(0, ptrType$31.nil), new http2flow.ptr(0, ptrType$31.nil), false, true, ptrType$42.nil, "", {}, 1, {}, ptrType$10.nil, ptrType$68.nil, ptrType$32.nil, new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil), 16384, 1000, 65535, new bytes.Buffer.ptr(sliceType$2.nil, 0, arrayType.zero(), 0), ptrType$54.nil, sliceType$4.nil, new sync.Mutex.ptr(0, 0), $ifaceNil);
d = t.idleConnTimeout();
if (!((d.$high === 0 && d.$low === 0))) {
cc.idleTimeout = d;
cc.idleTimer = time.AfterFunc(d, $methodVal(cc, "onIdleTimeout"));
}
/* */ if (http2VerboseLogs) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (http2VerboseLogs) { */ case 1:
_arg = cc;
_r = c.RemoteAddr(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_arg$1 = _r;
$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; }
/* } */ case 2:
cc.cond = sync.NewCond(cc.mu);
cc.flow.add(65535);
cc.bw = bufio.NewWriter((x$3 = new http2stickyErrWriter.ptr(c, (cc.$ptr_werr || (cc.$ptr_werr = new ptrType$48(function() { return this.$target.werr; }, function($v) { this.$target.werr = $v; }, cc)))), new x$3.constructor.elem(x$3)));
cc.br = bufio.NewReader(c);
cc.fr = http2NewFramer(cc.bw, cc.br);
cc.fr.ReadMetaHeaders = hpack.NewDecoder(4096, $throwNilPointerError);
cc.fr.MaxHeaderListSize = t.maxHeaderListSize();
cc.henc = hpack.NewEncoder(cc.hbuf);
_tuple = $assertType(c, http2connectionStater, true);
cs = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (ok) { */ case 5:
_r$1 = cs.ConnectionState(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
state[0] = $clone(_r$1, tls.ConnectionState);
cc.tlsState = state[0];
/* } */ case 6:
initialSettings = new sliceType$17([new http2Setting.ptr(2, 0), new http2Setting.ptr(4, 4194304)]);
max = t.maxHeaderListSize();
if (!((max === 0))) {
initialSettings = $append(initialSettings, new http2Setting.ptr(6, max));
}
_r$2 = cc.bw.Write(http2clientPreface); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
_r$3 = cc.fr.WriteSettings(initialSettings); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$3;
_r$4 = cc.fr.WriteWindowUpdate(0, 1073741824); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_r$4;
cc.inflow.add(1073807359);
_r$5 = cc.bw.Flush(); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_r$5;
if (!($interfaceIsEqual(cc.werr, $ifaceNil))) {
$s = -1; return [ptrType$27.nil, cc.werr];
}
$go($methodVal(cc, "readLoop"), []);
$s = -1; return [cc, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Transport.ptr.prototype.newClientConn }; } $f.$ptr = $ptr; $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._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$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
};
http2Transport.prototype.newClientConn = function(c, singleUse) { return this.$val.newClientConn(c, singleUse); };
http2ClientConn.ptr.prototype.setGoAway = function(f) {
var $ptr, _entry, _i, _keys, _ref, _selection, cc, cs, f, last, old, streamID, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
cc = this;
$r = cc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(cc.mu, "Unlock"), []]);
old = cc.goAway;
cc.goAway = f;
if (cc.goAwayDebug === "") {
cc.goAwayDebug = ($bytesToString(f.DebugData()));
}
if (!(old === ptrType$42.nil) && !((old.ErrCode === 0))) {
cc.goAway.ErrCode = old.ErrCode;
}
last = f.LastStreamID;
_ref = cc.streams;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
continue;
}
streamID = _entry.k;
cs = _entry.v;
if (streamID > last) {
_selection = $select([[cs.resc, new http2resAndError.ptr(ptrType$16.nil, http2errClientConnGotGoAway)], []]);
if (_selection[0] === 0) {
} else if (_selection[0] === 1) {
}
}
_i++;
}
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.setGoAway }; } $f.$ptr = $ptr; $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; } }
};
http2ClientConn.prototype.setGoAway = function(f) { return this.$val.setGoAway(f); };
http2ClientConn.ptr.prototype.CanTakeNewRequest = function() {
var $ptr, cc, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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);
cc = this;
$r = cc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(cc.mu, "Unlock"), []]);
$s = -1; return cc.canTakeNewRequestLocked();
/* */ } 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.$ptr = $ptr; $f.cc = cc; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
http2ClientConn.prototype.CanTakeNewRequest = function() { return this.$val.CanTakeNewRequest(); };
http2ClientConn.ptr.prototype.canTakeNewRequestLocked = function() {
var $ptr, cc, x$3, x$4;
cc = this;
if (cc.singleUse && cc.nextStreamID > 1) {
return false;
}
return cc.goAway === ptrType$42.nil && !cc.closed && (x$3 = (new $Int64(0, ($keys(cc.streams).length + 1 >> 0))), x$4 = (new $Int64(0, cc.maxConcurrentStreams)), (x$3.$high < x$4.$high || (x$3.$high === x$4.$high && x$3.$low < x$4.$low))) && cc.nextStreamID < 2147483647;
};
http2ClientConn.prototype.canTakeNewRequestLocked = function() { return this.$val.canTakeNewRequestLocked(); };
http2ClientConn.ptr.prototype.onIdleTimeout = function() {
var $ptr, cc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; cc = $f.cc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
cc = this;
$r = cc.closeIfIdle(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.onIdleTimeout }; } $f.$ptr = $ptr; $f.cc = cc; $f.$s = $s; $f.$r = $r; return $f;
};
http2ClientConn.prototype.onIdleTimeout = function() { return this.$val.onIdleTimeout(); };
http2ClientConn.ptr.prototype.closeIfIdle = function() {
var $ptr, _r, cc, nextID, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; cc = $f.cc; nextID = $f.nextID; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
cc = this;
$r = cc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if ($keys(cc.streams).length > 0) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if ($keys(cc.streams).length > 0) { */ case 2:
$r = cc.mu.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } */ case 3:
cc.closed = true;
nextID = cc.nextStreamID;
$r = cc.mu.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (http2VerboseLogs) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (http2VerboseLogs) { */ case 6:
$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; }
/* } */ case 7:
_r = cc.tconn.Close(); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.closeIfIdle }; } $f.$ptr = $ptr; $f._r = _r; $f.cc = cc; $f.nextID = nextID; $f.$s = $s; $f.$r = $r; return $f;
};
http2ClientConn.prototype.closeIfIdle = function() { return this.$val.closeIfIdle(); };
http2ClientConn.ptr.prototype.frameScratchBuffer = function() {
var $ptr, _i, _ref, buf, cc, i, size, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _ref = $f._ref; buf = $f.buf; cc = $f.cc; i = $f.i; size = $f.size; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
cc = this;
$r = cc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
size = cc.maxFrameSize;
if (size > 524288) {
size = 524288;
}
_ref = cc.freeBuf;
_i = 0;
/* while (true) { */ case 2:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
i = _i;
buf = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
/* */ if (buf.$length >= ((size >> 0))) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (buf.$length >= ((size >> 0))) { */ case 4:
(x$3 = cc.freeBuf, ((i < 0 || i >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i] = sliceType$2.nil));
$r = cc.mu.Unlock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return $subslice(buf, 0, size);
/* } */ case 5:
_i++;
/* } */ $s = 2; continue; case 3:
$r = cc.mu.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return $makeSlice(sliceType$2, size);
/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.frameScratchBuffer }; } $f.$ptr = $ptr; $f._i = _i; $f._ref = _ref; $f.buf = buf; $f.cc = cc; $f.i = i; $f.size = size; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
};
http2ClientConn.prototype.frameScratchBuffer = function() { return this.$val.frameScratchBuffer(); };
http2ClientConn.ptr.prototype.putFrameScratchBuffer = function(buf) {
var $ptr, _i, _ref, buf, cc, i, old, x$3, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _ref = $f._ref; buf = $f.buf; cc = $f.cc; i = $f.i; old = $f.old; x$3 = $f.x$3; $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);
cc = this;
$r = cc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(cc.mu, "Unlock"), []]);
if (cc.freeBuf.$length < 4) {
cc.freeBuf = $append(cc.freeBuf, buf);
$s = -1; return;
}
_ref = cc.freeBuf;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
old = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (old === sliceType$2.nil) {
(x$3 = cc.freeBuf, ((i < 0 || i >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i] = buf));
$s = -1; return;
}
_i++;
}
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.putFrameScratchBuffer }; } $f.$ptr = $ptr; $f._i = _i; $f._ref = _ref; $f.buf = buf; $f.cc = cc; $f.i = i; $f.old = old; $f.x$3 = x$3; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
http2ClientConn.prototype.putFrameScratchBuffer = function(buf) { return this.$val.putFrameScratchBuffer(buf); };
http2commaSeparatedTrailers = function(req) {
var $ptr, _1, _entry, _i, _keys, _ref, k, keys, req, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
keys = $makeSlice(sliceType$1, 0, $keys(req.Trailer).length);
_ref = req.Trailer;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
continue;
}
k = _entry.k;
k = CanonicalHeaderKey(k);
_1 = k;
if (_1 === ("Transfer-Encoding") || _1 === ("Trailer") || _1 === ("Content-Length")) {
$s = -1; return ["", new http2badStringError.ptr("invalid Trailer key", k)];
}
keys = $append(keys, k);
_i++;
}
/* */ if (keys.$length > 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (keys.$length > 0) { */ case 1:
$r = sort.Strings(keys); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return [strings.Join(keys, ","), $ifaceNil];
/* } */ case 2:
$s = -1; return ["", $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2commaSeparatedTrailers }; } $f.$ptr = $ptr; $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;
};
http2ClientConn.ptr.prototype.responseHeaderTimeout = function() {
var $ptr, cc;
cc = this;
if (!(cc.t.t1 === ptrType$21.nil)) {
return cc.t.t1.ResponseHeaderTimeout;
}
return new time.Duration(0, 0);
};
http2ClientConn.prototype.responseHeaderTimeout = function() { return this.$val.responseHeaderTimeout(); };
http2checkConnHeaders = function(req) {
var $ptr, _entry, _entry$1, _entry$2, _r, _r$1, _r$2, req, v, vv, vv$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; 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:
v = new Header(req.Header).Get("Upgrade");
/* */ if (!(v === "")) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(v === "")) { */ case 1:
_r = 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 = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 2:
vv = (_entry$1 = req.Header[$String.keyFor("Transfer-Encoding")], _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil);
/* */ 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; }
/* */ $s = 5; continue;
/* 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:
_r$1 = fmt.Errorf("http2: invalid Transfer-Encoding request header: %q", new sliceType([vv])); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* } */ case 5:
vv$1 = (_entry$2 = req.Header[$String.keyFor("Connection")], _entry$2 !== undefined ? _entry$2.v : sliceType$1.nil);
/* */ 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; }
/* */ $s = 8; continue;
/* 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:
_r$2 = fmt.Errorf("http2: invalid Connection request header: %q", new sliceType([vv$1])); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$s = -1; return _r$2;
/* } */ case 8:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2checkConnHeaders }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.req = req; $f.v = v; $f.vv = vv; $f.vv$1 = vv$1; $f.$s = $s; $f.$r = $r; return $f;
};
http2actualContentLength = function(req) {
var $ptr, req, x$3;
if ($interfaceIsEqual(req.Body, $ifaceNil)) {
return new $Int64(0, 0);
}
if (!((x$3 = req.ContentLength, (x$3.$high === 0 && x$3.$low === 0)))) {
return req.ContentLength;
}
return new $Int64(-1, 4294967295);
};
http2ClientConn.ptr.prototype.RoundTrip = function(req) {
var $ptr, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _selection, _selection$1, _tuple, _tuple$1, body$1, bodyWriter, bodyWritten, cc, contentLen, cs, ctx, d, d$1, endStream, err, err$1, err$2, handleReadLoopResponse, hasBody, hasTrailers, hdrs, re, re$1, readLoopResCh, req, requestedGzip, respHeaderTimer, timer, timer$1, trailers, werr, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _selection = $f._selection; _selection$1 = $f._selection$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; 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; 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; 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);
bodyWriter = [bodyWriter];
cc = [cc];
cs = [cs];
req = [req];
cc[0] = this;
_r = http2checkConnHeaders(req[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$16.nil, err];
}
if (!(cc[0].idleTimer === ptrType$53.nil)) {
cc[0].idleTimer.Stop();
}
_r$1 = http2commaSeparatedTrailers(req[0]); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
trailers = _tuple[0];
err$1 = _tuple[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return [ptrType$16.nil, err$1];
}
hasTrailers = !(trailers === "");
$r = cc[0].mu.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
time.Time.copy(cc[0].lastActive, time.Now());
/* */ if (cc[0].closed || !cc[0].canTakeNewRequestLocked()) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (cc[0].closed || !cc[0].canTakeNewRequestLocked()) { */ case 4:
$r = cc[0].mu.Unlock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return [ptrType$16.nil, http2errClientConnUnusable];
/* } */ case 5:
body$1 = req[0].Body;
hasBody = !($interfaceIsEqual(body$1, $ifaceNil));
contentLen = http2actualContentLength(req[0]);
requestedGzip = false;
if (!cc[0].t.disableCompression() && new Header(req[0].Header).Get("Accept-Encoding") === "" && new Header(req[0].Header).Get("Range") === "" && !(req[0].Method === "HEAD")) {
requestedGzip = true;
}
_r$2 = cc[0].encodeHeaders(req[0], requestedGzip, trailers, contentLen); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$1 = _r$2;
hdrs = _tuple$1[0];
err$1 = _tuple$1[1];
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 8:
$r = cc[0].mu.Unlock(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return [ptrType$16.nil, err$1];
/* } */ case 9:
cs[0] = cc[0].newStream();
cs[0].req = req[0];
_r$3 = http2requestTrace(req[0]); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
cs[0].trace = _r$3;
cs[0].requestedGzip = requestedGzip;
bodyWriter[0] = $clone(cc[0].t.getBodyWriterState(cs[0], body$1), http2bodyWriterState);
cs[0].on100 = $methodVal($clone(bodyWriter[0], http2bodyWriterState), "on100");
$r = cc[0].wmu.Lock(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
endStream = !hasBody && !hasTrailers;
_r$4 = cc[0].writeHeaders(cs[0].ID, endStream, hdrs); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
werr = _r$4;
$r = cc[0].wmu.Unlock(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = http2traceWroteHeaders(cs[0].trace); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = cc[0].mu.Unlock(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (!($interfaceIsEqual(werr, $ifaceNil))) { $s = 17; continue; }
/* */ $s = 18; continue;
/* if (!($interfaceIsEqual(werr, $ifaceNil))) { */ case 17:
/* */ if (hasBody) { $s = 19; continue; }
/* */ $s = 20; continue;
/* if (hasBody) { */ case 19:
_r$5 = req[0].Body.Close(); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_r$5;
$clone(bodyWriter[0], http2bodyWriterState).cancel();
/* } */ case 20:
$r = cc[0].forgetStreamID(cs[0].ID); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = http2traceWroteRequest(cs[0].trace, werr); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return [ptrType$16.nil, werr];
/* } */ case 18:
respHeaderTimer = $chanNil;
/* */ if (hasBody) { $s = 24; continue; }
/* */ $s = 25; continue;
/* if (hasBody) { */ case 24:
$r = $clone(bodyWriter[0], http2bodyWriterState).scheduleBodyWrite(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 26; continue;
/* } else { */ case 25:
$r = http2traceWroteRequest(cs[0].trace, $ifaceNil); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
d = cc[0].responseHeaderTimeout();
if (!((d.$high === 0 && d.$low === 0))) {
timer = time.NewTimer(d);
$deferred.push([$methodVal(timer, "Stop"), []]);
respHeaderTimer = timer.C;
}
/* } */ case 26:
readLoopResCh = cs[0].resc;
bodyWritten = false;
ctx = http2reqContext(req[0]);
handleReadLoopResponse = (function(bodyWriter, cc, cs, req) { return function $b(re) {
var $ptr, re, res, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; re = $f.re; res = $f.res; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
res = re.res;
/* */ if (!($interfaceIsEqual(re.err, $ifaceNil)) || res.StatusCode > 299) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!($interfaceIsEqual(re.err, $ifaceNil)) || res.StatusCode > 299) { */ case 1:
$clone(bodyWriter[0], http2bodyWriterState).cancel();
$r = cs[0].abortRequestBodyWrite(http2errStopReqBodyWrite); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
/* */ if (!($interfaceIsEqual(re.err, $ifaceNil))) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!($interfaceIsEqual(re.err, $ifaceNil))) { */ case 4:
/* */ if ($interfaceIsEqual(re.err, http2errClientConnGotGoAway)) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if ($interfaceIsEqual(re.err, http2errClientConnGotGoAway)) { */ case 6:
$r = cc[0].mu.Lock(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (cs[0].startedWrite) {
re.err = http2errClientConnGotGoAwayAfterSomeReqBody;
}
$r = cc[0].mu.Unlock(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 7:
$r = cc[0].forgetStreamID(cs[0].ID); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return [ptrType$16.nil, re.err];
/* } */ case 5:
res.Request = req[0];
res.TLS = cc[0].tlsState;
$s = -1; return [res, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.re = re; $f.res = res; $f.$s = $s; $f.$r = $r; return $f;
}; })(bodyWriter, cc, cs, req);
/* while (true) { */ case 29:
_r$6 = ctx.Done(); /* */ $s = 31; case 31: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_r$7 = $select([[readLoopResCh], [respHeaderTimer], [_r$6], [req[0].Cancel], [cs[0].peerReset], [bodyWriter[0].resc]]); /* */ $s = 32; case 32: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_selection = _r$7;
/* */ if (_selection[0] === 0) { $s = 33; continue; }
/* */ if (_selection[0] === 1) { $s = 34; continue; }
/* */ if (_selection[0] === 2) { $s = 35; continue; }
/* */ if (_selection[0] === 3) { $s = 36; continue; }
/* */ if (_selection[0] === 4) { $s = 37; continue; }
/* */ if (_selection[0] === 5) { $s = 38; continue; }
/* */ $s = 39; continue;
/* if (_selection[0] === 0) { */ case 33:
re = $clone(_selection[1][0], http2resAndError);
_r$8 = handleReadLoopResponse($clone(re, http2resAndError)); /* */ $s = 40; case 40: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
$s = -1; return _r$8;
/* } else if (_selection[0] === 1) { */ case 34:
$r = cc[0].forgetStreamID(cs[0].ID); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (!hasBody || bodyWritten) { $s = 42; continue; }
/* */ $s = 43; continue;
/* if (!hasBody || bodyWritten) { */ case 42:
$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; }
$s = 44; continue;
/* } else { */ case 43:
$clone(bodyWriter[0], http2bodyWriterState).cancel();
$r = cs[0].abortRequestBodyWrite(http2errStopReqBodyWriteAndCancel); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 44:
$s = -1; return [ptrType$16.nil, http2errTimeout];
/* } else if (_selection[0] === 2) { */ case 35:
$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; }
/* */ if (!hasBody || bodyWritten) { $s = 48; continue; }
/* */ $s = 49; continue;
/* if (!hasBody || bodyWritten) { */ case 48:
$r = cc[0].writeStreamReset(cs[0].ID, 8, $ifaceNil); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 50; continue;
/* } else { */ case 49:
$clone(bodyWriter[0], http2bodyWriterState).cancel();
$r = cs[0].abortRequestBodyWrite(http2errStopReqBodyWriteAndCancel); /* */ $s = 52; case 52: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 50:
_r$9 = ctx.Err(); /* */ $s = 53; case 53: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
$s = -1; return [ptrType$16.nil, _r$9];
/* } else if (_selection[0] === 3) { */ case 36:
$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; }
/* */ if (!hasBody || bodyWritten) { $s = 55; continue; }
/* */ $s = 56; continue;
/* if (!hasBody || bodyWritten) { */ case 55:
$r = cc[0].writeStreamReset(cs[0].ID, 8, $ifaceNil); /* */ $s = 58; case 58: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 57; continue;
/* } else { */ case 56:
$clone(bodyWriter[0], http2bodyWriterState).cancel();
$r = cs[0].abortRequestBodyWrite(http2errStopReqBodyWriteAndCancel); /* */ $s = 59; case 59: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 57:
$s = -1; return [ptrType$16.nil, http2errRequestCanceled];
/* } else if (_selection[0] === 4) { */ case 37:
$s = -1; return [ptrType$16.nil, cs[0].resetErr];
/* } else if (_selection[0] === 5) { */ case 38:
err$2 = _selection[1][0];
_selection$1 = $select([[readLoopResCh], []]);
/* */ if (_selection$1[0] === 0) { $s = 60; continue; }
/* */ if (_selection$1[0] === 1) { $s = 61; continue; }
/* */ $s = 62; continue;
/* if (_selection$1[0] === 0) { */ case 60:
re$1 = $clone(_selection$1[1][0], http2resAndError);
_r$10 = handleReadLoopResponse($clone(re$1, http2resAndError)); /* */ $s = 63; case 63: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
$s = -1; return _r$10;
/* } else if (_selection$1[0] === 1) { */ case 61:
/* } */ case 62:
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return [ptrType$16.nil, err$2];
}
bodyWritten = true;
d$1 = cc[0].responseHeaderTimeout();
if (!((d$1.$high === 0 && d$1.$low === 0))) {
timer$1 = time.NewTimer(d$1);
$deferred.push([$methodVal(timer$1, "Stop"), []]);
respHeaderTimer = timer$1.C;
}
/* } */ case 39:
/* } */ $s = 29; continue; case 30:
$s = -1; return [ptrType$16.nil, $ifaceNil];
/* */ } return; } } catch(err) { $err = err; $s = -1; return [ptrType$16.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.RoundTrip }; } $f.$ptr = $ptr; $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._selection = _selection; $f._selection$1 = _selection$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $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.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.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; } }
};
http2ClientConn.prototype.RoundTrip = function(req) { return this.$val.RoundTrip(req); };
http2ClientConn.ptr.prototype.writeHeaders = function(streamID, endStream, hdrs) {
var $ptr, _r, _r$1, _r$2, cc, chunk, endHeaders, endStream, first, frameSize, hdrs, streamID, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; cc = $f.cc; chunk = $f.chunk; endHeaders = $f.endHeaders; endStream = $f.endStream; first = $f.first; frameSize = $f.frameSize; hdrs = $f.hdrs; streamID = $f.streamID; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
cc = this;
first = true;
frameSize = ((cc.maxFrameSize >> 0));
/* while (true) { */ case 1:
/* if (!(hdrs.$length > 0 && $interfaceIsEqual(cc.werr, $ifaceNil))) { break; } */ if(!(hdrs.$length > 0 && $interfaceIsEqual(cc.werr, $ifaceNil))) { $s = 2; continue; }
chunk = hdrs;
if (chunk.$length > frameSize) {
chunk = $subslice(chunk, 0, frameSize);
}
hdrs = $subslice(hdrs, chunk.$length);
endHeaders = hdrs.$length === 0;
/* */ if (first) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (first) { */ case 3:
_r = 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 = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
first = false;
$s = 5; continue;
/* } else { */ case 4:
_r$1 = cc.fr.WriteContinuation(streamID, endHeaders, chunk); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
/* } */ case 5:
/* } */ $s = 1; continue; case 2:
_r$2 = cc.bw.Flush(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
$s = -1; return cc.werr;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.writeHeaders }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.cc = cc; $f.chunk = chunk; $f.endHeaders = endHeaders; $f.endStream = endStream; $f.first = first; $f.frameSize = frameSize; $f.hdrs = hdrs; $f.streamID = streamID; $f.$s = $s; $f.$r = $r; return $f;
};
http2ClientConn.prototype.writeHeaders = function(streamID, endStream, hdrs) { return this.$val.writeHeaders(streamID, endStream, hdrs); };
http2clientStream.ptr.prototype.writeRequestBody = function(body$1, bodyCloser) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, _tuple$1, allowed, body$1, bodyCloser, buf, cc, cs, data, err, err$1, ferr, hasTrailers, n, remain, req, sawEOF, sentEnd, trls, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _tuple$1 = $f._tuple$1; 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; 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);
bodyCloser = [bodyCloser];
cs = [cs];
err = [err];
err[0] = $ifaceNil;
cs[0] = this;
cc = cs[0].cc;
sentEnd = false;
_r = cc.frameScratchBuffer(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
buf = _r;
$deferred.push([$methodVal(cc, "putFrameScratchBuffer"), [buf]]);
$deferred.push([(function(bodyCloser, cs, err) { return function $b() {
var $ptr, _r$1, cerr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$1 = $f._r$1; cerr = $f.cerr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$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; }
_r$1 = bodyCloser[0].Close(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
cerr = _r$1;
if ($interfaceIsEqual(err[0], $ifaceNil)) {
err[0] = cerr;
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r$1 = _r$1; $f.cerr = cerr; $f.$s = $s; $f.$r = $r; return $f;
}; })(bodyCloser, cs, err), []]);
req = cs[0].req;
hasTrailers = !(req.Trailer === false);
sawEOF = false;
/* while (true) { */ case 2:
/* if (!(!sawEOF)) { break; } */ if(!(!sawEOF)) { $s = 3; continue; }
_r$1 = body$1.Read(buf); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
n = _tuple[0];
err$1 = _tuple[1];
if ($interfaceIsEqual(err$1, io.EOF)) {
sawEOF = true;
err$1 = $ifaceNil;
} else if (!($interfaceIsEqual(err$1, $ifaceNil))) {
err[0] = err$1;
$s = -1; return err[0];
}
remain = $subslice(buf, 0, n);
/* while (true) { */ case 5:
/* if (!(remain.$length > 0 && $interfaceIsEqual(err$1, $ifaceNil))) { break; } */ if(!(remain.$length > 0 && $interfaceIsEqual(err$1, $ifaceNil))) { $s = 6; continue; }
allowed = 0;
_r$2 = cs[0].awaitFlowControl(remain.$length); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$1 = _r$2;
allowed = _tuple$1[0];
err$1 = _tuple$1[1];
/* */ if ($interfaceIsEqual(err$1, http2errStopReqBodyWrite)) { $s = 9; continue; }
/* */ if ($interfaceIsEqual(err$1, http2errStopReqBodyWriteAndCancel)) { $s = 10; continue; }
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if ($interfaceIsEqual(err$1, http2errStopReqBodyWrite)) { */ case 9:
err[0] = err$1;
$s = -1; return err[0];
/* } else if ($interfaceIsEqual(err$1, http2errStopReqBodyWriteAndCancel)) { */ case 10:
$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; }
err[0] = err$1;
$s = -1; return err[0];
/* } else if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 11:
err[0] = err$1;
$s = -1; return err[0];
/* } */ case 12:
case 8:
$r = cc.wmu.Lock(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
data = $subslice(remain, 0, allowed);
remain = $subslice(remain, allowed);
sentEnd = sawEOF && (remain.$length === 0) && !hasTrailers;
_r$3 = cc.fr.WriteData(cs[0].ID, sentEnd, data); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
err$1 = _r$3;
/* */ if ($interfaceIsEqual(err$1, $ifaceNil)) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if ($interfaceIsEqual(err$1, $ifaceNil)) { */ case 16:
_r$4 = cc.bw.Flush(); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
err$1 = _r$4;
/* } */ case 17:
$r = cc.wmu.Unlock(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ $s = 5; continue; case 6:
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
err[0] = err$1;
$s = -1; return err[0];
}
/* } */ $s = 2; continue; case 3:
if (sentEnd) {
err[0] = $ifaceNil;
$s = -1; return err[0];
}
trls = sliceType$2.nil;
/* */ if (hasTrailers) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if (hasTrailers) { */ case 20:
$r = cc.mu.Lock(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(cc.mu, "Unlock"), []]);
_r$5 = cc.encodeTrailers(req); /* */ $s = 23; case 23: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
trls = _r$5;
/* } */ case 21:
$r = cc.wmu.Lock(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(cc.wmu, "Unlock"), []]);
/* */ if (trls.$length > 0) { $s = 25; continue; }
/* */ $s = 26; continue;
/* if (trls.$length > 0) { */ case 25:
_r$6 = cc.writeHeaders(cs[0].ID, true, trls); /* */ $s = 28; case 28: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
err[0] = _r$6;
$s = 27; continue;
/* } else { */ case 26:
_r$7 = cc.fr.WriteData(cs[0].ID, true, sliceType$2.nil); /* */ $s = 29; case 29: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
err[0] = _r$7;
/* } */ case 27:
_r$8 = cc.bw.Flush(); /* */ $s = 30; case 30: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
ferr = _r$8;
if (!($interfaceIsEqual(ferr, $ifaceNil)) && $interfaceIsEqual(err[0], $ifaceNil)) {
err[0] = ferr;
}
err[0] = err[0];
$s = -1; return err[0];
/* */ } 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.$ptr = $ptr; $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._tuple$1 = _tuple$1; $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.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; } }
};
http2clientStream.prototype.writeRequestBody = function(body$1, bodyCloser) { return this.$val.writeRequestBody(body$1, bodyCloser); };
http2clientStream.ptr.prototype.awaitFlowControl = function(maxBytes) {
var $ptr, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
taken = 0;
err = $ifaceNil;
cs = this;
cc = cs.cc;
$r = cc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(cc.mu, "Unlock"), []]);
/* while (true) { */ case 2:
if (cc.closed) {
_tmp = 0;
_tmp$1 = http2errClientConnClosed;
taken = _tmp;
err = _tmp$1;
$s = -1; return [taken, err];
}
if (!($interfaceIsEqual(cs.stopReqBody, $ifaceNil))) {
_tmp$2 = 0;
_tmp$3 = cs.stopReqBody;
taken = _tmp$2;
err = _tmp$3;
$s = -1; return [taken, err];
}
err$1 = cs.checkResetOrDone();
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
_tmp$4 = 0;
_tmp$5 = err$1;
taken = _tmp$4;
err = _tmp$5;
$s = -1; return [taken, err];
}
a = cs.flow.available();
if (a > 0) {
take = a;
if (((take >> 0)) > maxBytes) {
take = ((maxBytes >> 0));
}
if (take > ((cc.maxFrameSize >> 0))) {
take = ((cc.maxFrameSize >> 0));
}
cs.flow.take(take);
_tmp$6 = take;
_tmp$7 = $ifaceNil;
taken = _tmp$6;
err = _tmp$7;
$s = -1; return [taken, err];
}
$r = cc.cond.Wait(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ $s = 2; continue; case 3:
$s = -1; return [taken, err];
/* */ } 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.$ptr = $ptr; $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; } }
};
http2clientStream.prototype.awaitFlowControl = function(maxBytes) { return this.$val.awaitFlowControl(maxBytes); };
http2badStringError.ptr.prototype.Error = function() {
var $ptr, _r, e, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
e = this;
_r = fmt.Sprintf("%s %q", new sliceType([new $String(e.what), new $String(e.str)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2badStringError.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
};
http2badStringError.prototype.Error = function() { return this.$val.Error(); };
http2ClientConn.ptr.prototype.encodeHeaders = function(req, addGzipHeader, trailers, contentLength) {
var $ptr, _1, _entry, _entry$1, _i, _i$1, _i$2, _i$3, _keys, _keys$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _ref$2, _ref$3, _tuple, addGzipHeader, cc, contentLength, didUA, err, host, k, k$1, lowKey, orig, path$1, req, trailers, v, v$1, vv, vv$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _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 = $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; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _tuple = $f._tuple; addGzipHeader = $f.addGzipHeader; cc = $f.cc; contentLength = $f.contentLength; didUA = $f.didUA; err = $f.err; host = $f.host; k = $f.k; k$1 = $f.k$1; lowKey = $f.lowKey; orig = $f.orig; path$1 = $f.path$1; req = $f.req; trailers = $f.trailers; v = $f.v; v$1 = $f.v$1; vv = $f.vv; vv$1 = $f.vv$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
cc = this;
cc.hbuf.Reset();
host = req.Host;
if (host === "") {
host = req.URL.Host;
}
_r = httplex.PunycodeHostPort(host); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
host = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [sliceType$2.nil, err];
}
path$1 = "";
/* */ if (!(req.Method === "CONNECT")) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!(req.Method === "CONNECT")) { */ case 2:
path$1 = req.URL.RequestURI();
/* */ if (!http2validPseudoPath(path$1)) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!http2validPseudoPath(path$1)) { */ case 4:
orig = path$1;
path$1 = strings.TrimPrefix(path$1, req.URL.Scheme + "://" + host);
/* */ if (!http2validPseudoPath(path$1)) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!http2validPseudoPath(path$1)) { */ case 6:
/* */ if (!(req.URL.Opaque === "")) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (!(req.URL.Opaque === "")) { */ case 8:
_r$1 = fmt.Errorf("invalid request :path %q from URL.Opaque = %q", new sliceType([new $String(orig), new $String(req.URL.Opaque)])); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return [sliceType$2.nil, _r$1];
/* } else { */ case 9:
_r$2 = fmt.Errorf("invalid request :path %q", new sliceType([new $String(orig)])); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$s = -1; return [sliceType$2.nil, _r$2];
/* } */ case 10:
/* } */ case 7:
/* } */ case 5:
/* } */ case 3:
_ref = req.Header;
_i = 0;
_keys = $keys(_ref);
/* while (true) { */ case 13:
/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 14; continue; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
/* continue; */ $s = 13; continue;
}
k = _entry.k;
vv = _entry.v;
/* */ if (!httplex.ValidHeaderFieldName(k)) { $s = 15; continue; }
/* */ $s = 16; continue;
/* if (!httplex.ValidHeaderFieldName(k)) { */ case 15:
_r$3 = fmt.Errorf("invalid HTTP header name %q", new sliceType([new $String(k)])); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
$s = -1; return [sliceType$2.nil, _r$3];
/* } */ case 16:
_ref$1 = vv;
_i$1 = 0;
/* while (true) { */ case 18:
/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 19; continue; }
v = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
/* */ if (!httplex.ValidHeaderFieldValue(v)) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if (!httplex.ValidHeaderFieldValue(v)) { */ case 20:
_r$4 = 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$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
$s = -1; return [sliceType$2.nil, _r$4];
/* } */ case 21:
_i$1++;
/* } */ $s = 18; continue; case 19:
_i++;
/* } */ $s = 13; continue; case 14:
$r = cc.writeHeader(":authority", host); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = cc.writeHeader(":method", req.Method); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (!(req.Method === "CONNECT")) { $s = 25; continue; }
/* */ $s = 26; continue;
/* if (!(req.Method === "CONNECT")) { */ case 25:
$r = cc.writeHeader(":path", path$1); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = cc.writeHeader(":scheme", req.URL.Scheme); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 26:
/* */ if (!(trailers === "")) { $s = 29; continue; }
/* */ $s = 30; continue;
/* if (!(trailers === "")) { */ case 29:
$r = cc.writeHeader("trailer", trailers); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 30:
didUA = false;
_ref$2 = req.Header;
_i$2 = 0;
_keys$1 = $keys(_ref$2);
/* while (true) { */ case 32:
/* if (!(_i$2 < _keys$1.length)) { break; } */ if(!(_i$2 < _keys$1.length)) { $s = 33; continue; }
_entry$1 = _ref$2[_keys$1[_i$2]];
if (_entry$1 === undefined) {
_i$2++;
/* continue; */ $s = 32; continue;
}
k$1 = _entry$1.k;
vv$1 = _entry$1.v;
_r$5 = strings.ToLower(k$1); /* */ $s = 34; case 34: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
lowKey = _r$5;
_1 = lowKey;
/* */ if (_1 === ("host") || _1 === ("content-length")) { $s = 36; continue; }
/* */ if (_1 === ("connection") || _1 === ("proxy-connection") || _1 === ("transfer-encoding") || _1 === ("upgrade") || _1 === ("keep-alive")) { $s = 37; continue; }
/* */ if (_1 === ("user-agent")) { $s = 38; continue; }
/* */ $s = 39; continue;
/* if (_1 === ("host") || _1 === ("content-length")) { */ case 36:
_i$2++;
/* continue; */ $s = 32; continue;
$s = 39; continue;
/* } else if (_1 === ("connection") || _1 === ("proxy-connection") || _1 === ("transfer-encoding") || _1 === ("upgrade") || _1 === ("keep-alive")) { */ case 37:
_i$2++;
/* continue; */ $s = 32; continue;
$s = 39; continue;
/* } else if (_1 === ("user-agent")) { */ case 38:
didUA = true;
if (vv$1.$length < 1) {
_i$2++;
/* continue; */ $s = 32; continue;
}
vv$1 = $subslice(vv$1, 0, 1);
if ((0 >= vv$1.$length ? ($throwRuntimeError("index out of range"), undefined) : vv$1.$array[vv$1.$offset + 0]) === "") {
_i$2++;
/* continue; */ $s = 32; continue;
}
/* } */ case 39:
case 35:
_ref$3 = vv$1;
_i$3 = 0;
/* while (true) { */ case 40:
/* if (!(_i$3 < _ref$3.$length)) { break; } */ if(!(_i$3 < _ref$3.$length)) { $s = 41; continue; }
v$1 = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]);
$r = cc.writeHeader(lowKey, v$1); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_i$3++;
/* } */ $s = 40; continue; case 41:
_i$2++;
/* } */ $s = 32; continue; case 33:
/* */ if (http2shouldSendReqContentLength(req.Method, contentLength)) { $s = 43; continue; }
/* */ $s = 44; continue;
/* if (http2shouldSendReqContentLength(req.Method, contentLength)) { */ case 43:
$r = cc.writeHeader("content-length", strconv.FormatInt(contentLength, 10)); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 44:
/* */ if (addGzipHeader) { $s = 46; continue; }
/* */ $s = 47; continue;
/* if (addGzipHeader) { */ case 46:
$r = cc.writeHeader("accept-encoding", "gzip"); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 47:
/* */ if (!didUA) { $s = 49; continue; }
/* */ $s = 50; continue;
/* if (!didUA) { */ case 49:
$r = cc.writeHeader("user-agent", "Go-http-client/2.0"); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 50:
$s = -1; return [cc.hbuf.Bytes(), $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.encodeHeaders }; } $f.$ptr = $ptr; $f._1 = _1; $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 = _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._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._tuple = _tuple; $f.addGzipHeader = addGzipHeader; $f.cc = cc; $f.contentLength = contentLength; $f.didUA = didUA; $f.err = err; $f.host = host; $f.k = k; $f.k$1 = k$1; $f.lowKey = lowKey; $f.orig = orig; $f.path$1 = path$1; $f.req = req; $f.trailers = trailers; $f.v = v; $f.v$1 = v$1; $f.vv = vv; $f.vv$1 = vv$1; $f.$s = $s; $f.$r = $r; return $f;
};
http2ClientConn.prototype.encodeHeaders = function(req, addGzipHeader, trailers, contentLength) { return this.$val.encodeHeaders(req, addGzipHeader, trailers, contentLength); };
http2shouldSendReqContentLength = function(method, contentLength) {
var $ptr, _1, contentLength, method;
if ((contentLength.$high > 0 || (contentLength.$high === 0 && contentLength.$low > 0))) {
return true;
}
if ((contentLength.$high < 0 || (contentLength.$high === 0 && contentLength.$low < 0))) {
return false;
}
_1 = method;
if (_1 === ("POST") || _1 === ("PUT") || _1 === ("PATCH")) {
return true;
} else {
return false;
}
};
http2ClientConn.ptr.prototype.encodeTrailers = function(req) {
var $ptr, _entry, _i, _i$1, _keys, _r, _ref, _ref$1, cc, k, lowKey, req, v, vv, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _i = $f._i; _i$1 = $f._i$1; _keys = $f._keys; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; cc = $f.cc; k = $f.k; lowKey = $f.lowKey; req = $f.req; v = $f.v; vv = $f.vv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
cc = this;
cc.hbuf.Reset();
_ref = req.Trailer;
_i = 0;
_keys = $keys(_ref);
/* while (true) { */ case 1:
/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 2; continue; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
/* continue; */ $s = 1; continue;
}
k = _entry.k;
vv = _entry.v;
_r = strings.ToLower(k); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
lowKey = _r;
_ref$1 = vv;
_i$1 = 0;
/* while (true) { */ case 4:
/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 5; continue; }
v = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
$r = cc.writeHeader(lowKey, v); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_i$1++;
/* } */ $s = 4; continue; case 5:
_i++;
/* } */ $s = 1; continue; case 2:
$s = -1; return cc.hbuf.Bytes();
/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.encodeTrailers }; } $f.$ptr = $ptr; $f._entry = _entry; $f._i = _i; $f._i$1 = _i$1; $f._keys = _keys; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f.cc = cc; $f.k = k; $f.lowKey = lowKey; $f.req = req; $f.v = v; $f.vv = vv; $f.$s = $s; $f.$r = $r; return $f;
};
http2ClientConn.prototype.encodeTrailers = function(req) { return this.$val.encodeTrailers(req); };
http2ClientConn.ptr.prototype.writeHeader = function(name, value) {
var $ptr, _r, cc, name, value, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; cc = $f.cc; name = $f.name; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
cc = this;
/* */ if (http2VerboseLogs) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (http2VerboseLogs) { */ case 1:
$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; }
/* } */ case 2:
_r = cc.henc.WriteField(new hpack.HeaderField.ptr(name, value, false)); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.writeHeader }; } $f.$ptr = $ptr; $f._r = _r; $f.cc = cc; $f.name = name; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
};
http2ClientConn.prototype.writeHeader = function(name, value) { return this.$val.writeHeader(name, value); };
http2ClientConn.ptr.prototype.newStream = function() {
var $ptr, _key, cc, cs;
cc = this;
cs = new http2clientStream.ptr(cc, ptrType$7.nil, ptrType$46.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$31.nil), new http2flow.ptr(0, ptrType$31.nil), new $Int64(0, 0), $ifaceNil, $ifaceNil, false, new $Chan(structType, 0), $ifaceNil, new $Chan(structType, 0), false, false, false, false, ptrType$69.nil);
cs.flow.add(((cc.initialWindowSize >> 0)));
cs.flow.setConnFlow(cc.flow);
cs.inflow.add(4194304);
cs.inflow.setConnFlow(cc.inflow);
cc.nextStreamID = cc.nextStreamID + (2) >>> 0;
_key = cs.ID; (cc.streams || $throwRuntimeError("assignment to entry in nil map"))[$Uint32.keyFor(_key)] = { k: _key, v: cs };
return cs;
};
http2ClientConn.prototype.newStream = function() { return this.$val.newStream(); };
http2ClientConn.ptr.prototype.forgetStreamID = function(id) {
var $ptr, _r, cc, id, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; cc = $f.cc; id = $f.id; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
cc = this;
_r = cc.streamByID(id, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.forgetStreamID }; } $f.$ptr = $ptr; $f._r = _r; $f.cc = cc; $f.id = id; $f.$s = $s; $f.$r = $r; return $f;
};
http2ClientConn.prototype.forgetStreamID = function(id) { return this.$val.forgetStreamID(id); };
http2ClientConn.ptr.prototype.streamByID = function(id, andRemove) {
var $ptr, _entry, andRemove, cc, cs, id, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
cc = this;
$r = cc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(cc.mu, "Unlock"), []]);
cs = (_entry = cc.streams[$Uint32.keyFor(id)], _entry !== undefined ? _entry.v : ptrType$70.nil);
/* */ if (andRemove && !(cs === ptrType$70.nil) && !cc.closed) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (andRemove && !(cs === ptrType$70.nil) && !cc.closed) { */ case 2:
time.Time.copy(cc.lastActive, time.Now());
delete cc.streams[$Uint32.keyFor(id)];
if (($keys(cc.streams).length === 0) && !(cc.idleTimer === ptrType$53.nil)) {
cc.idleTimer.Reset(cc.idleTimeout);
}
$close(cs.done);
$r = cc.cond.Broadcast(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 3:
$s = -1; return cs;
/* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$70.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.streamByID }; } $f.$ptr = $ptr; $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; } }
};
http2ClientConn.prototype.streamByID = function(id, andRemove) { return this.$val.streamByID(id, andRemove); };
http2ClientConn.ptr.prototype.readLoop = function() {
var $ptr, _r, _r$1, _tuple, cc, ce, ok, rl, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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);
cc = this;
rl = new http2clientConnReadLoop.ptr(cc, {}, false);
$deferred.push([$methodVal(rl, "cleanup"), []]);
_r = rl.run(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
cc.readerErr = _r;
_tuple = $assertType(cc.readerErr, http2ConnectionError, true);
ce = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (ok) { */ case 2:
$r = cc.wmu.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$1 = cc.fr.WriteGoAway(0, ((ce >>> 0)), sliceType$2.nil); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
$r = cc.wmu.Unlock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 3:
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.readLoop }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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; } }
};
http2ClientConn.prototype.readLoop = function() { return this.$val.readLoop(); };
http2GoAwayError.ptr.prototype.Error = function() {
var $ptr, _r, e, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
e = this;
_r = 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 = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2GoAwayError.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
};
http2GoAwayError.prototype.Error = function() { return this.$val.Error(); };
http2isEOFOrNetReadError = function(err) {
var $ptr, _tuple, err, ne, ok;
if ($interfaceIsEqual(err, io.EOF)) {
return true;
}
_tuple = $assertType(err, ptrType$56, true);
ne = _tuple[0];
ok = _tuple[1];
return ok && ne.Op === "read";
};
http2clientConnReadLoop.ptr.prototype.cleanup = function() {
var $ptr, _arg, _entry, _entry$1, _i, _i$1, _keys, _keys$1, _r, _ref, _ref$1, _selection, cc, cs, cs$1, err, rl, x$3, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _i$1 = $f._i$1; _keys = $f._keys; _keys$1 = $f._keys$1; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; _selection = $f._selection; cc = $f.cc; cs = $f.cs; cs$1 = $f.cs$1; err = $f.err; rl = $f.rl; x$3 = $f.x$3; $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);
rl = this;
cc = rl.cc;
$deferred.push([$methodVal(cc.tconn, "Close"), []]);
_r = cc.t.connPool(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(_r, "MarkDead"), [cc]]);
$deferred.push([function(_arg) { $close(_arg); }, [cc.readerDone]]);
if (!(cc.idleTimer === ptrType$53.nil)) {
cc.idleTimer.Stop();
}
err = cc.readerErr;
$r = cc.mu.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (!(cc.goAway === ptrType$42.nil) && http2isEOFOrNetReadError(err)) {
err = (x$3 = new http2GoAwayError.ptr(cc.goAway.LastStreamID, cc.goAway.ErrCode, cc.goAwayDebug), new x$3.constructor.elem(x$3));
} else if ($interfaceIsEqual(err, io.EOF)) {
err = io.ErrUnexpectedEOF;
}
_ref = rl.activeRes;
_i = 0;
_keys = $keys(_ref);
/* while (true) { */ case 3:
/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 4; continue; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
/* continue; */ $s = 3; continue;
}
cs = _entry.v;
$r = cs.bufPipe.CloseWithError(err); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_i++;
/* } */ $s = 3; continue; case 4:
_ref$1 = cc.streams;
_i$1 = 0;
_keys$1 = $keys(_ref$1);
/* while (true) { */ case 6:
/* if (!(_i$1 < _keys$1.length)) { break; } */ if(!(_i$1 < _keys$1.length)) { $s = 7; continue; }
_entry$1 = _ref$1[_keys$1[_i$1]];
if (_entry$1 === undefined) {
_i$1++;
/* continue; */ $s = 6; continue;
}
cs$1 = _entry$1.v;
_selection = $select([[cs$1.resc, new http2resAndError.ptr(ptrType$16.nil, err)], []]);
if (_selection[0] === 0) {
} else if (_selection[0] === 1) {
}
$close(cs$1.done);
_i$1++;
/* } */ $s = 6; continue; case 7:
cc.closed = true;
$r = cc.cond.Broadcast(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = cc.mu.Unlock(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2clientConnReadLoop.ptr.prototype.cleanup }; } $f.$ptr = $ptr; $f._arg = _arg; $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._i$1 = _i$1; $f._keys = _keys; $f._keys$1 = _keys$1; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f._selection = _selection; $f.cc = cc; $f.cs = cs; $f.cs$1 = cs$1; $f.err = err; $f.rl = rl; $f.x$3 = x$3; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
http2clientConnReadLoop.prototype.cleanup = function() { return this.$val.cleanup(); };
http2clientConnReadLoop.ptr.prototype.run = function() {
var $ptr, _arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$10, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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$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:
rl = this;
cc = rl.cc;
rl.closeWhenIdle = cc.t.disableKeepAlives() || cc.singleUse;
gotReply = false;
gotSettings = false;
/* while (true) { */ case 1:
_r = cc.fr.ReadFrame(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
f = _tuple[0];
err = _tuple[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
$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; }
/* } */ case 5:
_tuple$1 = $assertType(err, http2StreamError, true);
se = $clone(_tuple$1[0], http2StreamError);
ok = _tuple$1[1];
/* */ if (ok) { $s = 7; continue; }
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (ok) { */ case 7:
_r$1 = cc.streamByID(se.StreamID, true); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
cs = _r$1;
/* */ if (!(cs === ptrType$70.nil)) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if (!(cs === ptrType$70.nil)) { */ case 11:
$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; }
if ($interfaceIsEqual(se.Cause, $ifaceNil)) {
se.Cause = cc.fr.errDetail;
}
$r = rl.endStreamError(cs, new se.constructor.elem(se)); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 12:
/* continue; */ $s = 1; continue;
$s = 9; continue;
/* } else if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 8:
$s = -1; return err;
/* } */ case 9:
/* */ if (http2VerboseLogs) { $s = 15; continue; }
/* */ $s = 16; continue;
/* if (http2VerboseLogs) { */ case 15:
_r$2 = http2summarizeFrame(f); /* */ $s = 17; case 17: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_arg = new $String(_r$2);
$r = cc.vlogf("http2: Transport received %s", new sliceType([_arg])); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 16:
/* */ if (!gotSettings) { $s = 19; continue; }
/* */ $s = 20; continue;
/* if (!gotSettings) { */ case 19:
_tuple$2 = $assertType(f, ptrType$38, true);
ok$1 = _tuple$2[1];
/* */ if (!ok$1) { $s = 21; continue; }
/* */ $s = 22; continue;
/* if (!ok$1) { */ case 21:
$r = cc.logf("protocol error: received %T before a SETTINGS frame", new sliceType([f])); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return new http2ConnectionError(1);
/* } */ case 22:
gotSettings = true;
/* } */ case 20:
maybeIdle = false;
_ref = f;
/* */ if ($assertType(_ref, ptrType$36, true)[1]) { $s = 24; continue; }
/* */ if ($assertType(_ref, ptrType$39, true)[1]) { $s = 25; continue; }
/* */ if ($assertType(_ref, ptrType$42, true)[1]) { $s = 26; continue; }
/* */ if ($assertType(_ref, ptrType$43, true)[1]) { $s = 27; continue; }
/* */ if ($assertType(_ref, ptrType$38, true)[1]) { $s = 28; continue; }
/* */ if ($assertType(_ref, ptrType$62, true)[1]) { $s = 29; continue; }
/* */ if ($assertType(_ref, ptrType$40, true)[1]) { $s = 30; continue; }
/* */ if ($assertType(_ref, ptrType$41, true)[1]) { $s = 31; continue; }
/* */ $s = 32; continue;
/* if ($assertType(_ref, ptrType$36, true)[1]) { */ case 24:
f$1 = _ref.$val;
_r$3 = rl.processHeaders(f$1); /* */ $s = 34; case 34: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
err = _r$3;
maybeIdle = true;
gotReply = true;
$s = 33; continue;
/* } else if ($assertType(_ref, ptrType$39, true)[1]) { */ case 25:
f$2 = _ref.$val;
_r$4 = rl.processData(f$2); /* */ $s = 35; case 35: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
err = _r$4;
maybeIdle = true;
$s = 33; continue;
/* } else if ($assertType(_ref, ptrType$42, true)[1]) { */ case 26:
f$3 = _ref.$val;
_r$5 = rl.processGoAway(f$3); /* */ $s = 36; case 36: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
err = _r$5;
maybeIdle = true;
$s = 33; continue;
/* } else if ($assertType(_ref, ptrType$43, true)[1]) { */ case 27:
f$4 = _ref.$val;
_r$6 = rl.processResetStream(f$4); /* */ $s = 37; case 37: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
err = _r$6;
maybeIdle = true;
$s = 33; continue;
/* } else if ($assertType(_ref, ptrType$38, true)[1]) { */ case 28:
f$5 = _ref.$val;
_r$7 = rl.processSettings(f$5); /* */ $s = 38; case 38: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
err = _r$7;
$s = 33; continue;
/* } else if ($assertType(_ref, ptrType$62, true)[1]) { */ case 29:
f$6 = _ref.$val;
err = rl.processPushPromise(f$6);
$s = 33; continue;
/* } else if ($assertType(_ref, ptrType$40, true)[1]) { */ case 30:
f$7 = _ref.$val;
_r$8 = rl.processWindowUpdate(f$7); /* */ $s = 39; case 39: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
err = _r$8;
$s = 33; continue;
/* } else if ($assertType(_ref, ptrType$41, true)[1]) { */ case 31:
f$8 = _ref.$val;
_r$9 = rl.processPing(f$8); /* */ $s = 40; case 40: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
err = _r$9;
$s = 33; continue;
/* } else { */ case 32:
f$9 = _ref;
$r = cc.logf("Transport: unhandled response frame type %T", new sliceType([f$9])); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 33:
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 42; continue; }
/* */ $s = 43; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 42:
/* */ if (http2VerboseLogs) { $s = 44; continue; }
/* */ $s = 45; continue;
/* if (http2VerboseLogs) { */ case 44:
_arg$1 = cc;
_r$10 = http2summarizeFrame(f); /* */ $s = 46; case 46: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
_arg$2 = new $String(_r$10);
_arg$3 = err;
$r = cc.vlogf("http2: Transport conn %p received error from processing frame %v: %v", new sliceType([_arg$1, _arg$2, _arg$3])); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 45:
$s = -1; return err;
/* } */ case 43:
/* */ if (rl.closeWhenIdle && gotReply && maybeIdle && ($keys(rl.activeRes).length === 0)) { $s = 48; continue; }
/* */ $s = 49; continue;
/* if (rl.closeWhenIdle && gotReply && maybeIdle && ($keys(rl.activeRes).length === 0)) { */ case 48:
$r = cc.closeIfIdle(); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 49:
/* } */ $s = 1; continue; case 2:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientConnReadLoop.ptr.prototype.run }; } $f.$ptr = $ptr; $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$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;
};
http2clientConnReadLoop.prototype.run = function() { return this.$val.run(); };
http2clientConnReadLoop.ptr.prototype.processHeaders = function(f) {
var $ptr, _key, _r, _r$1, _r$2, _tuple, _tuple$1, cc, cs, err, f, ok, res, rl, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _key = $f._key; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _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; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
rl = this;
cc = rl.cc;
_r = cc.streamByID(f.http2HeadersFrame.http2FrameHeader.StreamID, f.http2HeadersFrame.StreamEnded()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
cs = _r;
if (cs === ptrType$70.nil) {
$s = -1; return $ifaceNil;
}
/* */ if (!cs.firstByte) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!cs.firstByte) { */ case 2:
/* */ if (!(cs.trace === ptrType$46.nil)) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!(cs.trace === ptrType$46.nil)) { */ case 4:
$r = http2traceFirstResponseByte(cs.trace); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 5:
cs.firstByte = true;
/* } */ case 3:
/* */ if (!cs.pastHeaders) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (!cs.pastHeaders) { */ case 7:
cs.pastHeaders = true;
$s = 9; continue;
/* } else { */ case 8:
_r$1 = rl.processTrailers(cs, f); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* } */ case 9:
_r$2 = rl.handleResponse(cs, f); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple = _r$2;
res = _tuple[0];
err = _tuple[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 12:
_tuple$1 = $assertType(err, http2ConnectionError, true);
ok = _tuple$1[1];
if (ok) {
$s = -1; return err;
}
$r = cs.cc.writeStreamReset(f.http2HeadersFrame.http2FrameHeader.StreamID, 1, err); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = $send(cs.resc, $clone(new http2resAndError.ptr(ptrType$16.nil, err), http2resAndError)); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return $ifaceNil;
/* } */ case 13:
if (res === ptrType$16.nil) {
$s = -1; return $ifaceNil;
}
if (!($interfaceIsEqual(res.Body, http2noBody))) {
_key = cs.ID; (rl.activeRes || $throwRuntimeError("assignment to entry in nil map"))[$Uint32.keyFor(_key)] = { k: _key, v: cs };
}
cs.resTrailer = (res.$ptr_Trailer || (res.$ptr_Trailer = new ptrType$69(function() { return this.$target.Trailer; }, function($v) { this.$target.Trailer = $v; }, res)));
$r = $send(cs.resc, $clone(new http2resAndError.ptr(res, $ifaceNil), http2resAndError)); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientConnReadLoop.ptr.prototype.processHeaders }; } $f.$ptr = $ptr; $f._key = _key; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $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.$r = $r; return $f;
};
http2clientConnReadLoop.prototype.processHeaders = function(f) { return this.$val.processHeaders(f); };
http2clientConnReadLoop.ptr.prototype.handleResponse = function(cs, f) {
var $ptr, _entry, _entry$1, _i, _key, _ref, _tuple, _tuple$1, buf, clen64, clens, cs, err, err$1, f, header, hf, isHead, key, res, rl, status, statusCode, streamEnded, t, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; buf = $f.buf; 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$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
rl = this;
if (f.Truncated) {
$s = -1; return [ptrType$16.nil, http2errResponseHeaderListSize];
}
status = f.PseudoValue("status");
if (status === "") {
$s = -1; return [ptrType$16.nil, errors.New("missing status pseudo header")];
}
_tuple = strconv.Atoi(status);
statusCode = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$16.nil, errors.New("malformed non-numeric status pseudo header")];
}
/* */ if (statusCode === 100) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (statusCode === 100) { */ case 1:
$r = http2traceGot100Continue(cs.trace); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (!(cs.on100 === $throwNilPointerError)) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!(cs.on100 === $throwNilPointerError)) { */ case 4:
$r = cs.on100(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 5:
cs.pastHeaders = false;
$s = -1; return [ptrType$16.nil, $ifaceNil];
/* } */ case 2:
header = {};
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$17.nil);
_ref = f.RegularFields();
_i = 0;
/* while (true) { */ case 7:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 8; continue; }
t = [t];
hf = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), hpack.HeaderField);
key = CanonicalHeaderKey(hf.Name);
/* */ if (key === "Trailer") { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (key === "Trailer") { */ case 9:
t[0] = res.Trailer;
if (t[0] === false) {
t[0] = {};
res.Trailer = t[0];
}
$r = http2foreachHeaderElement(hf.Value, (function(t) { return function(v) {
var $ptr, _key, v;
_key = CanonicalHeaderKey(v); (t[0] || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: sliceType$1.nil };
}; })(t)); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 11; continue;
/* } else { */ case 10:
_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) };
/* } */ case 11:
_i++;
/* } */ $s = 7; continue; case 8:
streamEnded = f.http2HeadersFrame.StreamEnded();
isHead = cs.req.Method === "HEAD";
if (!streamEnded || isHead) {
res.ContentLength = new $Int64(-1, 4294967295);
clens = (_entry$1 = res.Header[$String.keyFor("Content-Length")], _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil);
if (clens.$length === 1) {
_tuple$1 = strconv.ParseInt((0 >= clens.$length ? ($throwRuntimeError("index out of range"), undefined) : clens.$array[clens.$offset + 0]), 10, 64);
clen64 = _tuple$1[0];
err$1 = _tuple$1[1];
if ($interfaceIsEqual(err$1, $ifaceNil)) {
res.ContentLength = clen64;
} else {
}
} else if (clens.$length > 1) {
}
}
if (streamEnded || isHead) {
res.Body = http2noBody;
$s = -1; return [res, $ifaceNil];
}
buf = new bytes.Buffer.ptr(sliceType$2.nil, 0, arrayType.zero(), 0);
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), buf, $ifaceNil, $ifaceNil, $chanNil, $throwNilPointerError));
cs.bytesRemain = res.ContentLength;
res.Body = (x$3 = new http2transportResponseBody.ptr(cs), new x$3.constructor.elem(x$3));
$go($methodVal(cs, "awaitRequestCancel"), [cs.req]);
if (cs.requestedGzip && new Header(res.Header).Get("Content-Encoding") === "gzip") {
new Header(res.Header).Del("Content-Encoding");
new Header(res.Header).Del("Content-Length");
res.ContentLength = new $Int64(-1, 4294967295);
res.Body = new http2gzipReader.ptr(res.Body, ptrType$71.nil, $ifaceNil);
http2setResponseUncompressed(res);
}
$s = -1; return [res, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientConnReadLoop.ptr.prototype.handleResponse }; } $f.$ptr = $ptr; $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.buf = buf; $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$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
};
http2clientConnReadLoop.prototype.handleResponse = function(cs, f) { return this.$val.handleResponse(cs, f); };
http2clientConnReadLoop.ptr.prototype.processTrailers = function(cs, f) {
var $ptr, _entry, _i, _key, _ref, cs, f, hf, key, rl, trailer, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
rl = this;
if (cs.pastTrailers) {
$s = -1; return new http2ConnectionError(1);
}
cs.pastTrailers = true;
if (!f.http2HeadersFrame.StreamEnded()) {
$s = -1; return new http2ConnectionError(1);
}
if (f.PseudoFields().$length > 0) {
$s = -1; return new http2ConnectionError(1);
}
trailer = {};
_ref = f.RegularFields();
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
hf = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), hpack.HeaderField);
key = CanonicalHeaderKey(hf.Name);
_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) };
_i++;
}
cs.trailer = trailer;
$r = rl.endStream(cs); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientConnReadLoop.ptr.prototype.processTrailers }; } $f.$ptr = $ptr; $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;
};
http2clientConnReadLoop.prototype.processTrailers = function(cs, f) { return this.$val.processTrailers(cs, f); };
http2transportResponseBody.ptr.prototype.Read = function(p) {
var $ptr, _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, b, cc, connAdd, cs, err, n, p, streamAdd, v, v$1, x$10, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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$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; $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);
n = 0;
err = $ifaceNil;
b = this;
cs = b.cs;
cc = cs.cc;
if (!($interfaceIsEqual(cs.readErr, $ifaceNil))) {
_tmp = 0;
_tmp$1 = cs.readErr;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
_r = b.cs.bufPipe.Read(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
/* */ if (!((x$3 = cs.bytesRemain, (x$3.$high === -1 && x$3.$low === 4294967295)))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!((x$3 = cs.bytesRemain, (x$3.$high === -1 && x$3.$low === 4294967295)))) { */ case 2:
/* */ if ((x$4 = (new $Int64(0, n)), x$5 = cs.bytesRemain, (x$4.$high > x$5.$high || (x$4.$high === x$5.$high && x$4.$low > x$5.$low)))) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if ((x$4 = (new $Int64(0, n)), x$5 = cs.bytesRemain, (x$4.$high > x$5.$high || (x$4.$high === x$5.$high && x$4.$low > x$5.$low)))) { */ case 4:
n = (((x$6 = cs.bytesRemain, x$6.$low + ((x$6.$high >> 31) * 4294967296)) >> 0));
/* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 6:
err = errors.New("net/http: server replied with more than declared Content-Length; truncated");
$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; }
/* } */ case 7:
cs.readErr = err;
_tmp$2 = (((x$7 = cs.bytesRemain, x$7.$low + ((x$7.$high >> 31) * 4294967296)) >> 0));
_tmp$3 = err;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
/* } */ case 5:
cs.bytesRemain = (x$8 = cs.bytesRemain, x$9 = (new $Int64(0, n)), new $Int64(x$8.$high - x$9.$high, x$8.$low - x$9.$low));
if ($interfaceIsEqual(err, io.EOF) && (x$10 = cs.bytesRemain, (x$10.$high > 0 || (x$10.$high === 0 && x$10.$low > 0)))) {
err = io.ErrUnexpectedEOF;
cs.readErr = err;
_tmp$4 = n;
_tmp$5 = err;
n = _tmp$4;
err = _tmp$5;
$s = -1; return [n, err];
}
/* } */ case 3:
if (n === 0) {
$s = -1; return [n, err];
}
$r = cc.mu.Lock(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(cc.mu, "Unlock"), []]);
_tmp$6 = 0;
_tmp$7 = 0;
connAdd = _tmp$6;
streamAdd = _tmp$7;
v = cc.inflow.available();
if (v < 536870912) {
connAdd = 1073741824 - v >> 0;
cc.inflow.add(connAdd);
}
/* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 10:
_r$1 = cs.bufPipe.Len(); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
v$1 = ((cs.inflow.available() >> 0)) + _r$1 >> 0;
if (v$1 < 4190208) {
streamAdd = (((4194304 - v$1 >> 0) >> 0));
cs.inflow.add(streamAdd);
}
/* } */ case 11:
/* */ if (!((connAdd === 0)) || !((streamAdd === 0))) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (!((connAdd === 0)) || !((streamAdd === 0))) { */ case 13:
$r = cc.wmu.Lock(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(cc.wmu, "Unlock"), []]);
/* */ if (!((connAdd === 0))) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (!((connAdd === 0))) { */ case 16:
_r$2 = cc.fr.WriteWindowUpdate(0, http2mustUint31(connAdd)); /* */ $s = 18; case 18: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
/* } */ case 17:
/* */ if (!((streamAdd === 0))) { $s = 19; continue; }
/* */ $s = 20; continue;
/* if (!((streamAdd === 0))) { */ case 19:
_r$3 = cc.fr.WriteWindowUpdate(cs.ID, http2mustUint31(streamAdd)); /* */ $s = 21; case 21: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$3;
/* } */ case 20:
_r$4 = cc.bw.Flush(); /* */ $s = 22; case 22: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_r$4;
/* } */ case 14:
$s = -1; return [n, err];
/* */ } 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.$ptr = $ptr; $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.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$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.$deferred = $deferred; $f.$r = $r; return $f; } }
};
http2transportResponseBody.prototype.Read = function(p) { return this.$val.Read(p); };
http2transportResponseBody.ptr.prototype.Close = function() {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, b, cc, cs, serverSentStreamEnd, unread, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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:
b = this;
cs = b.cs;
cc = cs.cc;
_r = cs.bufPipe.Err(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
serverSentStreamEnd = $interfaceIsEqual(_r, io.EOF);
_r$1 = cs.bufPipe.Len(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
unread = _r$1;
/* */ if (unread > 0 || !serverSentStreamEnd) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (unread > 0 || !serverSentStreamEnd) { */ case 3:
$r = cc.mu.Lock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = cc.wmu.Lock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (!serverSentStreamEnd) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (!serverSentStreamEnd) { */ case 7:
_r$2 = cc.fr.WriteRSTStream(cs.ID, 8); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
/* } */ case 8:
/* */ if (unread > 0) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (unread > 0) { */ case 10:
cc.inflow.add(((unread >> 0)));
_r$3 = cc.fr.WriteWindowUpdate(0, ((unread >>> 0))); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$3;
/* } */ case 11:
_r$4 = cc.bw.Flush(); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_r$4;
$r = cc.wmu.Unlock(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = cc.mu.Unlock(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 4:
$r = cs.bufPipe.BreakWithError(http2errClosedResponseBody); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2transportResponseBody.ptr.prototype.Close }; } $f.$ptr = $ptr; $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.cc = cc; $f.cs = cs; $f.serverSentStreamEnd = serverSentStreamEnd; $f.unread = unread; $f.$s = $s; $f.$r = $r; return $f;
};
http2transportResponseBody.prototype.Close = function() { return this.$val.Close(); };
http2clientConnReadLoop.ptr.prototype.processData = function(f) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, cc, cs, data, didReset, err, f, neverSent, pad, rl, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; cc = $f.cc; cs = $f.cs; data = $f.data; didReset = $f.didReset; err = $f.err; f = $f.f; neverSent = $f.neverSent; pad = $f.pad; rl = $f.rl; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
rl = this;
cc = rl.cc;
_r = cc.streamByID(f.http2FrameHeader.StreamID, f.StreamEnded()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
cs = _r;
data = f.Data();
/* */ if (cs === ptrType$70.nil) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (cs === ptrType$70.nil) { */ case 2:
$r = cc.mu.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
neverSent = cc.nextStreamID;
$r = cc.mu.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (f.http2FrameHeader.StreamID >= neverSent) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (f.http2FrameHeader.StreamID >= neverSent) { */ case 6:
$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; }
$s = -1; return new http2ConnectionError(1);
/* } */ case 7:
/* */ if (f.http2FrameHeader.Length > 0) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (f.http2FrameHeader.Length > 0) { */ case 9:
$r = cc.mu.Lock(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
cc.inflow.add(((f.http2FrameHeader.Length >> 0)));
$r = cc.mu.Unlock(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = cc.wmu.Lock(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$1 = cc.fr.WriteWindowUpdate(0, (f.http2FrameHeader.Length)); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
_r$2 = cc.bw.Flush(); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
$r = cc.wmu.Unlock(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 10:
$s = -1; return $ifaceNil;
/* } */ case 3:
/* */ if (f.http2FrameHeader.Length > 0) { $s = 17; continue; }
/* */ $s = 18; continue;
/* if (f.http2FrameHeader.Length > 0) { */ case 17:
/* */ if (data.$length > 0 && $interfaceIsEqual(cs.bufPipe.b, $ifaceNil)) { $s = 19; continue; }
/* */ $s = 20; continue;
/* if (data.$length > 0 && $interfaceIsEqual(cs.bufPipe.b, $ifaceNil)) { */ case 19:
$r = cc.logf("http2: Transport received DATA frame for closed stream; closing connection", new sliceType([])); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return new http2ConnectionError(1);
/* } */ case 20:
$r = cc.mu.Lock(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (cs.inflow.available() >= ((f.http2FrameHeader.Length >> 0))) { $s = 23; continue; }
/* */ $s = 24; continue;
/* if (cs.inflow.available() >= ((f.http2FrameHeader.Length >> 0))) { */ case 23:
cs.inflow.take(((f.http2FrameHeader.Length >> 0)));
$s = 25; continue;
/* } else { */ case 24:
$r = cc.mu.Unlock(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return new http2ConnectionError(3);
/* } */ case 25:
pad = ((f.http2FrameHeader.Length >> 0)) - ((data.$length >> 0)) >> 0;
/* */ if (pad > 0) { $s = 27; continue; }
/* */ $s = 28; continue;
/* if (pad > 0) { */ case 27:
cs.inflow.add(pad);
cc.inflow.add(pad);
$r = cc.wmu.Lock(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$3 = cc.fr.WriteWindowUpdate(0, ((pad >>> 0))); /* */ $s = 30; case 30: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$3;
_r$4 = cc.fr.WriteWindowUpdate(cs.ID, ((pad >>> 0))); /* */ $s = 31; case 31: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_r$4;
_r$5 = cc.bw.Flush(); /* */ $s = 32; case 32: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_r$5;
$r = cc.wmu.Unlock(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 28:
didReset = cs.didReset;
$r = cc.mu.Unlock(); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (data.$length > 0 && !didReset) { $s = 35; continue; }
/* */ $s = 36; continue;
/* if (data.$length > 0 && !didReset) { */ case 35:
_r$6 = cs.bufPipe.Write(data); /* */ $s = 37; case 37: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_tuple = _r$6;
err = _tuple[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 38; continue; }
/* */ $s = 39; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 38:
$r = rl.endStreamError(cs, err); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return err;
/* } */ case 39:
/* } */ case 36:
/* } */ case 18:
/* */ if (f.StreamEnded()) { $s = 41; continue; }
/* */ $s = 42; continue;
/* if (f.StreamEnded()) { */ case 41:
$r = rl.endStream(cs); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 42:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientConnReadLoop.ptr.prototype.processData }; } $f.$ptr = $ptr; $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.cc = cc; $f.cs = cs; $f.data = data; $f.didReset = didReset; $f.err = err; $f.f = f; $f.neverSent = neverSent; $f.pad = pad; $f.rl = rl; $f.$s = $s; $f.$r = $r; return $f;
};
http2clientConnReadLoop.prototype.processData = function(f) { return this.$val.processData(f); };
http2clientConnReadLoop.ptr.prototype.endStream = function(cs) {
var $ptr, cs, rl, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; cs = $f.cs; rl = $f.rl; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
rl = this;
$r = rl.endStreamError(cs, $ifaceNil); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientConnReadLoop.ptr.prototype.endStream }; } $f.$ptr = $ptr; $f.cs = cs; $f.rl = rl; $f.$s = $s; $f.$r = $r; return $f;
};
http2clientConnReadLoop.prototype.endStream = function(cs) { return this.$val.endStream(cs); };
http2clientConnReadLoop.ptr.prototype.endStreamError = function(cs, err) {
var $ptr, _selection, code, cs, err, rl, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
rl = this;
code = $throwNilPointerError;
if ($interfaceIsEqual(err, $ifaceNil)) {
err = io.EOF;
code = $methodVal(cs, "copyTrailers");
}
$r = cs.bufPipe.closeWithErrorAndCode(err, code); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
delete rl.activeRes[$Uint32.keyFor(cs.ID)];
if (http2isConnectionCloseRequest(cs.req)) {
rl.closeWhenIdle = true;
}
_selection = $select([[cs.resc, new http2resAndError.ptr(ptrType$16.nil, err)], []]);
if (_selection[0] === 0) {
} else if (_selection[0] === 1) {
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientConnReadLoop.ptr.prototype.endStreamError }; } $f.$ptr = $ptr; $f._selection = _selection; $f.code = code; $f.cs = cs; $f.err = err; $f.rl = rl; $f.$s = $s; $f.$r = $r; return $f;
};
http2clientConnReadLoop.prototype.endStreamError = function(cs, err) { return this.$val.endStreamError(cs, err); };
http2clientStream.ptr.prototype.copyTrailers = function() {
var $ptr, _entry, _i, _key, _keys, _ref, cs, k, t, vv;
cs = this;
_ref = cs.trailer;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
continue;
}
k = _entry.k;
vv = _entry.v;
t = cs.resTrailer;
if (t.$get() === false) {
t.$set({});
}
_key = k; (t.$get() || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: vv };
_i++;
}
};
http2clientStream.prototype.copyTrailers = function() { return this.$val.copyTrailers(); };
http2clientConnReadLoop.ptr.prototype.processGoAway = function(f) {
var $ptr, _r, cc, f, rl, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; cc = $f.cc; f = $f.f; rl = $f.rl; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
rl = this;
cc = rl.cc;
_r = cc.t.connPool(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$r = _r.MarkDead(cc); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (!((f.ErrCode === 0))) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!((f.ErrCode === 0))) { */ case 3:
$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; }
/* } */ case 4:
$r = cc.setGoAway(f); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientConnReadLoop.ptr.prototype.processGoAway }; } $f.$ptr = $ptr; $f._r = _r; $f.cc = cc; $f.f = f; $f.rl = rl; $f.$s = $s; $f.$r = $r; return $f;
};
http2clientConnReadLoop.prototype.processGoAway = function(f) { return this.$val.processGoAway(f); };
http2clientConnReadLoop.ptr.prototype.processSettings = function(f) {
var $ptr, _r, _r$1, _r$2, cc, err, f, rl, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; 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);
cc = [cc];
rl = this;
cc[0] = rl.cc;
$r = cc[0].mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(cc[0].mu, "Unlock"), []]);
if (f.IsAck()) {
if (cc[0].wantSettingsAck) {
cc[0].wantSettingsAck = false;
$s = -1; return $ifaceNil;
}
$s = -1; return new http2ConnectionError(1);
}
_r = f.ForeachSetting((function(cc) { return function $b(s) {
var $ptr, _1, _entry, _i, _keys, _ref, cs, delta, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_1 = s.ID;
/* */ if (_1 === (5)) { $s = 2; continue; }
/* */ if (_1 === (3)) { $s = 3; continue; }
/* */ if (_1 === (4)) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (_1 === (5)) { */ case 2:
cc[0].maxFrameSize = s.Val;
$s = 6; continue;
/* } else if (_1 === (3)) { */ case 3:
cc[0].maxConcurrentStreams = s.Val;
$s = 6; continue;
/* } else if (_1 === (4)) { */ case 4:
if (s.Val > 2147483647) {
$s = -1; return new http2ConnectionError(3);
}
delta = ((s.Val >> 0)) - ((cc[0].initialWindowSize >> 0)) >> 0;
_ref = cc[0].streams;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
continue;
}
cs = _entry.v;
cs.flow.add(delta);
_i++;
}
$r = cc[0].cond.Broadcast(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
cc[0].initialWindowSize = s.Val;
$s = 6; continue;
/* } else { */ case 5:
$r = cc[0].vlogf("Unhandled Setting: %v", new sliceType([new s.constructor.elem(s)])); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 6:
case 1:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $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;
}; })(cc)); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
$r = cc[0].wmu.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(cc[0].wmu, "Unlock"), []]);
_r$1 = cc[0].fr.WriteSettingsAck(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
_r$2 = cc[0].bw.Flush(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
$s = -1; return cc[0].werr;
/* */ } 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.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.cc = cc; $f.err = err; $f.f = f; $f.rl = rl; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
http2clientConnReadLoop.prototype.processSettings = function(f) { return this.$val.processSettings(f); };
http2clientConnReadLoop.ptr.prototype.processWindowUpdate = function(f) {
var $ptr, _r, cc, cs, f, fl, rl, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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);
rl = this;
cc = rl.cc;
_r = cc.streamByID(f.http2FrameHeader.StreamID, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
cs = _r;
if (!((f.http2FrameHeader.StreamID === 0)) && cs === ptrType$70.nil) {
$s = -1; return $ifaceNil;
}
$r = cc.mu.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(cc.mu, "Unlock"), []]);
fl = cc.flow;
if (!(cs === ptrType$70.nil)) {
fl = cs.flow;
}
if (!fl.add(((f.Increment >> 0)))) {
$s = -1; return new http2ConnectionError(3);
}
$r = cc.cond.Broadcast(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return $ifaceNil;
/* */ } 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.$ptr = $ptr; $f._r = _r; $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; } }
};
http2clientConnReadLoop.prototype.processWindowUpdate = function(f) { return this.$val.processWindowUpdate(f); };
http2clientConnReadLoop.ptr.prototype.processResetStream = function(f) {
var $ptr, _r, _selection, cs, err, f, rl, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
rl = this;
_r = rl.cc.streamByID(f.http2FrameHeader.StreamID, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
cs = _r;
if (cs === ptrType$70.nil) {
$s = -1; return $ifaceNil;
}
_selection = $select([[cs.peerReset], []]);
/* */ if (_selection[0] === 0) { $s = 2; continue; }
/* */ if (_selection[0] === 1) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (_selection[0] === 0) { */ case 2:
$s = 4; continue;
/* } else if (_selection[0] === 1) { */ case 3:
err = $clone(http2streamError(cs.ID, f.ErrCode), http2StreamError);
cs.resetErr = new err.constructor.elem(err);
$close(cs.peerReset);
$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; }
$r = cs.cc.cond.Broadcast(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 4:
delete rl.activeRes[$Uint32.keyFor(cs.ID)];
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientConnReadLoop.ptr.prototype.processResetStream }; } $f.$ptr = $ptr; $f._r = _r; $f._selection = _selection; $f.cs = cs; $f.err = err; $f.f = f; $f.rl = rl; $f.$s = $s; $f.$r = $r; return $f;
};
http2clientConnReadLoop.prototype.processResetStream = function(f) { return this.$val.processResetStream(f); };
http2ClientConn.ptr.prototype.ping = function(ctx) {
var $ptr, _entry, _key, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _selection, _tuple, _tuple$1, c, cc, ctx, err, err$1, err$2, found, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _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; _r$5 = $f._r$5; _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:
cc = this;
c = new $Chan(structType, 0);
p = arrayType$4.zero();
/* while (true) { */ case 1:
_r = rand.Read(new sliceType$2(p)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
$r = cc.mu.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_tuple$1 = (_entry = cc.pings[arrayType$4.keyFor(p)], _entry !== undefined ? [_entry.v, true] : [$chanNil, false]);
found = _tuple$1[1];
/* */ if (!found) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (!found) { */ case 5:
_key = $clone(p, arrayType$4); (cc.pings || $throwRuntimeError("assignment to entry in nil map"))[arrayType$4.keyFor(_key)] = { k: _key, v: c };
$r = cc.mu.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* break; */ $s = 2; continue;
/* } */ case 6:
$r = cc.mu.Unlock(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ $s = 1; continue; case 2:
$r = cc.wmu.Lock(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$1 = cc.fr.WritePing(false, $clone(p, arrayType$4)); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
err$1 = _r$1;
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 11:
$r = cc.wmu.Unlock(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return err$1;
/* } */ case 12:
_r$2 = cc.bw.Flush(); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
err$2 = _r$2;
/* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 15; continue; }
/* */ $s = 16; continue;
/* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 15:
$r = cc.wmu.Unlock(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return err$2;
/* } */ case 16:
$r = cc.wmu.Unlock(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$3 = ctx.Done(); /* */ $s = 19; case 19: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$4 = $select([[c], [_r$3], [cc.readerDone]]); /* */ $s = 20; case 20: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_selection = _r$4;
/* */ if (_selection[0] === 0) { $s = 21; continue; }
/* */ if (_selection[0] === 1) { $s = 22; continue; }
/* */ if (_selection[0] === 2) { $s = 23; continue; }
/* */ $s = 24; continue;
/* if (_selection[0] === 0) { */ case 21:
$s = -1; return $ifaceNil;
/* } else if (_selection[0] === 1) { */ case 22:
_r$5 = ctx.Err(); /* */ $s = 25; case 25: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
$s = -1; return _r$5;
/* } else if (_selection[0] === 2) { */ case 23:
$s = -1; return cc.readerErr;
/* } */ case 24:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.ping }; } $f.$ptr = $ptr; $f._entry = _entry; $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._r$5 = _r$5; $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;
};
http2ClientConn.prototype.ping = function(ctx) { return this.$val.ping(ctx); };
http2clientConnReadLoop.ptr.prototype.processPing = function(f) {
var $ptr, _entry, _r, _r$1, _tuple, c, cc, cc$1, err, f, ok, rl, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _r = $f._r; _r$1 = $f._r$1; _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);
rl = this;
/* */ if (f.IsAck()) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (f.IsAck()) { */ case 1:
cc = rl.cc;
$r = cc.mu.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(cc.mu, "Unlock"), []]);
_tuple = (_entry = cc.pings[arrayType$4.keyFor(f.Data)], _entry !== undefined ? [_entry.v, true] : [$chanNil, false]);
c = _tuple[0];
ok = _tuple[1];
if (ok) {
$close(c);
delete cc.pings[arrayType$4.keyFor(f.Data)];
}
$s = -1; return $ifaceNil;
/* } */ case 2:
cc$1 = rl.cc;
$r = cc$1.wmu.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(cc$1.wmu, "Unlock"), []]);
_r = cc$1.fr.WritePing(true, $clone(f.Data, arrayType$4)); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
_r$1 = cc$1.bw.Flush(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* */ } 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.$ptr = $ptr; $f._entry = _entry; $f._r = _r; $f._r$1 = _r$1; $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; } }
};
http2clientConnReadLoop.prototype.processPing = function(f) { return this.$val.processPing(f); };
http2clientConnReadLoop.ptr.prototype.processPushPromise = function(f) {
var $ptr, f, rl;
rl = this;
return new http2ConnectionError(1);
};
http2clientConnReadLoop.prototype.processPushPromise = function(f) { return this.$val.processPushPromise(f); };
http2ClientConn.ptr.prototype.writeStreamReset = function(streamID, code, err) {
var $ptr, _r, _r$1, cc, code, err, streamID, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; 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:
cc = this;
$r = cc.wmu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r = cc.fr.WriteRSTStream(streamID, code); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
_r$1 = cc.bw.Flush(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
$r = cc.wmu.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.writeStreamReset }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.cc = cc; $f.code = code; $f.err = err; $f.streamID = streamID; $f.$s = $s; $f.$r = $r; return $f;
};
http2ClientConn.prototype.writeStreamReset = function(streamID, code, err) { return this.$val.writeStreamReset(streamID, code, err); };
http2ClientConn.ptr.prototype.logf = function(format, args) {
var $ptr, args, cc, format, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; args = $f.args; cc = $f.cc; format = $f.format; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
cc = this;
$r = cc.t.logf(format, args); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.logf }; } $f.$ptr = $ptr; $f.args = args; $f.cc = cc; $f.format = format; $f.$s = $s; $f.$r = $r; return $f;
};
http2ClientConn.prototype.logf = function(format, args) { return this.$val.logf(format, args); };
http2ClientConn.ptr.prototype.vlogf = function(format, args) {
var $ptr, args, cc, format, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; args = $f.args; cc = $f.cc; format = $f.format; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
cc = this;
$r = cc.t.vlogf(format, args); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.vlogf }; } $f.$ptr = $ptr; $f.args = args; $f.cc = cc; $f.format = format; $f.$s = $s; $f.$r = $r; return $f;
};
http2ClientConn.prototype.vlogf = function(format, args) { return this.$val.vlogf(format, args); };
http2Transport.ptr.prototype.vlogf = function(format, args) {
var $ptr, args, format, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; args = $f.args; format = $f.format; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
/* */ if (http2VerboseLogs) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (http2VerboseLogs) { */ case 1:
$r = t.logf(format, args); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Transport.ptr.prototype.vlogf }; } $f.$ptr = $ptr; $f.args = args; $f.format = format; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
http2Transport.prototype.vlogf = function(format, args) { return this.$val.vlogf(format, args); };
http2Transport.ptr.prototype.logf = function(format, args) {
var $ptr, args, format, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; args = $f.args; format = $f.format; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
$r = log.Printf(format, args); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2Transport.ptr.prototype.logf }; } $f.$ptr = $ptr; $f.args = args; $f.format = format; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
http2Transport.prototype.logf = function(format, args) { return this.$val.logf(format, args); };
http2strSliceContains = function(ss, s) {
var $ptr, _i, _ref, s, ss, v;
_ref = ss;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (v === s) {
return true;
}
_i++;
}
return false;
};
http2erringRoundTripper.ptr.prototype.RoundTrip = function(param) {
var $ptr, param, rt;
rt = this;
return [ptrType$16.nil, rt.err];
};
http2erringRoundTripper.prototype.RoundTrip = function(param) { return this.$val.RoundTrip(param); };
http2gzipReader.ptr.prototype.Read = function(p) {
var $ptr, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, err, gz, n, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; gz = $f.gz; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
n = 0;
err = $ifaceNil;
gz = this;
if (!($interfaceIsEqual(gz.zerr, $ifaceNil))) {
_tmp = 0;
_tmp$1 = gz.zerr;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
/* */ if (gz.zr === ptrType$71.nil) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (gz.zr === ptrType$71.nil) { */ case 1:
_r = gzip.NewReader(gz.body); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
gz.zr = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
gz.zerr = err;
_tmp$2 = 0;
_tmp$3 = err;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
}
/* } */ case 2:
_r$1 = gz.zr.Read(p); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple$1 = _r$1;
n = _tuple$1[0];
err = _tuple$1[1];
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: http2gzipReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $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.gz = gz; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
};
http2gzipReader.prototype.Read = function(p) { return this.$val.Read(p); };
http2gzipReader.ptr.prototype.Close = function() {
var $ptr, _r, gz, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; gz = $f.gz; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
gz = this;
_r = gz.body.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2gzipReader.ptr.prototype.Close }; } $f.$ptr = $ptr; $f._r = _r; $f.gz = gz; $f.$s = $s; $f.$r = $r; return $f;
};
http2gzipReader.prototype.Close = function() { return this.$val.Close(); };
http2Transport.ptr.prototype.getBodyWriterState = function(cs, body$1) {
var $ptr, _entry, body$1, cs, resc, s, t, x$3;
s = new http2bodyWriterState.ptr(ptrType$70.nil, ptrType$53.nil, ptrType$72.nil, $throwNilPointerError, $chanNil, new time.Duration(0, 0));
t = this;
s.cs = cs;
if ($interfaceIsEqual(body$1, $ifaceNil)) {
return s;
}
resc = new $Chan($error, 1);
s.resc = resc;
s.fn = (function $b() {
var $ptr, _r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = cs.cc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
cs.startedWrite = true;
$r = cs.cc.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r = cs.writeRequestBody(body$1, cs.req.Body); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$r = $send(resc, _r); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f.$s = $s; $f.$r = $r; return $f;
});
s.delay = t.expectContinueTimeout();
if ((x$3 = s.delay, (x$3.$high === 0 && x$3.$low === 0)) || !httplex.HeaderValuesContainsToken((_entry = cs.req.Header[$String.keyFor("Expect")], _entry !== undefined ? _entry.v : sliceType$1.nil), "100-continue")) {
return s;
}
s.fnonce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
s.timer = time.AfterFunc(new time.Duration(7342547, 765657088), (function $b() {
var $ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = s.fnonce.Do(s.fn); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
}));
return s;
};
http2Transport.prototype.getBodyWriterState = function(cs, body$1) { return this.$val.getBodyWriterState(cs, body$1); };
http2bodyWriterState.ptr.prototype.cancel = function() {
var $ptr, s;
s = this;
if (!(s.timer === ptrType$53.nil)) {
s.timer.Stop();
}
};
http2bodyWriterState.prototype.cancel = function() { return this.$val.cancel(); };
http2bodyWriterState.ptr.prototype.on100 = function() {
var $ptr, s;
s = this;
if (s.timer === ptrType$53.nil) {
return;
}
s.timer.Stop();
$go((function $b() {
var $ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = s.fnonce.Do(s.fn); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
}), []);
};
http2bodyWriterState.prototype.on100 = function() { return this.$val.on100(); };
http2bodyWriterState.ptr.prototype.scheduleBodyWrite = function() {
var $ptr, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
s = this;
/* */ if (s.timer === ptrType$53.nil) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (s.timer === ptrType$53.nil) { */ case 1:
$go(s.fn, []);
$s = -1; return;
/* } */ case 2:
$r = http2traceWait100Continue(s.cs.trace); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (s.timer.Stop()) {
s.timer.Reset(s.delay);
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2bodyWriterState.ptr.prototype.scheduleBodyWrite }; } $f.$ptr = $ptr; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
http2bodyWriterState.prototype.scheduleBodyWrite = function() { return this.$val.scheduleBodyWrite(); };
http2isConnectionCloseRequest = function(req) {
var $ptr, _entry, req;
return req.Close || httplex.HeaderValuesContainsToken((_entry = req.Header[$String.keyFor("Connection")], _entry !== undefined ? _entry.v : sliceType$1.nil), "close");
};
http2writeEndsStream = function(w) {
var $ptr, _ref, v, v$1, v$2, w;
_ref = w;
if ($assertType(_ref, ptrType$58, true)[1]) {
v = _ref.$val;
return v.endStream;
} else if ($assertType(_ref, ptrType$59, true)[1]) {
v$1 = _ref.$val;
return v$1.endStream;
} else if (_ref === $ifaceNil) {
v$2 = _ref;
$panic(new $String("writeEndsStream called on nil writeFramer"));
}
return false;
};
http2flushFrameWriter.ptr.prototype.writeFrame = function(ctx) {
var $ptr, _r, ctx, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; ctx = $f.ctx; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = ctx.Flush(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2flushFrameWriter.ptr.prototype.writeFrame }; } $f.$ptr = $ptr; $f._r = _r; $f.ctx = ctx; $f.$s = $s; $f.$r = $r; return $f;
};
http2flushFrameWriter.prototype.writeFrame = function(ctx) { return this.$val.writeFrame(ctx); };
http2flushFrameWriter.ptr.prototype.staysWithinBuffer = function(max) {
var $ptr, max;
return false;
};
http2flushFrameWriter.prototype.staysWithinBuffer = function(max) { return this.$val.staysWithinBuffer(max); };
http2writeSettings.prototype.staysWithinBuffer = function(max) {
var $ptr, max, s;
s = this;
return (9 + ($imul(6, s.$length)) >> 0) <= max;
};
$ptrType(http2writeSettings).prototype.staysWithinBuffer = function(max) { return this.$get().staysWithinBuffer(max); };
http2writeSettings.prototype.writeFrame = function(ctx) {
var $ptr, _r, _r$1, ctx, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; ctx = $f.ctx; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
s = this;
_r = ctx.Framer(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r$1 = _r.WriteSettings(($subslice(new sliceType$17(s.$array), s.$offset, s.$offset + s.$length))); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2writeSettings.prototype.writeFrame }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.ctx = ctx; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(http2writeSettings).prototype.writeFrame = function(ctx) { return this.$get().writeFrame(ctx); };
http2writeGoAway.ptr.prototype.writeFrame = function(ctx) {
var $ptr, _r, _r$1, _r$2, _r$3, ctx, err, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
p = this;
_r = ctx.Framer(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r$1 = _r.WriteGoAway(p.maxStreamID, p.code, sliceType$2.nil); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
err = _r$1;
/* */ if (!((p.code === 0))) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!((p.code === 0))) { */ case 3:
_r$2 = ctx.Flush(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
$r = time.Sleep(new time.Duration(0, 50000000)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$3 = ctx.CloseConn(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$3;
/* } */ case 4:
$s = -1; return err;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2writeGoAway.ptr.prototype.writeFrame }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
http2writeGoAway.prototype.writeFrame = function(ctx) { return this.$val.writeFrame(ctx); };
http2writeGoAway.ptr.prototype.staysWithinBuffer = function(max) {
var $ptr, max;
return false;
};
http2writeGoAway.prototype.staysWithinBuffer = function(max) { return this.$val.staysWithinBuffer(max); };
http2writeData.ptr.prototype.String = function() {
var $ptr, _r, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
w = this;
_r = 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 = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2writeData.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
http2writeData.prototype.String = function() { return this.$val.String(); };
http2writeData.ptr.prototype.writeFrame = function(ctx) {
var $ptr, _r, _r$1, ctx, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; ctx = $f.ctx; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
w = this;
_r = ctx.Framer(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r$1 = _r.WriteData(w.streamID, w.endStream, w.p); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2writeData.ptr.prototype.writeFrame }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.ctx = ctx; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
http2writeData.prototype.writeFrame = function(ctx) { return this.$val.writeFrame(ctx); };
http2writeData.ptr.prototype.staysWithinBuffer = function(max) {
var $ptr, max, w;
w = this;
return (9 + w.p.$length >> 0) <= max;
};
http2writeData.prototype.staysWithinBuffer = function(max) { return this.$val.staysWithinBuffer(max); };
http2handlerPanicRST.ptr.prototype.writeFrame = function(ctx) {
var $ptr, _r, _r$1, ctx, hp, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; ctx = $f.ctx; hp = $f.hp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
hp = this;
_r = ctx.Framer(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r$1 = _r.WriteRSTStream(hp.StreamID, 2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2handlerPanicRST.ptr.prototype.writeFrame }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.ctx = ctx; $f.hp = hp; $f.$s = $s; $f.$r = $r; return $f;
};
http2handlerPanicRST.prototype.writeFrame = function(ctx) { return this.$val.writeFrame(ctx); };
http2handlerPanicRST.ptr.prototype.staysWithinBuffer = function(max) {
var $ptr, hp, max;
hp = this;
return 13 <= max;
};
http2handlerPanicRST.prototype.staysWithinBuffer = function(max) { return this.$val.staysWithinBuffer(max); };
http2StreamError.ptr.prototype.writeFrame = function(ctx) {
var $ptr, _r, _r$1, ctx, se, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; ctx = $f.ctx; se = $f.se; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
se = this;
_r = ctx.Framer(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r$1 = _r.WriteRSTStream(se.StreamID, se.Code); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2StreamError.ptr.prototype.writeFrame }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.ctx = ctx; $f.se = se; $f.$s = $s; $f.$r = $r; return $f;
};
http2StreamError.prototype.writeFrame = function(ctx) { return this.$val.writeFrame(ctx); };
http2StreamError.ptr.prototype.staysWithinBuffer = function(max) {
var $ptr, max, se;
se = this;
return 13 <= max;
};
http2StreamError.prototype.staysWithinBuffer = function(max) { return this.$val.staysWithinBuffer(max); };
http2writePingAck.ptr.prototype.writeFrame = function(ctx) {
var $ptr, _r, _r$1, ctx, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; ctx = $f.ctx; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
w = this;
_r = ctx.Framer(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r$1 = _r.WritePing(true, $clone(w.pf.Data, arrayType$4)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2writePingAck.ptr.prototype.writeFrame }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.ctx = ctx; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
http2writePingAck.prototype.writeFrame = function(ctx) { return this.$val.writeFrame(ctx); };
http2writePingAck.ptr.prototype.staysWithinBuffer = function(max) {
var $ptr, max, w;
w = this;
return 17 <= max;
};
http2writePingAck.prototype.staysWithinBuffer = function(max) { return this.$val.staysWithinBuffer(max); };
http2writeSettingsAck.ptr.prototype.writeFrame = function(ctx) {
var $ptr, _r, _r$1, ctx, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; ctx = $f.ctx; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = ctx.Framer(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r$1 = _r.WriteSettingsAck(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2writeSettingsAck.ptr.prototype.writeFrame }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.ctx = ctx; $f.$s = $s; $f.$r = $r; return $f;
};
http2writeSettingsAck.prototype.writeFrame = function(ctx) { return this.$val.writeFrame(ctx); };
http2writeSettingsAck.ptr.prototype.staysWithinBuffer = function(max) {
var $ptr, max;
return 9 <= max;
};
http2writeSettingsAck.prototype.staysWithinBuffer = function(max) { return this.$val.staysWithinBuffer(max); };
http2splitHeaderBlock = function(ctx, headerBlock, fn) {
var $ptr, _r, ctx, err, first, fn, frag, headerBlock, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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:
first = true;
/* while (true) { */ case 1:
/* if (!(headerBlock.$length > 0)) { break; } */ if(!(headerBlock.$length > 0)) { $s = 2; continue; }
frag = headerBlock;
if (frag.$length > 16384) {
frag = $subslice(frag, 0, 16384);
}
headerBlock = $subslice(headerBlock, frag.$length);
_r = fn(ctx, frag, first, headerBlock.$length === 0); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
first = false;
/* } */ $s = 1; continue; case 2:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2splitHeaderBlock }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
http2encKV = function(enc, k, v) {
var $ptr, _r, enc, k, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; enc = $f.enc; k = $f.k; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
/* */ if (http2VerboseLogs) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (http2VerboseLogs) { */ case 1:
$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; }
/* } */ case 2:
_r = enc.WriteField(new hpack.HeaderField.ptr(k, v, false)); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2encKV }; } $f.$ptr = $ptr; $f._r = _r; $f.enc = enc; $f.k = k; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
http2writeResHeaders.ptr.prototype.staysWithinBuffer = function(max) {
var $ptr, max, w;
w = this;
return false;
};
http2writeResHeaders.prototype.staysWithinBuffer = function(max) { return this.$val.staysWithinBuffer(max); };
http2writeResHeaders.ptr.prototype.writeFrame = function(ctx) {
var $ptr, _r, _r$1, _tuple, buf, ctx, enc, headerBlock, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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:
w = this;
_r = ctx.HeaderEncoder(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
enc = _tuple[0];
buf = _tuple[1];
buf.Reset();
/* */ if (!((w.httpResCode === 0))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!((w.httpResCode === 0))) { */ case 2:
$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; }
/* } */ case 3:
$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; }
/* */ if (!(w.contentType === "")) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!(w.contentType === "")) { */ case 6:
$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; }
/* } */ case 7:
/* */ if (!(w.contentLength === "")) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (!(w.contentLength === "")) { */ case 9:
$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; }
/* } */ case 10:
/* */ if (!(w.date === "")) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (!(w.date === "")) { */ case 12:
$r = http2encKV(enc, "date", w.date); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 13:
headerBlock = buf.Bytes();
if ((headerBlock.$length === 0) && w.trailers === sliceType$1.nil) {
$panic(new $String("unexpected empty hpack"));
}
_r$1 = http2splitHeaderBlock(ctx, headerBlock, $methodVal(w, "writeHeaderBlock")); /* */ $s = 15; case 15: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2writeResHeaders.ptr.prototype.writeFrame }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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;
};
http2writeResHeaders.prototype.writeFrame = function(ctx) { return this.$val.writeFrame(ctx); };
http2writeResHeaders.ptr.prototype.writeHeaderBlock = function(ctx, frag, firstFrag, lastFrag) {
var $ptr, _r, _r$1, _r$2, _r$3, ctx, firstFrag, frag, lastFrag, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; 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:
w = this;
/* */ if (firstFrag) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (firstFrag) { */ case 1:
_r = ctx.Framer(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r$1 = _r.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$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* } else { */ case 2:
_r$2 = ctx.Framer(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$3 = _r$2.WriteContinuation(w.streamID, lastFrag, frag); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
$s = -1; return _r$3;
/* } */ case 3:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2writeResHeaders.ptr.prototype.writeHeaderBlock }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.ctx = ctx; $f.firstFrag = firstFrag; $f.frag = frag; $f.lastFrag = lastFrag; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
http2writeResHeaders.prototype.writeHeaderBlock = function(ctx, frag, firstFrag, lastFrag) { return this.$val.writeHeaderBlock(ctx, frag, firstFrag, lastFrag); };
http2writePushPromise.ptr.prototype.staysWithinBuffer = function(max) {
var $ptr, max, w;
w = this;
return false;
};
http2writePushPromise.prototype.staysWithinBuffer = function(max) { return this.$val.staysWithinBuffer(max); };
http2writePushPromise.ptr.prototype.writeFrame = function(ctx) {
var $ptr, _r, _r$1, _tuple, buf, ctx, enc, headerBlock, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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:
w = this;
_r = ctx.HeaderEncoder(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
enc = _tuple[0];
buf = _tuple[1];
buf.Reset();
$r = http2encKV(enc, ":method", w.method); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$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; }
$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; }
$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; }
$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; }
headerBlock = buf.Bytes();
if (headerBlock.$length === 0) {
$panic(new $String("unexpected empty hpack"));
}
_r$1 = http2splitHeaderBlock(ctx, headerBlock, $methodVal(w, "writeHeaderBlock")); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2writePushPromise.ptr.prototype.writeFrame }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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;
};
http2writePushPromise.prototype.writeFrame = function(ctx) { return this.$val.writeFrame(ctx); };
http2writePushPromise.ptr.prototype.writeHeaderBlock = function(ctx, frag, firstFrag, lastFrag) {
var $ptr, _r, _r$1, _r$2, _r$3, ctx, firstFrag, frag, lastFrag, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; 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:
w = this;
/* */ if (firstFrag) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (firstFrag) { */ case 1:
_r = ctx.Framer(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r$1 = _r.WritePushPromise(new http2PushPromiseParam.ptr(w.streamID, w.promisedID, frag, lastFrag, 0)); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* } else { */ case 2:
_r$2 = ctx.Framer(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$3 = _r$2.WriteContinuation(w.streamID, lastFrag, frag); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
$s = -1; return _r$3;
/* } */ case 3:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2writePushPromise.ptr.prototype.writeHeaderBlock }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.ctx = ctx; $f.firstFrag = firstFrag; $f.frag = frag; $f.lastFrag = lastFrag; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
http2writePushPromise.prototype.writeHeaderBlock = function(ctx, frag, firstFrag, lastFrag) { return this.$val.writeHeaderBlock(ctx, frag, firstFrag, lastFrag); };
http2write100ContinueHeadersFrame.ptr.prototype.writeFrame = function(ctx) {
var $ptr, _r, _r$1, _r$2, _tuple, buf, ctx, enc, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _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:
w = this;
_r = ctx.HeaderEncoder(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
enc = _tuple[0];
buf = _tuple[1];
buf.Reset();
$r = http2encKV(enc, ":status", "100"); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$1 = ctx.Framer(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$2 = _r$1.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$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$s = -1; return _r$2;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2write100ContinueHeadersFrame.ptr.prototype.writeFrame }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.buf = buf; $f.ctx = ctx; $f.enc = enc; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
http2write100ContinueHeadersFrame.prototype.writeFrame = function(ctx) { return this.$val.writeFrame(ctx); };
http2write100ContinueHeadersFrame.ptr.prototype.staysWithinBuffer = function(max) {
var $ptr, max, w;
w = this;
return 29 <= max;
};
http2write100ContinueHeadersFrame.prototype.staysWithinBuffer = function(max) { return this.$val.staysWithinBuffer(max); };
http2writeWindowUpdate.ptr.prototype.staysWithinBuffer = function(max) {
var $ptr, max, wu;
wu = this;
return 13 <= max;
};
http2writeWindowUpdate.prototype.staysWithinBuffer = function(max) { return this.$val.staysWithinBuffer(max); };
http2writeWindowUpdate.ptr.prototype.writeFrame = function(ctx) {
var $ptr, _r, _r$1, ctx, wu, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; ctx = $f.ctx; wu = $f.wu; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
wu = this;
_r = ctx.Framer(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r$1 = _r.WriteWindowUpdate(wu.streamID, wu.n); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2writeWindowUpdate.ptr.prototype.writeFrame }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.ctx = ctx; $f.wu = wu; $f.$s = $s; $f.$r = $r; return $f;
};
http2writeWindowUpdate.prototype.writeFrame = function(ctx) { return this.$val.writeFrame(ctx); };
http2encodeHeaders = function(enc, h, keys) {
var $ptr, _entry, _i, _i$1, _r, _r$1, _r$2, _ref, _ref$1, enc, h, isTE, k, keys, sorter, v, vv, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _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);
/* */ if (keys === sliceType$1.nil) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (keys === sliceType$1.nil) { */ case 1:
_r = http2sorterPool.Get(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
sorter = $assertType(_r, ptrType$66);
$deferred.push([$methodVal(http2sorterPool, "Put"), [sorter]]);
_r$1 = sorter.Keys(h); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
keys = _r$1;
/* } */ case 2:
_ref = keys;
_i = 0;
/* while (true) { */ case 5:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 6; continue; }
k = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
vv = (_entry = h[$String.keyFor(k)], _entry !== undefined ? _entry.v : sliceType$1.nil);
_r$2 = http2lowerHeader(k); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
k = _r$2;
/* */ if (!http2validWireHeaderFieldName(k)) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (!http2validWireHeaderFieldName(k)) { */ case 8:
_i++;
/* continue; */ $s = 5; continue;
/* } */ case 9:
isTE = k === "transfer-encoding";
_ref$1 = vv;
_i$1 = 0;
/* while (true) { */ case 10:
/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 11; continue; }
v = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
/* */ if (!httplex.ValidHeaderFieldValue(v)) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (!httplex.ValidHeaderFieldValue(v)) { */ case 12:
_i$1++;
/* continue; */ $s = 10; continue;
/* } */ case 13:
/* */ if (isTE && !(v === "trailers")) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if (isTE && !(v === "trailers")) { */ case 14:
_i$1++;
/* continue; */ $s = 10; continue;
/* } */ case 15:
$r = http2encKV(enc, k, v); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_i$1++;
/* } */ $s = 10; continue; case 11:
_i++;
/* } */ $s = 5; continue; case 6:
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2encodeHeaders }; } $f.$ptr = $ptr; $f._entry = _entry; $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $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; } }
};
http2FrameWriteRequest.ptr.prototype.StreamID = function() {
var $ptr, _tuple, ok, se, wr;
wr = this;
if (wr.stream === ptrType$6.nil) {
_tuple = $assertType(wr.write, http2StreamError, true);
se = $clone(_tuple[0], http2StreamError);
ok = _tuple[1];
if (ok) {
return se.StreamID;
}
return 0;
}
return wr.stream.id;
};
http2FrameWriteRequest.prototype.StreamID = function() { return this.$val.StreamID(); };
http2FrameWriteRequest.ptr.prototype.DataSize = function() {
var $ptr, _tuple, ok, wd, wr;
wr = this;
_tuple = $assertType(wr.write, ptrType$58, true);
wd = _tuple[0];
ok = _tuple[1];
if (ok) {
return wd.p.$length;
}
return 0;
};
http2FrameWriteRequest.prototype.DataSize = function() { return this.$val.DataSize(); };
http2FrameWriteRequest.ptr.prototype.Consume = function(n) {
var $ptr, _tuple, allowed, consumed, empty, n, ok, rest, wd, wr;
wr = this;
empty = new http2FrameWriteRequest.ptr($ifaceNil, ptrType$6.nil, $chanNil);
_tuple = $assertType(wr.write, ptrType$58, true);
wd = _tuple[0];
ok = _tuple[1];
if (!ok || (wd.p.$length === 0)) {
return [wr, empty, 1];
}
allowed = wr.stream.flow.available();
if (n < allowed) {
allowed = n;
}
if (wr.stream.sc.maxFrameSize < allowed) {
allowed = wr.stream.sc.maxFrameSize;
}
if (allowed <= 0) {
return [empty, empty, 0];
}
if (wd.p.$length > ((allowed >> 0))) {
wr.stream.flow.take(allowed);
consumed = new http2FrameWriteRequest.ptr(new http2writeData.ptr(wd.streamID, $subslice(wd.p, 0, allowed), false), wr.stream, $chanNil);
rest = new http2FrameWriteRequest.ptr(new http2writeData.ptr(wd.streamID, $subslice(wd.p, allowed), wd.endStream), wr.stream, wr.done);
return [consumed, rest, 2];
}
wr.stream.flow.take(((wd.p.$length >> 0)));
return [wr, empty, 1];
};
http2FrameWriteRequest.prototype.Consume = function(n) { return this.$val.Consume(n); };
http2FrameWriteRequest.ptr.prototype.String = function() {
var $ptr, _r, _r$1, _r$2, _tuple, des, ok, s, wr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _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:
wr = this;
des = "";
_tuple = $assertType(wr.write, fmt.Stringer, true);
s = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (ok) { */ case 1:
_r = s.String(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
des = _r;
$s = 3; continue;
/* } else { */ case 2:
_r$1 = fmt.Sprintf("%T", new sliceType([wr.write])); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
des = _r$1;
/* } */ case 3:
_r$2 = 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$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$s = -1; return _r$2;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2FrameWriteRequest.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.des = des; $f.ok = ok; $f.s = s; $f.wr = wr; $f.$s = $s; $f.$r = $r; return $f;
};
http2FrameWriteRequest.prototype.String = function() { return this.$val.String(); };
http2FrameWriteRequest.ptr.prototype.replyToWriter = function(err) {
var $ptr, _r, _selection, err, wr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _selection = $f._selection; err = $f.err; wr = $f.wr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
wr = this;
if (wr.done === $chanNil) {
$s = -1; return;
}
_selection = $select([[wr.done, err], []]);
/* */ if (_selection[0] === 0) { $s = 1; continue; }
/* */ if (_selection[0] === 1) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (_selection[0] === 0) { */ case 1:
$s = 3; continue;
/* } else if (_selection[0] === 1) { */ case 2:
_r = fmt.Sprintf("unbuffered done channel passed in for type %T", new sliceType([wr.write])); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$panic(new $String(_r));
/* } */ case 3:
wr.write = $ifaceNil;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: http2FrameWriteRequest.ptr.prototype.replyToWriter }; } $f.$ptr = $ptr; $f._r = _r; $f._selection = _selection; $f.err = err; $f.wr = wr; $f.$s = $s; $f.$r = $r; return $f;
};
http2FrameWriteRequest.prototype.replyToWriter = function(err) { return this.$val.replyToWriter(err); };
http2writeQueue.ptr.prototype.empty = function() {
var $ptr, q;
q = this;
return q.s.$length === 0;
};
http2writeQueue.prototype.empty = function() { return this.$val.empty(); };
http2writeQueue.ptr.prototype.push = function(wr) {
var $ptr, q, wr;
q = this;
q.s = $append(q.s, wr);
};
http2writeQueue.prototype.push = function(wr) { return this.$val.push(wr); };
http2writeQueue.ptr.prototype.shift = function() {
var $ptr, q, wr, x$3, x$4, x$5;
q = this;
if (q.s.$length === 0) {
$panic(new $String("invalid use of queue"));
}
wr = $clone((x$3 = q.s, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])), http2FrameWriteRequest);
$copySlice(q.s, $subslice(q.s, 1));
http2FrameWriteRequest.copy((x$4 = q.s, x$5 = q.s.$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])), new http2FrameWriteRequest.ptr($ifaceNil, ptrType$6.nil, $chanNil));
q.s = $subslice(q.s, 0, (q.s.$length - 1 >> 0));
return wr;
};
http2writeQueue.prototype.shift = function() { return this.$val.shift(); };
http2writeQueue.ptr.prototype.consume = function(n) {
var $ptr, _1, _tuple, consumed, n, numresult, q, rest, x$3, x$4;
q = this;
if (q.s.$length === 0) {
return [new http2FrameWriteRequest.ptr($ifaceNil, ptrType$6.nil, $chanNil), false];
}
_tuple = $clone((x$3 = q.s, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])), http2FrameWriteRequest).Consume(n);
consumed = $clone(_tuple[0], http2FrameWriteRequest);
rest = $clone(_tuple[1], http2FrameWriteRequest);
numresult = _tuple[2];
_1 = numresult;
if (_1 === (0)) {
return [new http2FrameWriteRequest.ptr($ifaceNil, ptrType$6.nil, $chanNil), false];
} else if (_1 === (1)) {
q.shift();
} else if (_1 === (2)) {
http2FrameWriteRequest.copy((x$4 = q.s, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])), rest);
}
return [consumed, true];
};
http2writeQueue.prototype.consume = function(n) { return this.$val.consume(n); };
$ptrType(http2writeQueuePool).prototype.put = function(q) {
var $ptr, _i, _ref, i, p, q, x$3;
p = this;
_ref = q.s;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
http2FrameWriteRequest.copy((x$3 = q.s, ((i < 0 || i >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i])), new http2FrameWriteRequest.ptr($ifaceNil, ptrType$6.nil, $chanNil));
_i++;
}
q.s = $subslice(q.s, 0, 0);
p.$set($append(p.$get(), q));
};
$ptrType(http2writeQueuePool).prototype.get = function() {
var $ptr, ln, p, q, x$3, x$4, x$5;
p = this;
ln = p.$get().$length;
if (ln === 0) {
return new http2writeQueue.ptr(sliceType$18.nil);
}
x$3 = ln - 1 >> 0;
q = (x$4 = p.$get(), ((x$3 < 0 || x$3 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$3]));
(x$5 = p.$get(), ((x$3 < 0 || x$3 >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + x$3] = ptrType$73.nil));
p.$set($subslice((p.$get()), 0, x$3));
return q;
};
http2NewRandomWriteScheduler = function() {
var $ptr;
return new http2randomWriteScheduler.ptr(new http2writeQueue.ptr(sliceType$18.nil), {}, http2writeQueuePool.nil);
};
http2randomWriteScheduler.ptr.prototype.OpenStream = function(streamID, options) {
var $ptr, options, streamID, ws;
ws = this;
};
http2randomWriteScheduler.prototype.OpenStream = function(streamID, options) { return this.$val.OpenStream(streamID, options); };
http2randomWriteScheduler.ptr.prototype.CloseStream = function(streamID) {
var $ptr, _entry, _tuple, ok, q, streamID, ws;
ws = this;
_tuple = (_entry = ws.sq[$Uint32.keyFor(streamID)], _entry !== undefined ? [_entry.v, true] : [ptrType$73.nil, false]);
q = _tuple[0];
ok = _tuple[1];
if (!ok) {
return;
}
delete ws.sq[$Uint32.keyFor(streamID)];
(ws.$ptr_queuePool || (ws.$ptr_queuePool = new ptrType$76(function() { return this.$target.queuePool; }, function($v) { this.$target.queuePool = $v; }, ws))).put(q);
};
http2randomWriteScheduler.prototype.CloseStream = function(streamID) { return this.$val.CloseStream(streamID); };
http2randomWriteScheduler.ptr.prototype.AdjustStream = function(streamID, priority) {
var $ptr, priority, streamID, ws;
ws = this;
};
http2randomWriteScheduler.prototype.AdjustStream = function(streamID, priority) { return this.$val.AdjustStream(streamID, priority); };
http2randomWriteScheduler.ptr.prototype.Push = function(wr) {
var $ptr, _entry, _key, _tuple, id, ok, q, wr, ws;
ws = this;
id = $clone(wr, http2FrameWriteRequest).StreamID();
if (id === 0) {
ws.zero.push($clone(wr, http2FrameWriteRequest));
return;
}
_tuple = (_entry = ws.sq[$Uint32.keyFor(id)], _entry !== undefined ? [_entry.v, true] : [ptrType$73.nil, false]);
q = _tuple[0];
ok = _tuple[1];
if (!ok) {
q = (ws.$ptr_queuePool || (ws.$ptr_queuePool = new ptrType$76(function() { return this.$target.queuePool; }, function($v) { this.$target.queuePool = $v; }, ws))).get();
_key = id; (ws.sq || $throwRuntimeError("assignment to entry in nil map"))[$Uint32.keyFor(_key)] = { k: _key, v: q };
}
q.push($clone(wr, http2FrameWriteRequest));
};
http2randomWriteScheduler.prototype.Push = function(wr) { return this.$val.Push(wr); };
http2randomWriteScheduler.ptr.prototype.Pop = function() {
var $ptr, _entry, _i, _keys, _ref, _tuple, ok, q, wr, ws;
ws = this;
if (!ws.zero.empty()) {
return [ws.zero.shift(), true];
}
_ref = ws.sq;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
continue;
}
q = _entry.v;
_tuple = q.consume(2147483647);
wr = $clone(_tuple[0], http2FrameWriteRequest);
ok = _tuple[1];
if (ok) {
return [wr, true];
}
_i++;
}
return [new http2FrameWriteRequest.ptr($ifaceNil, ptrType$6.nil, $chanNil), false];
};
http2randomWriteScheduler.prototype.Pop = function() { return this.$val.Pop(); };
Header.prototype.Add = function(key, value) {
var $ptr, h, key, value;
h = this.$val;
new textproto.MIMEHeader((h)).Add(key, value);
};
$ptrType(Header).prototype.Add = function(key, value) { return new Header(this.$get()).Add(key, value); };
Header.prototype.Set = function(key, value) {
var $ptr, h, key, value;
h = this.$val;
new textproto.MIMEHeader((h)).Set(key, value);
};
$ptrType(Header).prototype.Set = function(key, value) { return new Header(this.$get()).Set(key, value); };
Header.prototype.Get = function(key) {
var $ptr, h, key;
h = this.$val;
return new textproto.MIMEHeader((h)).Get(key);
};
$ptrType(Header).prototype.Get = function(key) { return new Header(this.$get()).Get(key); };
Header.prototype.get = function(key) {
var $ptr, _entry, h, key, v;
h = this.$val;
v = (_entry = h[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$1.nil);
if (v.$length > 0) {
return (0 >= v.$length ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + 0]);
}
return "";
};
$ptrType(Header).prototype.get = function(key) { return new Header(this.$get()).get(key); };
Header.prototype.Del = function(key) {
var $ptr, h, key;
h = this.$val;
new textproto.MIMEHeader((h)).Del(key);
};
$ptrType(Header).prototype.Del = function(key) { return new Header(this.$get()).Del(key); };
Header.prototype.Write = function(w) {
var $ptr, _r, h, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; h = $f.h; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
h = this.$val;
_r = new Header(h).WriteSubset(w, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Header.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f.h = h; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(Header).prototype.Write = function(w) { return new Header(this.$get()).Write(w); };
Header.prototype.clone = function() {
var $ptr, _entry, _i, _key, _keys, _ref, h, h2, k, vv, vv2, x$3;
h = this.$val;
h2 = (x$3 = $keys(h).length, ((x$3 < 0 || x$3 > 2147483647) ? $throwRuntimeError("makemap: size out of range") : {}));
_ref = h;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
continue;
}
k = _entry.k;
vv = _entry.v;
vv2 = $makeSlice(sliceType$1, vv.$length);
$copySlice(vv2, vv);
_key = k; (h2 || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: vv2 };
_i++;
}
return h2;
};
$ptrType(Header).prototype.clone = function() { return new Header(this.$get()).clone(); };
stringWriter.ptr.prototype.WriteString = function(s) {
var $ptr, _r, _tuple, err, n, s, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
n = 0;
err = $ifaceNil;
w = this;
_r = w.w.Write((new sliceType$2($stringToBytes(s)))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: stringWriter.ptr.prototype.WriteString }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.n = n; $f.s = s; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
stringWriter.prototype.WriteString = function(s) { return this.$val.WriteString(s); };
headerSorter.ptr.prototype.Len = function() {
var $ptr, s;
s = this;
return s.kvs.$length;
};
headerSorter.prototype.Len = function() { return this.$val.Len(); };
headerSorter.ptr.prototype.Swap = function(i, j) {
var $ptr, _tmp, _tmp$1, i, j, s, x$3, x$4, x$5, x$6;
s = this;
_tmp = $clone((x$3 = s.kvs, ((j < 0 || j >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + j])), keyValues);
_tmp$1 = $clone((x$4 = s.kvs, ((i < 0 || i >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + i])), keyValues);
keyValues.copy((x$5 = s.kvs, ((i < 0 || i >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + i])), _tmp);
keyValues.copy((x$6 = s.kvs, ((j < 0 || j >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + j])), _tmp$1);
};
headerSorter.prototype.Swap = function(i, j) { return this.$val.Swap(i, j); };
headerSorter.ptr.prototype.Less = function(i, j) {
var $ptr, i, j, s, x$3, x$4;
s = this;
return (x$3 = s.kvs, ((i < 0 || i >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i])).key < (x$4 = s.kvs, ((j < 0 || j >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + j])).key;
};
headerSorter.prototype.Less = function(i, j) { return this.$val.Less(i, j); };
Header.prototype.sortedKeyValues = function(exclude) {
var $ptr, _entry, _entry$1, _i, _keys, _r, _ref, _tmp, _tmp$1, exclude, h, hs, k, kvs, vv, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _keys = $f._keys; _r = $f._r; _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:
kvs = sliceType$3.nil;
hs = ptrType$78.nil;
h = this.$val;
_r = headerSorterPool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
hs = $assertType(_r, ptrType$78);
if (hs.kvs.$capacity < $keys(h).length) {
hs.kvs = $makeSlice(sliceType$3, 0, $keys(h).length);
}
kvs = $subslice(hs.kvs, 0, 0);
_ref = h;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
continue;
}
k = _entry.k;
vv = _entry.v;
if (!(_entry$1 = exclude[$String.keyFor(k)], _entry$1 !== undefined ? _entry$1.v : false)) {
kvs = $append(kvs, new keyValues.ptr(k, vv));
}
_i++;
}
hs.kvs = kvs;
$r = sort.Sort(hs); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_tmp = kvs;
_tmp$1 = hs;
kvs = _tmp;
hs = _tmp$1;
$s = -1; return [kvs, hs];
/* */ } return; } if ($f === undefined) { $f = { $blk: Header.prototype.sortedKeyValues }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._keys = _keys; $f._r = _r; $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;
};
$ptrType(Header).prototype.sortedKeyValues = function(exclude) { return new Header(this.$get()).sortedKeyValues(exclude); };
Header.prototype.WriteSubset = function(w, exclude) {
var $ptr, _i, _i$1, _i$2, _r, _r$1, _r$2, _ref, _ref$1, _ref$2, _tuple, _tuple$1, _tuple$2, err, exclude, h, kv, kvs, ok, s, sorter, v, w, ws, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
h = this.$val;
_tuple = $assertType(w, writeStringer, true);
ws = _tuple[0];
ok = _tuple[1];
if (!ok) {
ws = (x$3 = new stringWriter.ptr(w), new x$3.constructor.elem(x$3));
}
_r = new Header(h).sortedKeyValues(exclude); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
kvs = _tuple$1[0];
sorter = _tuple$1[1];
_ref = kvs;
_i = 0;
/* while (true) { */ case 2:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
kv = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), keyValues);
_ref$1 = kv.values;
_i$1 = 0;
/* while (true) { */ case 4:
/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 5; continue; }
v = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
_r$1 = headerNewlineToSpace.Replace(v); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
v = _r$1;
v = textproto.TrimString(v);
_ref$2 = new sliceType$1([kv.key, ": ", v, "\r\n"]);
_i$2 = 0;
/* while (true) { */ case 7:
/* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 8; continue; }
s = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]);
_r$2 = ws.WriteString(s); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$2 = _r$2;
err = _tuple$2[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
_i$2++;
/* } */ $s = 7; continue; case 8:
_i$1++;
/* } */ $s = 4; continue; case 5:
_i++;
/* } */ $s = 2; continue; case 3:
headerSorterPool.Put(sorter);
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: Header.prototype.WriteSubset }; } $f.$ptr = $ptr; $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._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$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(Header).prototype.WriteSubset = function(w, exclude) { return new Header(this.$get()).WriteSubset(w, exclude); };
CanonicalHeaderKey = function(s) {
var $ptr, s;
return textproto.CanonicalMIMEHeaderKey(s);
};
$pkg.CanonicalHeaderKey = CanonicalHeaderKey;
hasToken = function(v, token) {
var $ptr, b, endPos, sp, token, v;
if (token.length > v.length || token === "") {
return false;
}
if (v === token) {
return true;
}
sp = 0;
while (true) {
if (!(sp <= (v.length - token.length >> 0))) { break; }
b = v.charCodeAt(sp);
if (!((b === token.charCodeAt(0))) && !((((b | 32) >>> 0) === token.charCodeAt(0)))) {
sp = sp + (1) >> 0;
continue;
}
if (sp > 0 && !isTokenBoundary(v.charCodeAt((sp - 1 >> 0)))) {
sp = sp + (1) >> 0;
continue;
}
endPos = sp + token.length >> 0;
if (!((endPos === v.length)) && !isTokenBoundary(v.charCodeAt(endPos))) {
sp = sp + (1) >> 0;
continue;
}
if (strings.EqualFold($substring(v, sp, (sp + token.length >> 0)), token)) {
return true;
}
sp = sp + (1) >> 0;
}
return false;
};
isTokenBoundary = function(b) {
var $ptr, b;
return (b === 32) || (b === 44) || (b === 9);
};
cloneHeader = function(h) {
var $ptr, _entry, _i, _key, _keys, _ref, h, h2, k, vv, vv2, x$3;
h2 = (x$3 = $keys(h).length, ((x$3 < 0 || x$3 > 2147483647) ? $throwRuntimeError("makemap: size out of range") : {}));
_ref = h;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
continue;
}
k = _entry.k;
vv = _entry.v;
vv2 = $makeSlice(sliceType$1, vv.$length);
$copySlice(vv2, vv);
_key = k; (h2 || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: vv2 };
_i++;
}
return h2;
};
contextKey.ptr.prototype.String = function() {
var $ptr, k;
k = this;
return "net/http context value " + k.name;
};
contextKey.prototype.String = function() { return this.$val.String(); };
hasPort = function(s) {
var $ptr, s;
return strings.LastIndex(s, ":") > strings.LastIndex(s, "]");
};
removeEmptyPort = function(host) {
var $ptr, host;
if (hasPort(host)) {
return strings.TrimSuffix(host, ":");
}
return host;
};
isNotToken = function(r) {
var $ptr, r;
return !httplex.IsTokenRune(r);
};
isASCII = function(s) {
var $ptr, i, s;
i = 0;
while (true) {
if (!(i < s.length)) { break; }
if (s.charCodeAt(i) >= 128) {
return false;
}
i = i + (1) >> 0;
}
return true;
};
hexEscapeNonASCII = function(s) {
var $ptr, b, i, i$1, newLen, s;
newLen = 0;
i = 0;
while (true) {
if (!(i < s.length)) { break; }
if (s.charCodeAt(i) >= 128) {
newLen = newLen + (3) >> 0;
} else {
newLen = newLen + (1) >> 0;
}
i = i + (1) >> 0;
}
if (newLen === s.length) {
return s;
}
b = $makeSlice(sliceType$2, 0, newLen);
i$1 = 0;
while (true) {
if (!(i$1 < s.length)) { break; }
if (s.charCodeAt(i$1) >= 128) {
b = $append(b, 37);
b = strconv.AppendInt(b, (new $Int64(0, s.charCodeAt(i$1))), 16);
} else {
b = $append(b, s.charCodeAt(i$1));
}
i$1 = i$1 + (1) >> 0;
}
return ($bytesToString(b));
};
noBody.ptr.prototype.Read = function(param) {
var $ptr, param;
return [0, io.EOF];
};
noBody.prototype.Read = function(param) { return this.$val.Read(param); };
noBody.ptr.prototype.Close = function() {
var $ptr;
return $ifaceNil;
};
noBody.prototype.Close = function() { return this.$val.Close(); };
noBody.ptr.prototype.WriteTo = function(param) {
var $ptr, param;
return [new $Int64(0, 0), $ifaceNil];
};
noBody.prototype.WriteTo = function(param) { return this.$val.WriteTo(param); };
ProtocolError.ptr.prototype.Error = function() {
var $ptr, pe;
pe = this;
return pe.ErrorString;
};
ProtocolError.prototype.Error = function() { return this.$val.Error(); };
badStringError.ptr.prototype.Error = function() {
var $ptr, _r, e, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
e = this;
_r = fmt.Sprintf("%s %q", new sliceType([new $String(e.what), new $String(e.str)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: badStringError.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
};
badStringError.prototype.Error = function() { return this.$val.Error(); };
Request.ptr.prototype.Context = function() {
var $ptr, r;
r = this;
if (!($interfaceIsEqual(r.ctx, $ifaceNil))) {
return r.ctx;
}
return context.Background();
};
Request.prototype.Context = function() { return this.$val.Context(); };
Request.ptr.prototype.WithContext = function(ctx) {
var $ptr, ctx, r, r2;
r = this;
if ($interfaceIsEqual(ctx, $ifaceNil)) {
$panic(new $String("nil context"));
}
r2 = new Request.ptr("", ptrType$19.nil, "", 0, 0, false, $ifaceNil, $throwNilPointerError, new $Int64(0, 0), sliceType$1.nil, false, "", false, false, ptrType$20.nil, false, "", "", ptrType$17.nil, $chanNil, ptrType$16.nil, $ifaceNil);
Request.copy(r2, r);
r2.ctx = ctx;
return r2;
};
Request.prototype.WithContext = function(ctx) { return this.$val.WithContext(ctx); };
Request.ptr.prototype.ProtoAtLeast = function(major, minor) {
var $ptr, major, minor, r;
r = this;
return r.ProtoMajor > major || (r.ProtoMajor === major) && r.ProtoMinor >= minor;
};
Request.prototype.ProtoAtLeast = function(major, minor) { return this.$val.ProtoAtLeast(major, minor); };
Request.ptr.prototype.protoAtLeastOutgoing = function(major, minor) {
var $ptr, major, minor, r;
r = this;
if ((r.ProtoMajor === 0) && (r.ProtoMinor === 0) && (major === 1) && minor <= 1) {
return true;
}
return r.ProtoAtLeast(major, minor);
};
Request.prototype.protoAtLeastOutgoing = function(major, minor) { return this.$val.protoAtLeastOutgoing(major, minor); };
Request.ptr.prototype.UserAgent = function() {
var $ptr, r;
r = this;
return new Header(r.Header).Get("User-Agent");
};
Request.prototype.UserAgent = function() { return this.$val.UserAgent(); };
Request.ptr.prototype.Cookies = function() {
var $ptr, _r, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
_r = readCookies(r.Header, ""); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.Cookies }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
Request.prototype.Cookies = function() { return this.$val.Cookies(); };
Request.ptr.prototype.Cookie = function(name) {
var $ptr, _i, _r, _ref, c, name, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _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:
r = this;
_r = readCookies(r.Header, name); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_ref = _r;
_i = 0;
/* while (true) { */ case 2:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
$s = -1; return [c, $ifaceNil];
/* } */ $s = 2; continue; case 3:
$s = -1; return [ptrType$24.nil, $pkg.ErrNoCookie];
/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.Cookie }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.c = c; $f.name = name; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
Request.prototype.Cookie = function(name) { return this.$val.Cookie(name); };
Request.ptr.prototype.AddCookie = function(c) {
var $ptr, _arg, _arg$1, _r, _r$1, _r$2, c, c$1, r, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; 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:
r = this;
_r = sanitizeCookieName(c.Name); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_arg = new $String(_r);
_r$1 = sanitizeCookieValue(c.Value); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_arg$1 = new $String(_r$1);
_r$2 = fmt.Sprintf("%s=%s", new sliceType([_arg, _arg$1])); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
s = _r$2;
c$1 = new Header(r.Header).Get("Cookie");
if (!(c$1 === "")) {
new Header(r.Header).Set("Cookie", c$1 + "; " + s);
} else {
new Header(r.Header).Set("Cookie", s);
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.AddCookie }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.c = c; $f.c$1 = c$1; $f.r = r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
Request.prototype.AddCookie = function(c) { return this.$val.AddCookie(c); };
Request.ptr.prototype.Referer = function() {
var $ptr, r;
r = this;
return new Header(r.Header).Get("Referer");
};
Request.prototype.Referer = function() { return this.$val.Referer(); };
Request.ptr.prototype.MultipartReader = function() {
var $ptr, _r, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
if (r.MultipartForm === multipartByReader) {
$s = -1; return [ptrType$79.nil, errors.New("http: MultipartReader called twice")];
}
if (!(r.MultipartForm === ptrType$20.nil)) {
$s = -1; return [ptrType$79.nil, errors.New("http: multipart handled by ParseMultipartForm")];
}
r.MultipartForm = multipartByReader;
_r = r.multipartReader(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.MultipartReader }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
Request.prototype.MultipartReader = function() { return this.$val.MultipartReader(); };
Request.ptr.prototype.multipartReader = function() {
var $ptr, _entry, _r, _tuple, _tuple$1, boundary, d, err, ok, params, r, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _r = $f._r; _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:
r = this;
v = new Header(r.Header).Get("Content-Type");
if (v === "") {
$s = -1; return [ptrType$79.nil, $pkg.ErrNotMultipart];
}
_r = mime.ParseMediaType(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
d = _tuple[0];
params = _tuple[1];
err = _tuple[2];
if (!($interfaceIsEqual(err, $ifaceNil)) || !(d === "multipart/form-data")) {
$s = -1; return [ptrType$79.nil, $pkg.ErrNotMultipart];
}
_tuple$1 = (_entry = params[$String.keyFor("boundary")], _entry !== undefined ? [_entry.v, true] : ["", false]);
boundary = _tuple$1[0];
ok = _tuple$1[1];
if (!ok) {
$s = -1; return [ptrType$79.nil, $pkg.ErrMissingBoundary];
}
$s = -1; return [multipart.NewReader(r.Body, boundary), $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.multipartReader }; } $f.$ptr = $ptr; $f._entry = _entry; $f._r = _r; $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;
};
Request.prototype.multipartReader = function() { return this.$val.multipartReader(); };
Request.ptr.prototype.isH2Upgrade = function() {
var $ptr, r;
r = this;
return r.Method === "PRI" && ($keys(r.Header).length === 0) && r.URL.Path === "*" && r.Proto === "HTTP/2.0";
};
Request.prototype.isH2Upgrade = function() { return this.$val.isH2Upgrade(); };
valueOrDefault = function(value, def) {
var $ptr, def, value;
if (!(value === "")) {
return value;
}
return def;
};
Request.ptr.prototype.Write = function(w) {
var $ptr, _r, r, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
_r = r.write(w, false, false, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
Request.prototype.Write = function(w) { return this.$val.Write(w); };
Request.ptr.prototype.WriteProxy = function(w) {
var $ptr, _r, r, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
_r = r.write(w, true, false, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.WriteProxy }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
Request.prototype.WriteProxy = function(w) { return this.$val.WriteProxy(w); };
Request.ptr.prototype.write = function(w, usingProxy, extraHeaders, waitForContinue) {
var $ptr, _entry, _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, _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, req, ruri, trace, tw, userAgent, usingProxy, w, waitForContinue, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _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; _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; req = $f.req; ruri = $f.ruri; trace = $f.trace; tw = $f.tw; userAgent = $f.userAgent; usingProxy = $f.usingProxy; w = $f.w; waitForContinue = $f.waitForContinue; $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);
err = [err];
trace = [trace];
err[0] = $ifaceNil;
req = this;
_r = httptrace.ContextClientTrace(req.Context()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
trace[0] = _r;
/* */ if (!(trace[0] === ptrType$45.nil) && !(trace[0].WroteRequest === $throwNilPointerError)) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!(trace[0] === ptrType$45.nil) && !(trace[0].WroteRequest === $throwNilPointerError)) { */ case 2:
$deferred.push([(function(err, trace) { return function $b() {
var $ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
}; })(err, trace), []]);
/* } */ case 3:
_r$1 = cleanHost(req.Host); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
host = _r$1;
/* */ if (host === "") { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (host === "") { */ case 5:
if (req.URL === ptrType$19.nil) {
err[0] = errMissingHost;
$s = -1; return err[0];
}
_r$2 = cleanHost(req.URL.Host); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
host = _r$2;
/* } */ case 6:
host = removeZone(host);
ruri = req.URL.RequestURI();
if (usingProxy && !(req.URL.Scheme === "") && req.URL.Opaque === "") {
ruri = req.URL.Scheme + "://" + host + ruri;
} else if (req.Method === "CONNECT" && req.URL.Path === "") {
ruri = host;
}
bw = ptrType$10.nil;
_tuple = $assertType(w, io.ByteWriter, true);
ok = _tuple[1];
if (!ok) {
bw = bufio.NewWriter(w);
w = bw;
}
_r$3 = fmt.Fprintf(w, "%s %s HTTP/1.1\r\n", new sliceType([new $String(valueOrDefault(req.Method, "GET")), new $String(ruri)])); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$1 = _r$3;
err[0] = _tuple$1[1];
if (!($interfaceIsEqual(err[0], $ifaceNil))) {
err[0] = err[0];
$s = -1; return err[0];
}
_r$4 = fmt.Fprintf(w, "Host: %s\r\n", new sliceType([new $String(host)])); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_tuple$2 = _r$4;
err[0] = _tuple$2[1];
if (!($interfaceIsEqual(err[0], $ifaceNil))) {
err[0] = err[0];
$s = -1; return err[0];
}
userAgent = "Go-http-client/1.1";
_tuple$3 = (_entry = req.Header[$String.keyFor("User-Agent")], _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
ok$1 = _tuple$3[1];
if (ok$1) {
userAgent = new Header(req.Header).Get("User-Agent");
}
/* */ if (!(userAgent === "")) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (!(userAgent === "")) { */ case 10:
_r$5 = fmt.Fprintf(w, "User-Agent: %s\r\n", new sliceType([new $String(userAgent)])); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_tuple$4 = _r$5;
err[0] = _tuple$4[1];
if (!($interfaceIsEqual(err[0], $ifaceNil))) {
err[0] = err[0];
$s = -1; return err[0];
}
/* } */ case 11:
_r$6 = newTransferWriter(req); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_tuple$5 = _r$6;
tw = _tuple$5[0];
err[0] = _tuple$5[1];
if (!($interfaceIsEqual(err[0], $ifaceNil))) {
err[0] = err[0];
$s = -1; return err[0];
}
_r$7 = tw.WriteHeader(w); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
err[0] = _r$7;
if (!($interfaceIsEqual(err[0], $ifaceNil))) {
err[0] = err[0];
$s = -1; return err[0];
}
_r$8 = new Header(req.Header).WriteSubset(w, reqWriteExcludeHeader); /* */ $s = 15; case 15: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
err[0] = _r$8;
if (!($interfaceIsEqual(err[0], $ifaceNil))) {
err[0] = err[0];
$s = -1; return err[0];
}
/* */ if (!(extraHeaders === false)) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (!(extraHeaders === false)) { */ case 16:
_r$9 = new Header(extraHeaders).Write(w); /* */ $s = 18; case 18: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
err[0] = _r$9;
if (!($interfaceIsEqual(err[0], $ifaceNil))) {
err[0] = err[0];
$s = -1; return err[0];
}
/* } */ case 17:
_r$10 = io.WriteString(w, "\r\n"); /* */ $s = 19; case 19: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
_tuple$6 = _r$10;
err[0] = _tuple$6[1];
if (!($interfaceIsEqual(err[0], $ifaceNil))) {
err[0] = err[0];
$s = -1; return err[0];
}
/* */ if (!(trace[0] === ptrType$45.nil) && !(trace[0].WroteHeaders === $throwNilPointerError)) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if (!(trace[0] === ptrType$45.nil) && !(trace[0].WroteHeaders === $throwNilPointerError)) { */ case 20:
$r = trace[0].WroteHeaders(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 21:
/* */ if (!(waitForContinue === $throwNilPointerError)) { $s = 23; continue; }
/* */ $s = 24; continue;
/* if (!(waitForContinue === $throwNilPointerError)) { */ case 23:
_tuple$7 = $assertType(w, ptrType$10, true);
bw$1 = _tuple$7[0];
ok$2 = _tuple$7[1];
/* */ if (ok$2) { $s = 25; continue; }
/* */ $s = 26; continue;
/* if (ok$2) { */ case 25:
_r$11 = bw$1.Flush(); /* */ $s = 27; case 27: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
err[0] = _r$11;
if (!($interfaceIsEqual(err[0], $ifaceNil))) {
err[0] = err[0];
$s = -1; return err[0];
}
/* } */ case 26:
/* */ if (!(trace[0] === ptrType$45.nil) && !(trace[0].Wait100Continue === $throwNilPointerError)) { $s = 28; continue; }
/* */ $s = 29; continue;
/* if (!(trace[0] === ptrType$45.nil) && !(trace[0].Wait100Continue === $throwNilPointerError)) { */ case 28:
$r = trace[0].Wait100Continue(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 29:
_r$12 = waitForContinue(); /* */ $s = 33; case 33: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
/* */ if (!_r$12) { $s = 31; continue; }
/* */ $s = 32; continue;
/* if (!_r$12) { */ case 31:
$r = req.closeBody(); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
err[0] = $ifaceNil;
$s = -1; return err[0];
/* } */ case 32:
/* } */ case 24:
_tuple$8 = $assertType(w, ptrType$10, true);
bw$2 = _tuple$8[0];
ok$3 = _tuple$8[1];
/* */ if (ok$3 && tw.FlushHeaders) { $s = 35; continue; }
/* */ $s = 36; continue;
/* if (ok$3 && tw.FlushHeaders) { */ case 35:
_r$13 = bw$2.Flush(); /* */ $s = 37; case 37: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
err$1 = _r$13;
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
err[0] = err$1;
$s = -1; return err[0];
}
/* } */ case 36:
_r$14 = tw.WriteBody(w); /* */ $s = 38; case 38: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
err[0] = _r$14;
if (!($interfaceIsEqual(err[0], $ifaceNil))) {
err[0] = err[0];
$s = -1; return err[0];
}
/* */ if (!(bw === ptrType$10.nil)) { $s = 39; continue; }
/* */ $s = 40; continue;
/* if (!(bw === ptrType$10.nil)) { */ case 39:
_r$15 = bw.Flush(); /* */ $s = 41; case 41: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
err[0] = _r$15;
$s = -1; return err[0];
/* } */ case 40:
err[0] = $ifaceNil;
$s = -1; return err[0];
/* */ } 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.$ptr = $ptr; $f._entry = _entry; $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._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.req = req; $f.ruri = ruri; $f.trace = trace; $f.tw = tw; $f.userAgent = userAgent; $f.usingProxy = usingProxy; $f.w = w; $f.waitForContinue = waitForContinue; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Request.prototype.write = function(w, usingProxy, extraHeaders, waitForContinue) { return this.$val.write(w, usingProxy, extraHeaders, waitForContinue); };
idnaASCII = function(v) {
var $ptr, _r, _r$1, _r$2, _r$3, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
if (isASCII(v)) {
$s = -1; return [v, $ifaceNil];
}
_r = strings.ToLower(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
v = _r;
_r$1 = $clone(width.Fold, width.Transformer).String(v); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
v = _r$1;
_r$2 = new norm.Form(0).String(v); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
v = _r$2;
_r$3 = idna.ToASCII(v); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
$s = -1; return _r$3;
/* */ } return; } if ($f === undefined) { $f = { $blk: idnaASCII }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
cleanHost = function(in$1) {
var $ptr, _r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, a, a$1, err, err$1, host, i, in$1, port, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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:
i = strings.IndexAny(in$1, " /");
if (!((i === -1))) {
in$1 = $substring(in$1, 0, i);
}
_r = net.SplitHostPort(in$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
host = _tuple[0];
port = _tuple[1];
err = _tuple[2];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
_r$1 = idnaASCII(in$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple$1 = _r$1;
a = _tuple$1[0];
err$1 = _tuple$1[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return in$1;
}
$s = -1; return a;
/* } */ case 3:
_r$2 = idnaASCII(host); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$2 = _r$2;
a$1 = _tuple$2[0];
err = _tuple$2[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return in$1;
}
$s = -1; return net.JoinHostPort(a$1, port);
/* */ } return; } if ($f === undefined) { $f = { $blk: cleanHost }; } $f.$ptr = $ptr; $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.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;
};
removeZone = function(host) {
var $ptr, host, i, j;
if (!strings.HasPrefix(host, "[")) {
return host;
}
i = strings.LastIndex(host, "]");
if (i < 0) {
return host;
}
j = strings.LastIndex($substring(host, 0, i), "%");
if (j < 0) {
return host;
}
return $substring(host, 0, j) + $substring(host, i);
};
ParseHTTPVersion = function(vers) {
var $ptr, _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;
major = 0;
minor = 0;
ok = false;
_1 = vers;
if (_1 === ("HTTP/1.1")) {
_tmp = 1;
_tmp$1 = 1;
_tmp$2 = true;
major = _tmp;
minor = _tmp$1;
ok = _tmp$2;
return [major, minor, ok];
} else if (_1 === ("HTTP/1.0")) {
_tmp$3 = 1;
_tmp$4 = 0;
_tmp$5 = true;
major = _tmp$3;
minor = _tmp$4;
ok = _tmp$5;
return [major, minor, ok];
}
if (!strings.HasPrefix(vers, "HTTP/")) {
_tmp$6 = 0;
_tmp$7 = 0;
_tmp$8 = false;
major = _tmp$6;
minor = _tmp$7;
ok = _tmp$8;
return [major, minor, ok];
}
dot = strings.Index(vers, ".");
if (dot < 0) {
_tmp$9 = 0;
_tmp$10 = 0;
_tmp$11 = false;
major = _tmp$9;
minor = _tmp$10;
ok = _tmp$11;
return [major, minor, ok];
}
_tuple = strconv.Atoi($substring(vers, 5, dot));
major = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil)) || major < 0 || major > 1000000) {
_tmp$12 = 0;
_tmp$13 = 0;
_tmp$14 = false;
major = _tmp$12;
minor = _tmp$13;
ok = _tmp$14;
return [major, minor, ok];
}
_tuple$1 = strconv.Atoi($substring(vers, (dot + 1 >> 0)));
minor = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil)) || minor < 0 || minor > 1000000) {
_tmp$15 = 0;
_tmp$16 = 0;
_tmp$17 = false;
major = _tmp$15;
minor = _tmp$16;
ok = _tmp$17;
return [major, minor, ok];
}
_tmp$18 = major;
_tmp$19 = minor;
_tmp$20 = true;
major = _tmp$18;
minor = _tmp$19;
ok = _tmp$20;
return [major, minor, ok];
};
$pkg.ParseHTTPVersion = ParseHTTPVersion;
validMethod = function(method) {
var $ptr, _r, _v, method, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _v = $f._v; method = $f.method; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
if (!(method.length > 0)) { _v = false; $s = 1; continue s; }
_r = strings.IndexFunc(method, isNotToken); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_v = _r === -1; case 1:
$s = -1; return _v;
/* */ } return; } if ($f === undefined) { $f = { $blk: validMethod }; } $f.$ptr = $ptr; $f._r = _r; $f._v = _v; $f.method = method; $f.$s = $s; $f.$r = $r; return $f;
};
NewRequest = function(method, urlStr, body$1) {
var $ptr, _r, _r$1, _r$2, _ref, _tuple, _tuple$1, body$1, buf, err, method, ok, rc, req, snapshot, snapshot$1, u, urlStr, v, v$1, v$2, v$3, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _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; urlStr = $f.urlStr; v = $f.v; v$1 = $f.v$1; v$2 = $f.v$2; v$3 = $f.v$3; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
buf = [buf];
snapshot = [snapshot];
snapshot$1 = [snapshot$1];
if (method === "") {
method = "GET";
}
_r = validMethod(method); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (!_r) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!_r) { */ case 1:
_r$1 = fmt.Errorf("net/http: invalid method %q", new sliceType([new $String(method)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return [ptrType$7.nil, _r$1];
/* } */ case 2:
_r$2 = url.Parse(urlStr); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple = _r$2;
u = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$7.nil, err];
}
_tuple$1 = $assertType(body$1, io.ReadCloser, true);
rc = _tuple$1[0];
ok = _tuple$1[1];
if (!ok && !($interfaceIsEqual(body$1, $ifaceNil))) {
rc = ioutil.NopCloser(body$1);
}
u.Host = removeEmptyPort(u.Host);
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$20.nil, false, "", "", ptrType$17.nil, $chanNil, ptrType$16.nil, $ifaceNil);
if (!($interfaceIsEqual(body$1, $ifaceNil))) {
_ref = body$1;
if ($assertType(_ref, ptrType$34, true)[1]) {
v = _ref.$val;
req.ContentLength = (new $Int64(0, v.Len()));
buf[0] = v.Bytes();
req.GetBody = (function(buf, snapshot, snapshot$1) { return function() {
var $ptr, r;
r = bytes.NewReader(buf[0]);
return [ioutil.NopCloser(r), $ifaceNil];
}; })(buf, snapshot, snapshot$1);
} else if ($assertType(_ref, ptrType$80, true)[1]) {
v$1 = _ref.$val;
req.ContentLength = (new $Int64(0, v$1.Len()));
snapshot$1[0] = $clone(v$1, bytes.Reader);
req.GetBody = (function(buf, snapshot, snapshot$1) { return function() {
var $ptr, r;
r = $clone(snapshot$1[0], bytes.Reader);
return [ioutil.NopCloser(r), $ifaceNil];
}; })(buf, snapshot, snapshot$1);
} else if ($assertType(_ref, ptrType$81, true)[1]) {
v$2 = _ref.$val;
req.ContentLength = (new $Int64(0, v$2.Len()));
snapshot[0] = $clone(v$2, strings.Reader);
req.GetBody = (function(buf, snapshot, snapshot$1) { return function() {
var $ptr, r;
r = $clone(snapshot[0], strings.Reader);
return [ioutil.NopCloser(r), $ifaceNil];
}; })(buf, snapshot, snapshot$1);
} else {
v$3 = _ref;
}
if (!(req.GetBody === $throwNilPointerError) && (x$3 = req.ContentLength, (x$3.$high === 0 && x$3.$low === 0))) {
req.Body = new $pkg.NoBody.constructor.elem($pkg.NoBody);
req.GetBody = (function(buf, snapshot, snapshot$1) { return function() {
var $ptr;
return [new $pkg.NoBody.constructor.elem($pkg.NoBody), $ifaceNil];
}; })(buf, snapshot, snapshot$1);
}
}
$s = -1; return [req, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: NewRequest }; } $f.$ptr = $ptr; $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.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.urlStr = urlStr; $f.v = v; $f.v$1 = v$1; $f.v$2 = v$2; $f.v$3 = v$3; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.NewRequest = NewRequest;
Request.ptr.prototype.BasicAuth = function() {
var $ptr, _tuple, auth, ok, password, r, username;
username = "";
password = "";
ok = false;
r = this;
auth = new Header(r.Header).Get("Authorization");
if (auth === "") {
return [username, password, ok];
}
_tuple = parseBasicAuth(auth);
username = _tuple[0];
password = _tuple[1];
ok = _tuple[2];
return [username, password, ok];
};
Request.prototype.BasicAuth = function() { return this.$val.BasicAuth(); };
parseBasicAuth = function(auth) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tuple, auth, c, cs, err, ok, password, s, username;
username = "";
password = "";
ok = false;
if (!strings.HasPrefix(auth, "Basic ")) {
return [username, password, ok];
}
_tuple = base64.StdEncoding.DecodeString($substring(auth, 6));
c = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
return [username, password, ok];
}
cs = ($bytesToString(c));
s = strings.IndexByte(cs, 58);
if (s < 0) {
return [username, password, ok];
}
_tmp = $substring(cs, 0, s);
_tmp$1 = $substring(cs, (s + 1 >> 0));
_tmp$2 = true;
username = _tmp;
password = _tmp$1;
ok = _tmp$2;
return [username, password, ok];
};
Request.ptr.prototype.SetBasicAuth = function(username, password) {
var $ptr, password, r, username;
r = this;
new Header(r.Header).Set("Authorization", "Basic " + basicAuth(username, password));
};
Request.prototype.SetBasicAuth = function(username, password) { return this.$val.SetBasicAuth(username, password); };
parseRequestLine = function(line) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, line, method, ok, proto, requestURI, s1, s2;
method = "";
requestURI = "";
proto = "";
ok = false;
s1 = strings.Index(line, " ");
s2 = strings.Index($substring(line, (s1 + 1 >> 0)), " ");
if (s1 < 0 || s2 < 0) {
return [method, requestURI, proto, ok];
}
s2 = s2 + ((s1 + 1 >> 0)) >> 0;
_tmp = $substring(line, 0, s1);
_tmp$1 = $substring(line, (s1 + 1 >> 0), s2);
_tmp$2 = $substring(line, (s2 + 1 >> 0));
_tmp$3 = true;
method = _tmp;
requestURI = _tmp$1;
proto = _tmp$2;
ok = _tmp$3;
return [method, requestURI, proto, ok];
};
newTextprotoReader = function(br) {
var $ptr, _r, br, tr, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; br = $f.br; tr = $f.tr; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = textprotoReaderPool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
v = _r;
if (!($interfaceIsEqual(v, $ifaceNil))) {
tr = $assertType(v, ptrType$82);
tr.R = br;
$s = -1; return tr;
}
$s = -1; return textproto.NewReader(br);
/* */ } return; } if ($f === undefined) { $f = { $blk: newTextprotoReader }; } $f.$ptr = $ptr; $f._r = _r; $f.br = br; $f.tr = tr; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
putTextprotoReader = function(r) {
var $ptr, r;
r.R = ptrType$68.nil;
textprotoReaderPool.Put(r);
};
readRequest = function(b, deleteHostHeader) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _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, b, deleteHostHeader, err, justAuthority, mimeHeader, ok, rawurl, req, s, tp, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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$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);
err = [err];
tp = [tp];
req = ptrType$7.nil;
err[0] = $ifaceNil;
_r = newTextprotoReader(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
tp[0] = _r;
req = new Request.ptr("", ptrType$19.nil, "", 0, 0, false, $ifaceNil, $throwNilPointerError, new $Int64(0, 0), sliceType$1.nil, false, "", false, false, ptrType$20.nil, false, "", "", ptrType$17.nil, $chanNil, ptrType$16.nil, $ifaceNil);
s = "";
_r$1 = tp[0].ReadLine(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
s = _tuple[0];
err[0] = _tuple[1];
if (!($interfaceIsEqual(err[0], $ifaceNil))) {
_tmp = ptrType$7.nil;
_tmp$1 = err[0];
req = _tmp;
err[0] = _tmp$1;
$s = -1; return [req, err[0]];
}
$deferred.push([(function(err, tp) { return function() {
var $ptr;
putTextprotoReader(tp[0]);
if ($interfaceIsEqual(err[0], io.EOF)) {
err[0] = io.ErrUnexpectedEOF;
}
}; })(err, tp), []]);
ok = false;
_tuple$1 = parseRequestLine(s);
req.Method = _tuple$1[0];
req.RequestURI = _tuple$1[1];
req.Proto = _tuple$1[2];
ok = _tuple$1[3];
if (!ok) {
_tmp$2 = ptrType$7.nil;
_tmp$3 = new badStringError.ptr("malformed HTTP request", s);
req = _tmp$2;
err[0] = _tmp$3;
$s = -1; return [req, err[0]];
}
rawurl = req.RequestURI;
_tuple$2 = ParseHTTPVersion(req.Proto);
req.ProtoMajor = _tuple$2[0];
req.ProtoMinor = _tuple$2[1];
ok = _tuple$2[2];
if (!ok) {
_tmp$4 = ptrType$7.nil;
_tmp$5 = new badStringError.ptr("malformed HTTP version", req.Proto);
req = _tmp$4;
err[0] = _tmp$5;
$s = -1; return [req, err[0]];
}
justAuthority = req.Method === "CONNECT" && !strings.HasPrefix(rawurl, "/");
if (justAuthority) {
rawurl = "http://" + rawurl;
}
_r$2 = url.ParseRequestURI(rawurl); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$3 = _r$2;
req.URL = _tuple$3[0];
err[0] = _tuple$3[1];
if (!($interfaceIsEqual(err[0], $ifaceNil))) {
_tmp$6 = ptrType$7.nil;
_tmp$7 = err[0];
req = _tmp$6;
err[0] = _tmp$7;
$s = -1; return [req, err[0]];
}
if (justAuthority) {
req.URL.Scheme = "";
}
_r$3 = tp[0].ReadMIMEHeader(); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$4 = _r$3;
mimeHeader = _tuple$4[0];
err[0] = _tuple$4[1];
if (!($interfaceIsEqual(err[0], $ifaceNil))) {
_tmp$8 = ptrType$7.nil;
_tmp$9 = err[0];
req = _tmp$8;
err[0] = _tmp$9;
$s = -1; return [req, err[0]];
}
req.Header = (mimeHeader);
req.Host = req.URL.Host;
if (req.Host === "") {
req.Host = new Header(req.Header).get("Host");
}
if (deleteHostHeader) {
delete req.Header[$String.keyFor("Host")];
}
fixPragmaCacheControl(req.Header);
req.Close = shouldClose(req.ProtoMajor, req.ProtoMinor, req.Header, false);
_r$4 = readTransfer(req, b); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
err[0] = _r$4;
if (!($interfaceIsEqual(err[0], $ifaceNil))) {
_tmp$10 = ptrType$7.nil;
_tmp$11 = err[0];
req = _tmp$10;
err[0] = _tmp$11;
$s = -1; return [req, err[0]];
}
if (req.isH2Upgrade()) {
req.ContentLength = new $Int64(-1, 4294967295);
req.Close = true;
}
_tmp$12 = req;
_tmp$13 = $ifaceNil;
req = _tmp$12;
err[0] = _tmp$13;
$s = -1; return [req, err[0]];
/* */ } 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.$ptr = $ptr; $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$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; } }
};
MaxBytesReader = function(w, r, n) {
var $ptr, n, r, w;
return new maxBytesReader.ptr(w, r, n, $ifaceNil);
};
$pkg.MaxBytesReader = MaxBytesReader;
maxBytesReader.ptr.prototype.Read = function(p) {
var $ptr, _r, _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$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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$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:
n = 0;
err = $ifaceNil;
l = this;
if (!($interfaceIsEqual(l.err, $ifaceNil))) {
_tmp = 0;
_tmp$1 = l.err;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
if (p.$length === 0) {
_tmp$2 = 0;
_tmp$3 = $ifaceNil;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
}
if ((x$3 = (new $Int64(0, p.$length)), x$4 = (x$5 = l.n, new $Int64(x$5.$high + 0, x$5.$low + 1)), (x$3.$high > x$4.$high || (x$3.$high === x$4.$high && x$3.$low > x$4.$low)))) {
p = $subslice(p, 0, $flatten64((x$6 = l.n, new $Int64(x$6.$high + 0, x$6.$low + 1))));
}
_r = l.r.Read(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
if ((x$7 = (new $Int64(0, n)), x$8 = l.n, (x$7.$high < x$8.$high || (x$7.$high === x$8.$high && x$7.$low <= x$8.$low)))) {
l.n = (x$9 = l.n, x$10 = (new $Int64(0, n)), new $Int64(x$9.$high - x$10.$high, x$9.$low - x$10.$low));
l.err = err;
_tmp$4 = n;
_tmp$5 = err;
n = _tmp$4;
err = _tmp$5;
$s = -1; return [n, err];
}
n = (((x$11 = l.n, x$11.$low + ((x$11.$high >> 31) * 4294967296)) >> 0));
l.n = new $Int64(0, 0);
_tuple$1 = $assertType(l.w, requestTooLarger, true);
res = _tuple$1[0];
ok = _tuple$1[1];
/* */ if (ok) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (ok) { */ case 2:
$r = res.requestTooLarge(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 3:
l.err = errors.New("http: request body too large");
_tmp$6 = n;
_tmp$7 = l.err;
n = _tmp$6;
err = _tmp$7;
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: maxBytesReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $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.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$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;
};
maxBytesReader.prototype.Read = function(p) { return this.$val.Read(p); };
maxBytesReader.ptr.prototype.Close = function() {
var $ptr, _r, l, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; l = $f.l; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
l = this;
_r = l.r.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: maxBytesReader.ptr.prototype.Close }; } $f.$ptr = $ptr; $f._r = _r; $f.l = l; $f.$s = $s; $f.$r = $r; return $f;
};
maxBytesReader.prototype.Close = function() { return this.$val.Close(); };
copyValues = function(dst, src) {
var $ptr, _entry, _i, _i$1, _keys, _ref, _ref$1, dst, k, src, value, vs;
_ref = src;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
continue;
}
k = _entry.k;
vs = _entry.v;
_ref$1 = vs;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
value = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
new url.Values(dst).Add(k, value);
_i$1++;
}
_i++;
}
};
parsePostForm = function(r) {
var $ptr, _r, _r$1, _tuple, _tuple$1, _tuple$2, _tuple$3, b, ct, e, err, maxFormSize, ok, r, reader, vs, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
vs = false;
err = $ifaceNil;
if ($interfaceIsEqual(r.Body, $ifaceNil)) {
err = errors.New("missing form body");
$s = -1; return [vs, err];
}
ct = new Header(r.Header).Get("Content-Type");
if (ct === "") {
ct = "application/octet-stream";
}
_r = mime.ParseMediaType(ct); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
ct = _tuple[0];
err = _tuple[2];
/* */ if (ct === "application/x-www-form-urlencoded") { $s = 3; continue; }
/* */ if (ct === "multipart/form-data") { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (ct === "application/x-www-form-urlencoded") { */ case 3:
reader = r.Body;
maxFormSize = new $Int64(2147483647, 4294967295);
_tuple$1 = $assertType(r.Body, ptrType$83, true);
ok = _tuple$1[1];
if (!ok) {
maxFormSize = new $Int64(0, 10485760);
reader = io.LimitReader(r.Body, new $Int64(maxFormSize.$high + 0, maxFormSize.$low + 1));
}
_r$1 = ioutil.ReadAll(reader); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple$2 = _r$1;
b = _tuple$2[0];
e = _tuple$2[1];
if (!($interfaceIsEqual(e, $ifaceNil))) {
if ($interfaceIsEqual(err, $ifaceNil)) {
err = e;
}
/* break; */ $s = 2; continue;
}
if ((x$3 = (new $Int64(0, b.$length)), (x$3.$high > maxFormSize.$high || (x$3.$high === maxFormSize.$high && x$3.$low > maxFormSize.$low)))) {
err = errors.New("http: POST too large");
$s = -1; return [vs, err];
}
_tuple$3 = url.ParseQuery(($bytesToString(b)));
vs = _tuple$3[0];
e = _tuple$3[1];
if ($interfaceIsEqual(err, $ifaceNil)) {
err = e;
}
$s = 5; continue;
/* } else if (ct === "multipart/form-data") { */ case 4:
/* } */ case 5:
case 2:
$s = -1; return [vs, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: parsePostForm }; } $f.$ptr = $ptr; $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.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$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
};
Request.ptr.prototype.ParseForm = function() {
var $ptr, _r, _tuple, _tuple$1, e, err, newValues, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
r = this;
err = $ifaceNil;
/* */ if (r.PostForm === false) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (r.PostForm === false) { */ case 1:
/* */ if (r.Method === "POST" || r.Method === "PUT" || r.Method === "PATCH") { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (r.Method === "POST" || r.Method === "PUT" || r.Method === "PATCH") { */ case 3:
_r = parsePostForm(r); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
r.PostForm = _tuple[0];
err = _tuple[1];
/* } */ case 4:
if (r.PostForm === false) {
r.PostForm = {};
}
/* } */ case 2:
if (r.Form === false) {
if ($keys(r.PostForm).length > 0) {
r.Form = {};
copyValues(r.Form, r.PostForm);
}
newValues = false;
if (!(r.URL === ptrType$19.nil)) {
e = $ifaceNil;
_tuple$1 = url.ParseQuery(r.URL.RawQuery);
newValues = _tuple$1[0];
e = _tuple$1[1];
if ($interfaceIsEqual(err, $ifaceNil)) {
err = e;
}
}
if (newValues === false) {
newValues = {};
}
if (r.Form === false) {
r.Form = newValues;
} else {
copyValues(r.Form, newValues);
}
}
$s = -1; return err;
/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.ParseForm }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
Request.prototype.ParseForm = function() { return this.$val.ParseForm(); };
Request.ptr.prototype.ParseMultipartForm = function(maxMemory) {
var $ptr, _entry, _entry$1, _entry$2, _i, _key, _key$1, _keys, _r, _r$1, _r$2, _ref, _tuple, _tuple$1, err, err$1, f, k, maxMemory, mr, r, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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 = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _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:
r = this;
if (r.MultipartForm === multipartByReader) {
$s = -1; return errors.New("http: multipart handled by MultipartReader");
}
/* */ if (r.Form === false) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (r.Form === false) { */ case 1:
_r = r.ParseForm(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
/* } */ case 2:
if (!(r.MultipartForm === ptrType$20.nil)) {
$s = -1; return $ifaceNil;
}
_r$1 = r.multipartReader(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
mr = _tuple[0];
err$1 = _tuple[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return err$1;
}
_r$2 = mr.ReadForm(maxMemory); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$1 = _r$2;
f = _tuple$1[0];
err$1 = _tuple$1[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return err$1;
}
if (r.PostForm === false) {
r.PostForm = {};
}
_ref = f.Value;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
continue;
}
k = _entry.k;
v = _entry.v;
_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) };
_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) };
_i++;
}
r.MultipartForm = f;
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.ParseMultipartForm }; } $f.$ptr = $ptr; $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 = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $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;
};
Request.prototype.ParseMultipartForm = function(maxMemory) { return this.$val.ParseMultipartForm(maxMemory); };
Request.ptr.prototype.FormValue = function(key) {
var $ptr, _entry, _r, key, r, vs, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _r = $f._r; key = $f.key; r = $f.r; vs = $f.vs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
/* */ if (r.Form === false) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (r.Form === false) { */ case 1:
_r = r.ParseMultipartForm(new $Int64(0, 33554432)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
/* } */ case 2:
vs = (_entry = r.Form[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$1.nil);
if (vs.$length > 0) {
$s = -1; return (0 >= vs.$length ? ($throwRuntimeError("index out of range"), undefined) : vs.$array[vs.$offset + 0]);
}
$s = -1; return "";
/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.FormValue }; } $f.$ptr = $ptr; $f._entry = _entry; $f._r = _r; $f.key = key; $f.r = r; $f.vs = vs; $f.$s = $s; $f.$r = $r; return $f;
};
Request.prototype.FormValue = function(key) { return this.$val.FormValue(key); };
Request.ptr.prototype.PostFormValue = function(key) {
var $ptr, _entry, _r, key, r, vs, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _r = $f._r; key = $f.key; r = $f.r; vs = $f.vs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
/* */ if (r.PostForm === false) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (r.PostForm === false) { */ case 1:
_r = r.ParseMultipartForm(new $Int64(0, 33554432)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
/* } */ case 2:
vs = (_entry = r.PostForm[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$1.nil);
if (vs.$length > 0) {
$s = -1; return (0 >= vs.$length ? ($throwRuntimeError("index out of range"), undefined) : vs.$array[vs.$offset + 0]);
}
$s = -1; return "";
/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.PostFormValue }; } $f.$ptr = $ptr; $f._entry = _entry; $f._r = _r; $f.key = key; $f.r = r; $f.vs = vs; $f.$s = $s; $f.$r = $r; return $f;
};
Request.prototype.PostFormValue = function(key) { return this.$val.PostFormValue(key); };
Request.ptr.prototype.FormFile = function(key) {
var $ptr, _entry, _r, _tuple, err, err$1, f, fhs, key, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _r = $f._r; _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:
r = this;
if (r.MultipartForm === multipartByReader) {
$s = -1; return [$ifaceNil, ptrType$84.nil, errors.New("http: multipart handled by MultipartReader")];
}
/* */ if (r.MultipartForm === ptrType$20.nil) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (r.MultipartForm === ptrType$20.nil) { */ case 1:
_r = r.ParseMultipartForm(new $Int64(0, 33554432)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [$ifaceNil, ptrType$84.nil, err];
}
/* } */ case 2:
if (!(r.MultipartForm === ptrType$20.nil) && !(r.MultipartForm.File === false)) {
fhs = (_entry = r.MultipartForm.File[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$20.nil);
if (fhs.$length > 0) {
_tuple = (0 >= fhs.$length ? ($throwRuntimeError("index out of range"), undefined) : fhs.$array[fhs.$offset + 0]).Open();
f = _tuple[0];
err$1 = _tuple[1];
$s = -1; return [f, (0 >= fhs.$length ? ($throwRuntimeError("index out of range"), undefined) : fhs.$array[fhs.$offset + 0]), err$1];
}
}
$s = -1; return [$ifaceNil, ptrType$84.nil, $pkg.ErrMissingFile];
/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.FormFile }; } $f.$ptr = $ptr; $f._entry = _entry; $f._r = _r; $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;
};
Request.prototype.FormFile = function(key) { return this.$val.FormFile(key); };
Request.ptr.prototype.expectsContinue = function() {
var $ptr, r;
r = this;
return hasToken(new Header(r.Header).get("Expect"), "100-continue");
};
Request.prototype.expectsContinue = function() { return this.$val.expectsContinue(); };
Request.ptr.prototype.wantsHttp10KeepAlive = function() {
var $ptr, r;
r = this;
if (!((r.ProtoMajor === 1)) || !((r.ProtoMinor === 0))) {
return false;
}
return hasToken(new Header(r.Header).get("Connection"), "keep-alive");
};
Request.prototype.wantsHttp10KeepAlive = function() { return this.$val.wantsHttp10KeepAlive(); };
Request.ptr.prototype.wantsClose = function() {
var $ptr, r;
r = this;
return hasToken(new Header(r.Header).get("Connection"), "close");
};
Request.prototype.wantsClose = function() { return this.$val.wantsClose(); };
Request.ptr.prototype.closeBody = function() {
var $ptr, _r, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
/* */ if (!($interfaceIsEqual(r.Body, $ifaceNil))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!($interfaceIsEqual(r.Body, $ifaceNil))) { */ case 1:
_r = r.Body.Close(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
/* } */ case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.closeBody }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
Request.prototype.closeBody = function() { return this.$val.closeBody(); };
Request.ptr.prototype.isReplayable = function() {
var $ptr, _1, r;
r = this;
if ($interfaceIsEqual(r.Body, $ifaceNil)) {
_1 = valueOrDefault(r.Method, "GET");
if (_1 === ("GET") || _1 === ("HEAD") || _1 === ("OPTIONS") || _1 === ("TRACE")) {
return true;
}
}
return false;
};
Request.prototype.isReplayable = function() { return this.$val.isReplayable(); };
Request.ptr.prototype.outgoingLength = function() {
var $ptr, r, x$3;
r = this;
if ($interfaceIsEqual(r.Body, $ifaceNil) || $interfaceIsEqual(r.Body, new $pkg.NoBody.constructor.elem($pkg.NoBody))) {
return new $Int64(0, 0);
}
if (!((x$3 = r.ContentLength, (x$3.$high === 0 && x$3.$low === 0)))) {
return r.ContentLength;
}
return new $Int64(-1, 4294967295);
};
Request.prototype.outgoingLength = function() { return this.$val.outgoingLength(); };
requestMethodUsuallyLacksBody = function(method) {
var $ptr, _1, method;
_1 = method;
if (_1 === ("GET") || _1 === ("HEAD") || _1 === ("DELETE") || _1 === ("OPTIONS") || _1 === ("PROPFIND") || _1 === ("SEARCH")) {
return true;
}
return false;
};
Response.ptr.prototype.Cookies = function() {
var $ptr, _r, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
_r = readSetCookies(r.Header); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Response.ptr.prototype.Cookies }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
Response.prototype.Cookies = function() { return this.$val.Cookies(); };
Response.ptr.prototype.Location = function() {
var $ptr, _r, _r$1, lv, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; lv = $f.lv; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
r = this;
lv = new Header(r.Header).Get("Location");
if (lv === "") {
$s = -1; return [ptrType$19.nil, $pkg.ErrNoLocation];
}
/* */ if (!(r.Request === ptrType$7.nil) && !(r.Request.URL === ptrType$19.nil)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(r.Request === ptrType$7.nil) && !(r.Request.URL === ptrType$19.nil)) { */ case 1:
_r = r.Request.URL.Parse(lv); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 2:
_r$1 = url.Parse(lv); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: Response.ptr.prototype.Location }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.lv = lv; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
Response.prototype.Location = function() { return this.$val.Location(); };
ReadResponse = function(r, req) {
var $ptr, _r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, _tuple$3, err, f, line, mimeHeader, ok, r, reasonPhrase, req, resp, tp, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; err = $f.err; f = $f.f; line = $f.line; mimeHeader = $f.mimeHeader; ok = $f.ok; r = $f.r; reasonPhrase = $f.reasonPhrase; req = $f.req; resp = $f.resp; tp = $f.tp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
tp = textproto.NewReader(r);
resp = new Response.ptr("", 0, "", 0, 0, false, $ifaceNil, new $Int64(0, 0), sliceType$1.nil, false, false, false, req, ptrType$17.nil);
_r = tp.ReadLine(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
line = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
if ($interfaceIsEqual(err, io.EOF)) {
err = io.ErrUnexpectedEOF;
}
$s = -1; return [ptrType$16.nil, err];
}
f = strings.SplitN(line, " ", 3);
if (f.$length < 2) {
$s = -1; return [ptrType$16.nil, new badStringError.ptr("malformed HTTP response", line)];
}
reasonPhrase = "";
if (f.$length > 2) {
reasonPhrase = (2 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 2]);
}
if (!(((1 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 1]).length === 3))) {
$s = -1; return [ptrType$16.nil, new badStringError.ptr("malformed HTTP status code", (1 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 1]))];
}
_tuple$1 = strconv.Atoi((1 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 1]));
resp.StatusCode = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil)) || resp.StatusCode < 0) {
$s = -1; return [ptrType$16.nil, new badStringError.ptr("malformed HTTP status code", (1 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 1]))];
}
resp.Status = (1 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 1]) + " " + reasonPhrase;
resp.Proto = (0 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 0]);
ok = false;
_tuple$2 = ParseHTTPVersion(resp.Proto);
resp.ProtoMajor = _tuple$2[0];
resp.ProtoMinor = _tuple$2[1];
ok = _tuple$2[2];
if (!ok) {
$s = -1; return [ptrType$16.nil, new badStringError.ptr("malformed HTTP version", resp.Proto)];
}
_r$1 = tp.ReadMIMEHeader(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple$3 = _r$1;
mimeHeader = _tuple$3[0];
err = _tuple$3[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
if ($interfaceIsEqual(err, io.EOF)) {
err = io.ErrUnexpectedEOF;
}
$s = -1; return [ptrType$16.nil, err];
}
resp.Header = (mimeHeader);
fixPragmaCacheControl(resp.Header);
_r$2 = readTransfer(resp, r); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
err = _r$2;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$16.nil, err];
}
$s = -1; return [resp, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: ReadResponse }; } $f.$ptr = $ptr; $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.err = err; $f.f = f; $f.line = line; $f.mimeHeader = mimeHeader; $f.ok = ok; $f.r = r; $f.reasonPhrase = reasonPhrase; $f.req = req; $f.resp = resp; $f.tp = tp; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.ReadResponse = ReadResponse;
fixPragmaCacheControl = function(header) {
var $ptr, _entry, _entry$1, _key, _tuple, _tuple$1, header, hp, ok, presentcc;
_tuple = (_entry = header[$String.keyFor("Pragma")], _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
hp = _tuple[0];
ok = _tuple[1];
if (ok && hp.$length > 0 && (0 >= hp.$length ? ($throwRuntimeError("index out of range"), undefined) : hp.$array[hp.$offset + 0]) === "no-cache") {
_tuple$1 = (_entry$1 = header[$String.keyFor("Cache-Control")], _entry$1 !== undefined ? [_entry$1.v, true] : [sliceType$1.nil, false]);
presentcc = _tuple$1[1];
if (!presentcc) {
_key = "Cache-Control"; (header || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: new sliceType$1(["no-cache"]) };
}
}
};
Response.ptr.prototype.ProtoAtLeast = function(major, minor) {
var $ptr, major, minor, r;
r = this;
return r.ProtoMajor > major || (r.ProtoMajor === major) && r.ProtoMinor >= minor;
};
Response.prototype.ProtoAtLeast = function(major, minor) { return this.$val.ProtoAtLeast(major, minor); };
Response.ptr.prototype.Write = function(w) {
var $ptr, _entry, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _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$3, x$4, x$5, x$6, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _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; _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$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:
r = this;
text = r.Status;
if (text === "") {
ok = false;
_tuple = (_entry = statusText[$Int.keyFor(r.StatusCode)], _entry !== undefined ? [_entry.v, true] : ["", false]);
text = _tuple[0];
ok = _tuple[1];
if (!ok) {
text = "status code " + strconv.Itoa(r.StatusCode);
}
} else {
text = strings.TrimPrefix(text, strconv.Itoa(r.StatusCode) + " ");
}
_r = 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 = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
r1 = new Response.ptr("", 0, "", 0, 0, false, $ifaceNil, new $Int64(0, 0), sliceType$1.nil, false, false, false, ptrType$7.nil, ptrType$17.nil);
Response.copy(r1, r);
/* */ if ((x$3 = r1.ContentLength, (x$3.$high === 0 && x$3.$low === 0)) && !($interfaceIsEqual(r1.Body, $ifaceNil))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if ((x$3 = r1.ContentLength, (x$3.$high === 0 && x$3.$low === 0)) && !($interfaceIsEqual(r1.Body, $ifaceNil))) { */ case 2:
buf = arrayType$5.zero();
_r$1 = r1.Body.Read(new sliceType$2(buf)); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple$2 = _r$1;
n = _tuple$2[0];
err$1 = _tuple$2[1];
if (!($interfaceIsEqual(err$1, $ifaceNil)) && !($interfaceIsEqual(err$1, io.EOF))) {
$s = -1; return err$1;
}
if (n === 0) {
r1.Body = new $pkg.NoBody.constructor.elem($pkg.NoBody);
} else {
r1.ContentLength = new $Int64(-1, 4294967295);
r1.Body = (x$4 = new structType$1.ptr(io.MultiReader(new sliceType$21([bytes.NewReader($subslice(new sliceType$2(buf), 0, 1)), r.Body])), r.Body), new x$4.constructor.elem(x$4));
}
/* } */ case 3:
if ((x$5 = r1.ContentLength, (x$5.$high === -1 && x$5.$low === 4294967295)) && !r1.Close && r1.ProtoAtLeast(1, 1) && !chunked(r1.TransferEncoding) && !r1.Uncompressed) {
r1.Close = true;
}
_r$2 = newTransferWriter(r1); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$3 = _r$2;
tw = _tuple$3[0];
err$2 = _tuple$3[1];
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return err$2;
}
_r$3 = tw.WriteHeader(w); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
err$2 = _r$3;
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return err$2;
}
_r$4 = new Header(r.Header).WriteSubset(w, respExcludeHeader); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
err$2 = _r$4;
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return err$2;
}
contentLengthAlreadySent = tw.shouldSendContentLength();
/* */ if ((x$6 = r1.ContentLength, (x$6.$high === 0 && x$6.$low === 0)) && !chunked(r1.TransferEncoding) && !contentLengthAlreadySent && bodyAllowedForStatus(r.StatusCode)) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if ((x$6 = r1.ContentLength, (x$6.$high === 0 && x$6.$low === 0)) && !chunked(r1.TransferEncoding) && !contentLengthAlreadySent && bodyAllowedForStatus(r.StatusCode)) { */ case 8:
_r$5 = io.WriteString(w, "Content-Length: 0\r\n"); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_tuple$4 = _r$5;
err$3 = _tuple$4[1];
if (!($interfaceIsEqual(err$3, $ifaceNil))) {
$s = -1; return err$3;
}
/* } */ case 9:
_r$6 = io.WriteString(w, "\r\n"); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_tuple$5 = _r$6;
err$4 = _tuple$5[1];
if (!($interfaceIsEqual(err$4, $ifaceNil))) {
$s = -1; return err$4;
}
_r$7 = tw.WriteBody(w); /* */ $s = 12; case 12: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
err$2 = _r$7;
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return err$2;
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: Response.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._entry = _entry; $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._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$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;
};
Response.prototype.Write = function(w) { return this.$val.Write(w); };
conn.ptr.prototype.hijacked = function() {
var $ptr, c, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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);
c = this;
$r = c.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(c.mu, "Unlock"), []]);
$s = -1; return c.hijackedv;
/* */ } 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.$ptr = $ptr; $f.c = c; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
conn.prototype.hijacked = function() { return this.$val.hijacked(); };
conn.ptr.prototype.hijackLocked = function() {
var $ptr, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, buf, c, err, err$1, rwc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
rwc = $ifaceNil;
buf = ptrType$85.nil;
err = $ifaceNil;
c = this;
if (c.hijackedv) {
_tmp = $ifaceNil;
_tmp$1 = ptrType$85.nil;
_tmp$2 = $pkg.ErrHijacked;
rwc = _tmp;
buf = _tmp$1;
err = _tmp$2;
$s = -1; return [rwc, buf, err];
}
$r = c.r.abortPendingRead(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
c.hijackedv = true;
rwc = c.rwc;
_r = rwc.SetDeadline(new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil)); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
buf = bufio.NewReadWriter(c.bufr, bufio.NewWriter(rwc));
/* */ if (c.r.hasByte) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (c.r.hasByte) { */ case 3:
_r$1 = c.bufr.Peek(c.bufr.Buffered() + 1 >> 0); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
err$1 = _tuple[1];
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 6:
_tmp$3 = $ifaceNil;
_tmp$4 = ptrType$85.nil;
_r$2 = fmt.Errorf("unexpected Peek failure reading buffered byte: %v", new sliceType([err$1])); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tmp$5 = _r$2;
rwc = _tmp$3;
buf = _tmp$4;
err = _tmp$5;
$s = -1; return [rwc, buf, err];
/* } */ case 7:
/* } */ case 4:
$r = c.setState(rwc, 3); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return [rwc, buf, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.hijackLocked }; } $f.$ptr = $ptr; $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._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;
};
conn.prototype.hijackLocked = function() { return this.$val.hijackLocked(); };
chunkWriter.ptr.prototype.Write = function(p) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, cw, err, n, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
n = 0;
err = $ifaceNil;
cw = this;
/* */ if (!cw.wroteHeader) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!cw.wroteHeader) { */ case 1:
$r = cw.writeHeader(p); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
if (cw.res.req.Method === "HEAD") {
_tmp = p.$length;
_tmp$1 = $ifaceNil;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
/* */ if (cw.chunking) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (cw.chunking) { */ case 4:
_r = fmt.Fprintf(cw.res.conn.bufw, "%x\r\n", new sliceType([new $Int(p.$length)])); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
err = _tuple[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 7:
_r$1 = cw.res.conn.rwc.Close(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
$s = -1; return [n, err];
/* } */ case 8:
/* } */ case 5:
_r$2 = cw.res.conn.bufw.Write(p); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$1 = _r$2;
n = _tuple$1[0];
err = _tuple$1[1];
/* */ if (cw.chunking && $interfaceIsEqual(err, $ifaceNil)) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if (cw.chunking && $interfaceIsEqual(err, $ifaceNil)) { */ case 11:
_r$3 = cw.res.conn.bufw.Write(crlf); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$2 = _r$3;
err = _tuple$2[1];
/* } */ case 12:
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 14:
_r$4 = cw.res.conn.rwc.Close(); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_r$4;
/* } */ case 15:
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: chunkWriter.ptr.prototype.Write }; } $f.$ptr = $ptr; $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._tuple$2 = _tuple$2; $f.cw = cw; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
};
chunkWriter.prototype.Write = function(p) { return this.$val.Write(p); };
chunkWriter.ptr.prototype.flush = function() {
var $ptr, _r, cw, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; cw = $f.cw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
cw = this;
/* */ if (!cw.wroteHeader) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!cw.wroteHeader) { */ case 1:
$r = cw.writeHeader(sliceType$2.nil); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
_r = cw.res.conn.bufw.Flush(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: chunkWriter.ptr.prototype.flush }; } $f.$ptr = $ptr; $f._r = _r; $f.cw = cw; $f.$s = $s; $f.$r = $r; return $f;
};
chunkWriter.prototype.flush = function() { return this.$val.flush(); };
chunkWriter.ptr.prototype.close = function() {
var $ptr, _r, _r$1, _r$2, bw, cw, trailers, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; bw = $f.bw; cw = $f.cw; trailers = $f.trailers; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
cw = this;
/* */ if (!cw.wroteHeader) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!cw.wroteHeader) { */ case 1:
$r = cw.writeHeader(sliceType$2.nil); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
/* */ if (cw.chunking) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (cw.chunking) { */ case 4:
bw = cw.res.conn.bufw;
_r = bw.WriteString("0\r\n"); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
trailers = cw.res.finalTrailers();
/* */ if (!(trailers === false)) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (!(trailers === false)) { */ case 7:
_r$1 = new Header(trailers).Write(bw); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
/* } */ case 8:
_r$2 = bw.WriteString("\r\n"); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
/* } */ case 5:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: chunkWriter.ptr.prototype.close }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.bw = bw; $f.cw = cw; $f.trailers = trailers; $f.$s = $s; $f.$r = $r; return $f;
};
chunkWriter.prototype.close = function() { return this.$val.close(); };
response.ptr.prototype.finalTrailers = function() {
var $ptr, _entry, _entry$1, _i, _i$1, _i$2, _key, _keys, _ref, _ref$1, _ref$2, k, k$1, t, v, vv, w;
w = this;
t = false;
_ref = w.handlerHeader;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
continue;
}
k = _entry.k;
vv = _entry.v;
if (strings.HasPrefix(k, "Trailer:")) {
if (t === false) {
t = {};
}
_key = strings.TrimPrefix(k, "Trailer:"); (t || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: vv };
}
_i++;
}
_ref$1 = w.trailers;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
k$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
if (t === false) {
t = {};
}
_ref$2 = (_entry$1 = w.handlerHeader[$String.keyFor(k$1)], _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil);
_i$2 = 0;
while (true) {
if (!(_i$2 < _ref$2.$length)) { break; }
v = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]);
new Header(t).Add(k$1, v);
_i$2++;
}
_i$1++;
}
return t;
};
response.prototype.finalTrailers = function() { return this.$val.finalTrailers(); };
$ptrType(atomicBool).prototype.isSet = function() {
var $ptr, _ptr, b;
b = this;
return !((atomic.LoadInt32(((_ptr = b, new ptrType$86(function() { return (_ptr.$get() >> 0); }, function($v) { _ptr.$set(($v >> 0)); }, _ptr.$target)))) === 0));
};
$ptrType(atomicBool).prototype.setTrue = function() {
var $ptr, _ptr, b;
b = this;
atomic.StoreInt32(((_ptr = b, new ptrType$86(function() { return (_ptr.$get() >> 0); }, function($v) { _ptr.$set(($v >> 0)); }, _ptr.$target))), 1);
};
response.ptr.prototype.declareTrailer = function(k) {
var $ptr, _1, k, w;
w = this;
k = CanonicalHeaderKey(k);
_1 = k;
if (_1 === ("Transfer-Encoding") || _1 === ("Content-Length") || _1 === ("Trailer")) {
return;
}
w.trailers = $append(w.trailers, k);
};
response.prototype.declareTrailer = function(k) { return this.$val.declareTrailer(k); };
response.ptr.prototype.requestTooLarge = function() {
var $ptr, w;
w = this;
w.closeAfterReply = true;
w.requestBodyLimitHit = true;
if (!w.wroteHeader) {
new Header(w.Header()).Set("Connection", "close");
}
};
response.prototype.requestTooLarge = function() { return this.$val.requestTooLarge(); };
response.ptr.prototype.needsSniff = function() {
var $ptr, _entry, _tuple, haveType, w, x$3;
w = this;
_tuple = (_entry = w.handlerHeader[$String.keyFor("Content-Type")], _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
haveType = _tuple[1];
return !w.cw.wroteHeader && !haveType && (x$3 = w.written, (x$3.$high < 0 || (x$3.$high === 0 && x$3.$low < 512)));
};
response.prototype.needsSniff = function() { return this.$val.needsSniff(); };
srcIsRegularFile = function(src) {
var $ptr, _r, _r$1, _r$2, _r$3, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, err, err$1, fi, isRegular, src, v, v$1, v$2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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; _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:
isRegular = false;
err = $ifaceNil;
_ref = src;
/* */ if ($assertType(_ref, ptrType$87, true)[1]) { $s = 1; continue; }
/* */ if ($assertType(_ref, ptrType$88, true)[1]) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if ($assertType(_ref, ptrType$87, true)[1]) { */ case 1:
v = _ref.$val;
_r = v.Stat(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
fi = _tuple[0];
err$1 = _tuple[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
_tmp = false;
_tmp$1 = err$1;
isRegular = _tmp;
err = _tmp$1;
$s = -1; return [isRegular, err];
}
_r$1 = fi.Mode(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$2 = new os.FileMode(_r$1).IsRegular(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tmp$2 = _r$2;
_tmp$3 = $ifaceNil;
isRegular = _tmp$2;
err = _tmp$3;
$s = -1; return [isRegular, err];
/* } else if ($assertType(_ref, ptrType$88, true)[1]) { */ case 2:
v$1 = _ref.$val;
_r$3 = srcIsRegularFile(v$1.R); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$1 = _r$3;
isRegular = _tuple$1[0];
err = _tuple$1[1];
$s = -1; return [isRegular, err];
/* } else { */ case 3:
v$2 = _ref;
$s = -1; return [isRegular, err];
/* } */ case 4:
$s = -1; return [isRegular, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: srcIsRegularFile }; } $f.$ptr = $ptr; $f._r = _r; $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._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;
};
response.ptr.prototype.ReadFrom = function(src) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _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$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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$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; $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);
n = new $Int64(0, 0);
err = $ifaceNil;
w = this;
_tuple = $assertType(w.conn.rwc, io.ReaderFrom, true);
rf = _tuple[0];
ok = _tuple[1];
_r = srcIsRegularFile(src); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
regFile = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp = new $Int64(0, 0);
_tmp$1 = err;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
/* */ if (!ok || !regFile) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!ok || !regFile) { */ case 2:
_r$1 = copyBufPool.Get(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
bufp = $assertType(_r$1, ptrType$4);
$deferred.push([$methodVal(copyBufPool, "Put"), [bufp]]);
_r$2 = io.CopyBuffer((x$3 = new writerOnly.ptr(w), new x$3.constructor.elem(x$3)), src, bufp.$get()); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$2 = _r$2;
n = _tuple$2[0];
err = _tuple$2[1];
$s = -1; return [n, err];
/* } */ case 3:
/* */ if (!w.wroteHeader) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!w.wroteHeader) { */ case 6:
$r = w.WriteHeader(200); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 7:
/* */ if (w.needsSniff()) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (w.needsSniff()) { */ case 9:
_r$3 = io.Copy((x$4 = new writerOnly.ptr(w), new x$4.constructor.elem(x$4)), io.LimitReader(src, new $Int64(0, 512))); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$3 = _r$3;
n0 = _tuple$3[0];
err$1 = _tuple$3[1];
n = (x$5 = n0, new $Int64(n.$high + x$5.$high, n.$low + x$5.$low));
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
_tmp$2 = n;
_tmp$3 = err$1;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
}
/* } */ case 10:
_r$4 = w.w.Flush(); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_r$4;
$r = w.cw.flush(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (!w.cw.chunking && w.bodyAllowed()) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if (!w.cw.chunking && w.bodyAllowed()) { */ case 14:
_r$5 = rf.ReadFrom(src); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_tuple$4 = _r$5;
n0$1 = _tuple$4[0];
err$2 = _tuple$4[1];
n = (x$6 = n0$1, new $Int64(n.$high + x$6.$high, n.$low + x$6.$low));
w.written = (x$7 = w.written, x$8 = n0$1, new $Int64(x$7.$high + x$8.$high, x$7.$low + x$8.$low));
_tmp$4 = n;
_tmp$5 = err$2;
n = _tmp$4;
err = _tmp$5;
$s = -1; return [n, err];
/* } */ case 15:
_r$6 = io.Copy((x$9 = new writerOnly.ptr(w), new x$9.constructor.elem(x$9)), src); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_tuple$5 = _r$6;
n0$2 = _tuple$5[0];
err = _tuple$5[1];
n = (x$10 = n0$2, new $Int64(n.$high + x$10.$high, n.$low + x$10.$low));
_tmp$6 = n;
_tmp$7 = err;
n = _tmp$6;
err = _tmp$7;
$s = -1; return [n, err];
/* */ } 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.$ptr = $ptr; $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._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$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.$deferred = $deferred; $f.$r = $r; return $f; } }
};
response.prototype.ReadFrom = function(src) { return this.$val.ReadFrom(src); };
Server.ptr.prototype.newConn = function(rwc) {
var $ptr, _r, c, rwc, srv, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; rwc = $f.rwc; srv = $f.srv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
srv = this;
c = new conn.ptr(srv, $throwNilPointerError, rwc, "", ptrType$17.nil, $ifaceNil, ptrType$89.nil, ptrType$68.nil, ptrType$10.nil, "", new atomic.Value.ptr(new atomic.noCopy.ptr(), $ifaceNil), new atomic.Value.ptr(new atomic.noCopy.ptr(), $ifaceNil), new sync.Mutex.ptr(0, 0), false);
/* */ if (false) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (false) { */ case 1:
_r = newLoggingConn("server", c.rwc); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
c.rwc = _r;
/* } */ case 2:
$s = -1; return c;
/* */ } return; } if ($f === undefined) { $f = { $blk: Server.ptr.prototype.newConn }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.rwc = rwc; $f.srv = srv; $f.$s = $s; $f.$r = $r; return $f;
};
Server.prototype.newConn = function(rwc) { return this.$val.newConn(rwc); };
connReader.ptr.prototype.lock = function() {
var $ptr, cr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; cr = $f.cr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
cr = this;
$r = cr.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (cr.cond === ptrType$67.nil) {
cr.cond = sync.NewCond(cr.mu);
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: connReader.ptr.prototype.lock }; } $f.$ptr = $ptr; $f.cr = cr; $f.$s = $s; $f.$r = $r; return $f;
};
connReader.prototype.lock = function() { return this.$val.lock(); };
connReader.ptr.prototype.unlock = function() {
var $ptr, cr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; cr = $f.cr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
cr = this;
$r = cr.mu.Unlock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: connReader.ptr.prototype.unlock }; } $f.$ptr = $ptr; $f.cr = cr; $f.$s = $s; $f.$r = $r; return $f;
};
connReader.prototype.unlock = function() { return this.$val.unlock(); };
connReader.ptr.prototype.startBackgroundRead = function() {
var $ptr, _r, cr, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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);
cr = this;
$r = cr.lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(cr, "unlock"), []]);
if (cr.inRead) {
$panic(new $String("invalid concurrent Body.Read call"));
}
if (cr.hasByte) {
$s = -1; return;
}
cr.inRead = true;
_r = cr.conn.rwc.SetReadDeadline(new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil)); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
$go($methodVal(cr, "backgroundRead"), []);
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: connReader.ptr.prototype.startBackgroundRead }; } $f.$ptr = $ptr; $f._r = _r; $f.cr = cr; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
connReader.prototype.startBackgroundRead = function() { return this.$val.startBackgroundRead(); };
connReader.ptr.prototype.backgroundRead = function() {
var $ptr, _r, _r$1, _tuple, _tuple$1, _v, cr, err, n, ne, ok, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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:
cr = this;
_r = cr.conn.rwc.Read(new sliceType$2(cr.byteBuf)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
$r = cr.lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (n === 1) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (n === 1) { */ case 3:
cr.hasByte = true;
$r = cr.closeNotifyFromPipelinedRequest(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 4:
_tuple$1 = $assertType(err, net.Error, true);
ne = _tuple$1[0];
ok = _tuple$1[1];
if (!(ok && cr.aborted)) { _v = false; $s = 9; continue s; }
_r$1 = ne.Timeout(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_v = _r$1; case 9:
/* */ if (_v) { $s = 6; continue; }
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (_v) { */ case 6:
$s = 8; continue;
/* } else if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 7:
$r = cr.handleReadError(err); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 8:
cr.aborted = false;
cr.inRead = false;
$r = cr.unlock(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = cr.cond.Broadcast(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: connReader.ptr.prototype.backgroundRead }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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;
};
connReader.prototype.backgroundRead = function() { return this.$val.backgroundRead(); };
connReader.ptr.prototype.abortPendingRead = function() {
var $ptr, _r, _r$1, cr, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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);
cr = this;
$r = cr.lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(cr, "unlock"), []]);
if (!cr.inRead) {
$s = -1; return;
}
cr.aborted = true;
_r = cr.conn.rwc.SetReadDeadline($clone(aLongTimeAgo, time.Time)); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
/* while (true) { */ case 3:
/* if (!(cr.inRead)) { break; } */ if(!(cr.inRead)) { $s = 4; continue; }
$r = cr.cond.Wait(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ $s = 3; continue; case 4:
_r$1 = cr.conn.rwc.SetReadDeadline(new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil)); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: connReader.ptr.prototype.abortPendingRead }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.cr = cr; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
connReader.prototype.abortPendingRead = function() { return this.$val.abortPendingRead(); };
connReader.ptr.prototype.setReadLimit = function(remain) {
var $ptr, cr, remain;
cr = this;
cr.remain = remain;
};
connReader.prototype.setReadLimit = function(remain) { return this.$val.setReadLimit(remain); };
connReader.ptr.prototype.setInfiniteReadLimit = function() {
var $ptr, cr;
cr = this;
cr.remain = new $Int64(2147483647, 4294967295);
};
connReader.prototype.setInfiniteReadLimit = function() { return this.$val.setInfiniteReadLimit(); };
connReader.ptr.prototype.hitReadLimit = function() {
var $ptr, cr, x$3;
cr = this;
return (x$3 = cr.remain, (x$3.$high < 0 || (x$3.$high === 0 && x$3.$low <= 0)));
};
connReader.prototype.hitReadLimit = function() { return this.$val.hitReadLimit(); };
connReader.ptr.prototype.handleReadError = function(err) {
var $ptr, cr, err, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; cr = $f.cr; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
cr = this;
$r = cr.conn.cancelCtx(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = cr.closeNotify(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: connReader.ptr.prototype.handleReadError }; } $f.$ptr = $ptr; $f.cr = cr; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
};
connReader.prototype.handleReadError = function(err) { return this.$val.handleReadError(err); };
connReader.ptr.prototype.closeNotifyFromPipelinedRequest = function() {
var $ptr, cr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; cr = $f.cr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
cr = this;
$r = cr.closeNotify(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: connReader.ptr.prototype.closeNotifyFromPipelinedRequest }; } $f.$ptr = $ptr; $f.cr = cr; $f.$s = $s; $f.$r = $r; return $f;
};
connReader.prototype.closeNotifyFromPipelinedRequest = function() { return this.$val.closeNotifyFromPipelinedRequest(); };
connReader.ptr.prototype.closeNotify = function() {
var $ptr, _tuple, cr, res, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _tuple = $f._tuple; cr = $f.cr; res = $f.res; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
cr = this;
_tuple = $assertType(cr.conn.curReq.Load(), ptrType$90, true);
res = _tuple[0];
/* */ if (!(res === ptrType$90.nil)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(res === ptrType$90.nil)) { */ case 1:
/* */ if (atomic.CompareAndSwapInt32((res.$ptr_didCloseNotify || (res.$ptr_didCloseNotify = new ptrType$86(function() { return this.$target.didCloseNotify; }, function($v) { this.$target.didCloseNotify = $v; }, res))), 0, 1)) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (atomic.CompareAndSwapInt32((res.$ptr_didCloseNotify || (res.$ptr_didCloseNotify = new ptrType$86(function() { return this.$target.didCloseNotify; }, function($v) { this.$target.didCloseNotify = $v; }, res))), 0, 1)) { */ case 3:
$r = $send(res.closeNotifyCh, true); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 4:
/* } */ case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: connReader.ptr.prototype.closeNotify }; } $f.$ptr = $ptr; $f._tuple = _tuple; $f.cr = cr; $f.res = res; $f.$s = $s; $f.$r = $r; return $f;
};
connReader.prototype.closeNotify = function() { return this.$val.closeNotify(); };
connReader.ptr.prototype.Read = function(p) {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, cr, err, n, p, x$3, x$4, x$5, x$6, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; cr = $f.cr; err = $f.err; n = $f.n; p = $f.p; 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:
n = 0;
err = $ifaceNil;
cr = this;
$r = cr.lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (cr.inRead) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (cr.inRead) { */ case 2:
$r = cr.unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$panic(new $String("invalid concurrent Body.Read call"));
/* } */ case 3:
/* */ if (cr.hitReadLimit()) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (cr.hitReadLimit()) { */ case 5:
$r = cr.unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_tmp = 0;
_tmp$1 = io.EOF;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
/* } */ case 6:
/* */ if (!($interfaceIsEqual(cr.bgErr, $ifaceNil))) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (!($interfaceIsEqual(cr.bgErr, $ifaceNil))) { */ case 8:
err = cr.bgErr;
$r = cr.unlock(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_tmp$2 = 0;
_tmp$3 = err;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
/* } */ case 9:
/* */ if (p.$length === 0) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if (p.$length === 0) { */ case 11:
$r = cr.unlock(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_tmp$4 = 0;
_tmp$5 = $ifaceNil;
n = _tmp$4;
err = _tmp$5;
$s = -1; return [n, err];
/* } */ case 12:
if ((x$3 = (new $Int64(0, p.$length)), x$4 = cr.remain, (x$3.$high > x$4.$high || (x$3.$high === x$4.$high && x$3.$low > x$4.$low)))) {
p = $subslice(p, 0, $flatten64(cr.remain));
}
/* */ if (cr.hasByte) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if (cr.hasByte) { */ case 14:
(0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = cr.byteBuf[0]);
cr.hasByte = false;
$r = cr.unlock(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_tmp$6 = 1;
_tmp$7 = $ifaceNil;
n = _tmp$6;
err = _tmp$7;
$s = -1; return [n, err];
/* } */ case 15:
cr.inRead = true;
$r = cr.unlock(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r = cr.conn.rwc.Read(p); /* */ $s = 18; case 18: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
$r = cr.lock(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
cr.inRead = false;
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 20:
$r = cr.handleReadError(err); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 21:
cr.remain = (x$5 = cr.remain, x$6 = (new $Int64(0, n)), new $Int64(x$5.$high - x$6.$high, x$5.$low - x$6.$low));
$r = cr.unlock(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = cr.cond.Broadcast(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_tmp$8 = n;
_tmp$9 = err;
n = _tmp$8;
err = _tmp$9;
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: connReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $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._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f.cr = cr; $f.err = err; $f.n = n; $f.p = p; $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;
};
connReader.prototype.Read = function(p) { return this.$val.Read(p); };
bufioWriterPool = function(size) {
var $ptr, _1, size;
_1 = size;
if (_1 === (2048)) {
return bufioWriter2kPool;
} else if (_1 === (4096)) {
return bufioWriter4kPool;
}
return ptrType$91.nil;
};
newBufioReader = function(r) {
var $ptr, _r, br, r, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; br = $f.br; r = $f.r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = bufioReaderPool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
v = _r;
if (!($interfaceIsEqual(v, $ifaceNil))) {
br = $assertType(v, ptrType$68);
br.Reset(r);
$s = -1; return br;
}
$s = -1; return bufio.NewReader(r);
/* */ } return; } if ($f === undefined) { $f = { $blk: newBufioReader }; } $f.$ptr = $ptr; $f._r = _r; $f.br = br; $f.r = r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
putBufioReader = function(br) {
var $ptr, br;
br.Reset($ifaceNil);
bufioReaderPool.Put(br);
};
newBufioWriterSize = function(w, size) {
var $ptr, _r, bw, pool, size, v, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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:
pool = bufioWriterPool(size);
/* */ if (!(pool === ptrType$91.nil)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(pool === ptrType$91.nil)) { */ case 1:
_r = pool.Get(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
v = _r;
if (!($interfaceIsEqual(v, $ifaceNil))) {
bw = $assertType(v, ptrType$10);
bw.Reset(w);
$s = -1; return bw;
}
/* } */ case 2:
$s = -1; return bufio.NewWriterSize(w, size);
/* */ } return; } if ($f === undefined) { $f = { $blk: newBufioWriterSize }; } $f.$ptr = $ptr; $f._r = _r; $f.bw = bw; $f.pool = pool; $f.size = size; $f.v = v; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
putBufioWriter = function(bw) {
var $ptr, bw, pool;
bw.Reset($ifaceNil);
pool = bufioWriterPool(bw.Available());
if (!(pool === ptrType$91.nil)) {
pool.Put(bw);
}
};
Server.ptr.prototype.maxHeaderBytes = function() {
var $ptr, srv;
srv = this;
if (srv.MaxHeaderBytes > 0) {
return srv.MaxHeaderBytes;
}
return 1048576;
};
Server.prototype.maxHeaderBytes = function() { return this.$val.maxHeaderBytes(); };
Server.ptr.prototype.initialReadLimitSize = function() {
var $ptr, srv, x$3;
srv = this;
return (x$3 = (new $Int64(0, srv.maxHeaderBytes())), new $Int64(x$3.$high + 0, x$3.$low + 4096));
};
Server.prototype.initialReadLimitSize = function() { return this.$val.initialReadLimitSize(); };
expectContinueReader.ptr.prototype.Read = function(p) {
var $ptr, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tuple, _v, ecr, err, n, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
n = 0;
err = $ifaceNil;
ecr = this;
if (ecr.closed) {
_tmp = 0;
_tmp$1 = $pkg.ErrBodyReadAfterClose;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
if (!(!ecr.resp.wroteContinue)) { _v = false; $s = 3; continue s; }
_r = ecr.resp.conn.hijacked(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_v = !_r; case 3:
/* */ if (_v) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (_v) { */ case 1:
ecr.resp.wroteContinue = true;
_r$1 = ecr.resp.conn.bufw.WriteString("HTTP/1.1 100 Continue\r\n\r\n"); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
_r$2 = ecr.resp.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; }
_r$2;
/* } */ case 2:
_r$3 = ecr.readCloser.Read(p); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple = _r$3;
n = _tuple[0];
err = _tuple[1];
if ($interfaceIsEqual(err, io.EOF)) {
ecr.sawEOF = true;
}
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: expectContinueReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $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._v = _v; $f.ecr = ecr; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
};
expectContinueReader.prototype.Read = function(p) { return this.$val.Read(p); };
expectContinueReader.ptr.prototype.Close = function() {
var $ptr, _r, ecr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; ecr = $f.ecr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
ecr = this;
ecr.closed = true;
_r = ecr.readCloser.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: expectContinueReader.ptr.prototype.Close }; } $f.$ptr = $ptr; $f._r = _r; $f.ecr = ecr; $f.$s = $s; $f.$r = $r; return $f;
};
expectContinueReader.prototype.Close = function() { return this.$val.Close(); };
appendTime = function(b, t) {
var $ptr, _q, _q$1, _q$2, _q$3, _q$4, _q$5, _q$6, _r, _r$1, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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 = $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; _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:
time.Time.copy(t, $clone(t, time.Time).UTC());
_r = $clone(t, time.Time).Date(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
yy = _tuple[0];
mm = _tuple[1];
dd = _tuple[2];
_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; }
_tuple$1 = _r$1;
hh = _tuple$1[0];
mn = _tuple$1[1];
ss = _tuple$1[2];
_r$2 = $clone(t, time.Time).Weekday(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
day = $substring("SunMonTueWedThuFriSat", ($imul(3, _r$2)));
mon = $substring("JanFebMarAprMayJunJulAugSepOctNovDec", ($imul(3, ((mm - 1 >> 0)))));
$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$3 = dd % 10, _r$3 === _r$3 ? _r$3 : $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$4 = ((_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$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24)), (((48 + (_r$5 = ((_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$5 === _r$5 ? _r$5 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24)), (((48 + (_r$6 = yy % 10, _r$6 === _r$6 ? _r$6 : $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$7 = hh % 10, _r$7 === _r$7 ? _r$7 : $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$8 = mn % 10, _r$8 === _r$8 ? _r$8 : $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$9 = ss % 10, _r$9 === _r$9 ? _r$9 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24)), 32, 71, 77, 84);
/* */ } return; } if ($f === undefined) { $f = { $blk: appendTime }; } $f.$ptr = $ptr; $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 = _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._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;
};
conn.ptr.prototype.readRequest = function(ctx) {
var $ptr, _entry, _entry$1, _i, _i$1, _keys, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _i$1 = $f._i$1; _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; _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);
c = [c];
d = [d];
w = ptrType$90.nil;
err = $ifaceNil;
c[0] = this;
_r = c[0].hijacked(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (_r) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (_r) { */ case 1:
_tmp = ptrType$90.nil;
_tmp$1 = $pkg.ErrHijacked;
w = _tmp;
err = _tmp$1;
$s = -1; return [w, err];
/* } */ case 2:
wholeReqDeadline = new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil);
hdrDeadline = new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil);
t0 = $clone(time.Now(), time.Time);
d$1 = c[0].server.readHeaderTimeout();
if (!((d$1.$high === 0 && d$1.$low === 0))) {
time.Time.copy(hdrDeadline, $clone(t0, time.Time).Add(d$1));
}
d$2 = c[0].server.ReadTimeout;
if (!((d$2.$high === 0 && d$2.$low === 0))) {
time.Time.copy(wholeReqDeadline, $clone(t0, time.Time).Add(d$2));
}
_r$1 = c[0].rwc.SetReadDeadline($clone(hdrDeadline, time.Time)); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
d[0] = c[0].server.WriteTimeout;
/* */ if (!((d[0].$high === 0 && d[0].$low === 0))) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (!((d[0].$high === 0 && d[0].$low === 0))) { */ case 5:
$deferred.push([(function(c, d) { return function $b() {
var $ptr, _r$2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r$2 = c[0].rwc.SetWriteDeadline($clone($clone(time.Now(), time.Time).Add(d[0]), time.Time)); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.$s = $s; $f.$r = $r; return $f;
}; })(c, d), []]);
/* } */ case 6:
c[0].r.setReadLimit(c[0].server.initialReadLimitSize());
/* */ if (c[0].lastMethod === "POST") { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (c[0].lastMethod === "POST") { */ case 7:
_r$2 = c[0].bufr.Peek(4); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple = _r$2;
peek = _tuple[0];
_r$3 = c[0].bufr.Discard(numLeadingCRorLF(peek)); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$3;
/* } */ case 8:
_r$4 = readRequest(c[0].bufr, false); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_tuple$1 = _r$4;
req = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
if (c[0].r.hitReadLimit()) {
_tmp$2 = ptrType$90.nil;
_tmp$3 = errTooLarge;
w = _tmp$2;
err = _tmp$3;
$s = -1; return [w, err];
}
_tmp$4 = ptrType$90.nil;
_tmp$5 = err;
w = _tmp$4;
err = _tmp$5;
$s = -1; return [w, err];
}
if (!http1ServerSupportsRequest(req)) {
_tmp$6 = ptrType$90.nil;
_tmp$7 = new badRequestError("unsupported protocol version");
w = _tmp$6;
err = _tmp$7;
$s = -1; return [w, err];
}
c[0].lastMethod = req.Method;
c[0].r.setInfiniteReadLimit();
_tuple$2 = (_entry = req.Header[$String.keyFor("Host")], _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
hosts = _tuple$2[0];
haveHost = _tuple$2[1];
isH2Upgrade = req.isH2Upgrade();
if (req.ProtoAtLeast(1, 1) && (!haveHost || (hosts.$length === 0)) && !isH2Upgrade) {
_tmp$8 = ptrType$90.nil;
_tmp$9 = new badRequestError("missing required Host header");
w = _tmp$8;
err = _tmp$9;
$s = -1; return [w, err];
}
if (hosts.$length > 1) {
_tmp$10 = ptrType$90.nil;
_tmp$11 = new badRequestError("too many Host headers");
w = _tmp$10;
err = _tmp$11;
$s = -1; return [w, err];
}
if ((hosts.$length === 1) && !httplex.ValidHostHeader((0 >= hosts.$length ? ($throwRuntimeError("index out of range"), undefined) : hosts.$array[hosts.$offset + 0]))) {
_tmp$12 = ptrType$90.nil;
_tmp$13 = new badRequestError("malformed Host header");
w = _tmp$12;
err = _tmp$13;
$s = -1; return [w, err];
}
_ref = req.Header;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry$1 = _ref[_keys[_i]];
if (_entry$1 === undefined) {
_i++;
continue;
}
k = _entry$1.k;
vv = _entry$1.v;
if (!httplex.ValidHeaderFieldName(k)) {
_tmp$14 = ptrType$90.nil;
_tmp$15 = new badRequestError("invalid header name");
w = _tmp$14;
err = _tmp$15;
$s = -1; return [w, err];
}
_ref$1 = vv;
_i$1 = 0;
while (true) {
if (!(_i$1 < _ref$1.$length)) { break; }
v = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
if (!httplex.ValidHeaderFieldValue(v)) {
_tmp$16 = ptrType$90.nil;
_tmp$17 = new badRequestError("invalid header value");
w = _tmp$16;
err = _tmp$17;
$s = -1; return [w, err];
}
_i$1++;
}
_i++;
}
delete req.Header[$String.keyFor("Host")];
_r$5 = context.WithCancel(ctx); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_tuple$3 = _r$5;
ctx = _tuple$3[0];
cancelCtx = _tuple$3[1];
req.ctx = ctx;
req.RemoteAddr = c[0].remoteAddr;
req.TLS = c[0].tlsState;
_tuple$4 = $assertType(req.Body, ptrType$92, true);
body$1 = _tuple$4[0];
ok = _tuple$4[1];
if (ok) {
body$1.doEarlyClose = true;
}
/* */ if (!$clone(hdrDeadline, time.Time).Equal($clone(wholeReqDeadline, time.Time))) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (!$clone(hdrDeadline, time.Time).Equal($clone(wholeReqDeadline, time.Time))) { */ case 13:
_r$6 = c[0].rwc.SetReadDeadline($clone(wholeReqDeadline, time.Time)); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_r$6;
/* } */ case 14:
w = new response.ptr(c[0], req, req.Body, cancelCtx, false, false, req.wantsHttp10KeepAlive(), req.wantsClose(), ptrType$10.nil, new chunkWriter.ptr(ptrType$90.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(), new $Chan($Bool, 1), 0);
if (isH2Upgrade) {
w.closeAfterReply = true;
}
w.cw.res = w;
_r$7 = newBufioWriterSize(w.cw, 2048); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
w.w = _r$7;
_tmp$18 = w;
_tmp$19 = $ifaceNil;
w = _tmp$18;
err = _tmp$19;
$s = -1; return [w, err];
/* */ } 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.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._i$1 = _i$1; $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._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; } }
};
conn.prototype.readRequest = function(ctx) { return this.$val.readRequest(ctx); };
http1ServerSupportsRequest = function(req) {
var $ptr, req;
if (req.ProtoMajor === 1) {
return true;
}
if ((req.ProtoMajor === 2) && (req.ProtoMinor === 0) && req.Method === "PRI" && req.RequestURI === "*") {
return true;
}
return false;
};
response.ptr.prototype.Header = function() {
var $ptr, w;
w = this;
if (w.cw.header === false && w.wroteHeader && !w.cw.wroteHeader) {
w.cw.header = new Header(w.handlerHeader).clone();
}
w.calledHeader = true;
return w.handlerHeader;
};
response.prototype.Header = function() { return this.$val.Header(); };
response.ptr.prototype.WriteHeader = function(code) {
var $ptr, _r, _tuple, cl, code, err, v, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
w = this;
_r = w.conn.hijacked(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (_r) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (_r) { */ case 1:
$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; }
$s = -1; return;
/* } */ case 2:
/* */ if (w.wroteHeader) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (w.wroteHeader) { */ case 5:
$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; }
$s = -1; return;
/* } */ case 6:
w.wroteHeader = true;
w.status = code;
if (w.calledHeader && w.cw.header === false) {
w.cw.header = new Header(w.handlerHeader).clone();
}
cl = new Header(w.handlerHeader).get("Content-Length");
/* */ if (!(cl === "")) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (!(cl === "")) { */ case 8:
_tuple = strconv.ParseInt(cl, 10, 64);
v = _tuple[0];
err = _tuple[1];
/* */ if ($interfaceIsEqual(err, $ifaceNil) && (v.$high > 0 || (v.$high === 0 && v.$low >= 0))) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if ($interfaceIsEqual(err, $ifaceNil) && (v.$high > 0 || (v.$high === 0 && v.$low >= 0))) { */ case 10:
w.contentLength = v;
$s = 12; continue;
/* } else { */ case 11:
$r = w.conn.server.logf("http: invalid Content-Length of %q", new sliceType([new $String(cl)])); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
new Header(w.handlerHeader).Del("Content-Length");
/* } */ case 12:
/* } */ case 9:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.WriteHeader }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
response.prototype.WriteHeader = function(code) { return this.$val.WriteHeader(code); };
extraHeader.ptr.prototype.Write = function(w) {
var $ptr, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, h, i, v, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
h = this;
/* */ if (!(h.date === sliceType$2.nil)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(h.date === sliceType$2.nil)) { */ case 1:
_r = w.Write(headerDate); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
_r$1 = w.Write(h.date); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
_r$2 = w.Write(crlf); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
/* } */ case 2:
/* */ if (!(h.contentLength === sliceType$2.nil)) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!(h.contentLength === sliceType$2.nil)) { */ case 6:
_r$3 = w.Write(headerContentLength); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$3;
_r$4 = w.Write(h.contentLength); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_r$4;
_r$5 = w.Write(crlf); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_r$5;
/* } */ case 7:
_ref = new sliceType$1([h.contentType, h.connection, h.transferEncoding]);
_i = 0;
/* while (true) { */ case 11:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 12; continue; }
i = _i;
v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
/* */ if (!(v === "")) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (!(v === "")) { */ case 13:
_r$6 = 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$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_r$6;
_r$7 = w.Write(colonSpace); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_r$7;
_r$8 = w.WriteString(v); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_r$8;
_r$9 = w.Write(crlf); /* */ $s = 18; case 18: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
_r$9;
/* } */ case 14:
_i++;
/* } */ $s = 11; continue; case 12:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: extraHeader.ptr.prototype.Write }; } $f.$ptr = $ptr; $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._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;
};
extraHeader.prototype.Write = function(w) { return this.$val.Write(w); };
chunkWriter.ptr.prototype.writeHeader = function(p) {
var $ptr, _1, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _i, _i$1, _i$2, _key, _keys, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _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$3, x$4, x$5, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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 = $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; _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$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:
excludeHeader = [excludeHeader];
header = [header];
owned = [owned];
cw = this;
if (cw.wroteHeader) {
$s = -1; return;
}
cw.wroteHeader = true;
w = cw.res;
keepAlivesEnabled = w.conn.server.doKeepAlives();
isHEAD = w.req.Method === "HEAD";
header[0] = cw.header;
owned[0] = !(header[0] === false);
if (!owned[0]) {
header[0] = w.handlerHeader;
}
excludeHeader[0] = false;
delHeader = (function(excludeHeader, header, owned) { return function(key) {
var $ptr, _entry, _key, _tuple, key, ok;
if (owned[0]) {
new Header(header[0]).Del(key);
return;
}
_tuple = (_entry = header[0][$String.keyFor(key)], _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
ok = _tuple[1];
if (!ok) {
return;
}
if (excludeHeader[0] === false) {
excludeHeader[0] = {};
}
_key = key; (excludeHeader[0] || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: true };
}; })(excludeHeader, header, owned);
setHeader = new extraHeader.ptr("", "", "", sliceType$2.nil, sliceType$2.nil);
trailers = false;
_ref = cw.header;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
continue;
}
k = _entry.k;
if (strings.HasPrefix(k, "Trailer:")) {
if (excludeHeader[0] === false) {
excludeHeader[0] = {};
}
_key = k; (excludeHeader[0] || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: true };
trailers = true;
}
_i++;
}
_ref$1 = (_entry$1 = cw.header[$String.keyFor("Trailer")], _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil);
_i$1 = 0;
/* while (true) { */ case 1:
/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 2; continue; }
v = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
trailers = true;
$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; }
_i$1++;
/* } */ $s = 1; continue; case 2:
te = new Header(header[0]).get("Transfer-Encoding");
hasTE = !(te === "");
if ((w.$ptr_handlerDone || (w.$ptr_handlerDone = new ptrType$22(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)) {
w.contentLength = (new $Int64(0, p.$length));
setHeader.contentLength = strconv.AppendInt($subslice(new sliceType$2(cw.res.clenBuf), 0, 0), (new $Int64(0, p.$length)), 10);
}
if (w.wants10KeepAlive && keepAlivesEnabled) {
sentLength = !(new Header(header[0]).get("Content-Length") === "");
if (sentLength && new Header(header[0]).get("Connection") === "keep-alive") {
w.closeAfterReply = false;
}
}
hasCL = !((x$3 = w.contentLength, (x$3.$high === -1 && x$3.$low === 4294967295)));
if (w.wants10KeepAlive && (isHEAD || hasCL || !bodyAllowedForStatus(w.status))) {
_tuple = (_entry$2 = header[0][$String.keyFor("Connection")], _entry$2 !== undefined ? [_entry$2.v, true] : [sliceType$1.nil, false]);
connectionHeaderSet = _tuple[1];
if (!connectionHeaderSet) {
setHeader.connection = "keep-alive";
}
} else if (!w.req.ProtoAtLeast(1, 1) || w.wantsClose) {
w.closeAfterReply = true;
}
if (new Header(header[0]).get("Connection") === "close" || !keepAlivesEnabled) {
w.closeAfterReply = true;
}
_tuple$1 = $assertType(w.req.Body, ptrType$94, true);
ecr = _tuple$1[0];
ok = _tuple$1[1];
if (ok && !ecr.sawEOF) {
w.closeAfterReply = true;
}
/* */ if (!((x$4 = w.req.ContentLength, (x$4.$high === 0 && x$4.$low === 0))) && !w.closeAfterReply) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!((x$4 = w.req.ContentLength, (x$4.$high === 0 && x$4.$low === 0))) && !w.closeAfterReply) { */ case 4:
_tmp = false;
_tmp$1 = false;
discard = _tmp;
tooBig = _tmp$1;
_ref$2 = w.req.Body;
/* */ if ($assertType(_ref$2, ptrType$94, true)[1]) { $s = 6; continue; }
/* */ if ($assertType(_ref$2, ptrType$92, true)[1]) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if ($assertType(_ref$2, ptrType$94, true)[1]) { */ case 6:
bdy = _ref$2.$val;
if (bdy.resp.wroteContinue) {
discard = true;
}
$s = 9; continue;
/* } else if ($assertType(_ref$2, ptrType$92, true)[1]) { */ case 7:
bdy$1 = _ref$2.$val;
$r = bdy$1.mu.Lock(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (bdy$1.closed) {
if (!bdy$1.sawEOF) {
w.closeAfterReply = true;
}
} else if ((x$5 = bdy$1.unreadDataSizeLocked(), (x$5.$high > 0 || (x$5.$high === 0 && x$5.$low >= 262144)))) {
tooBig = true;
} else {
discard = true;
}
$r = bdy$1.mu.Unlock(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 9; continue;
/* } else { */ case 8:
bdy$2 = _ref$2;
discard = true;
/* } */ case 9:
/* */ if (discard) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (discard) { */ case 12:
_r = io.CopyN(ioutil.Discard, w.reqBody, new $Int64(0, 262145)); /* */ $s = 14; case 14: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$2 = _r;
err = _tuple$2[1];
_1 = err;
/* */ if ($interfaceIsEqual(_1, $ifaceNil)) { $s = 16; continue; }
/* */ if ($interfaceIsEqual(_1, ($pkg.ErrBodyReadAfterClose))) { $s = 17; continue; }
/* */ if ($interfaceIsEqual(_1, (io.EOF))) { $s = 18; continue; }
/* */ $s = 19; continue;
/* if ($interfaceIsEqual(_1, $ifaceNil)) { */ case 16:
tooBig = true;
$s = 20; continue;
/* } else if ($interfaceIsEqual(_1, ($pkg.ErrBodyReadAfterClose))) { */ case 17:
$s = 20; continue;
/* } else if ($interfaceIsEqual(_1, (io.EOF))) { */ case 18:
_r$1 = w.reqBody.Close(); /* */ $s = 21; case 21: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
err = _r$1;
if (!($interfaceIsEqual(err, $ifaceNil))) {
w.closeAfterReply = true;
}
$s = 20; continue;
/* } else { */ case 19:
w.closeAfterReply = true;
/* } */ case 20:
case 15:
/* } */ case 13:
/* */ if (tooBig) { $s = 22; continue; }
/* */ $s = 23; continue;
/* if (tooBig) { */ case 22:
w.requestTooLarge();
$r = delHeader("Connection"); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
setHeader.connection = "close";
/* } */ case 23:
/* } */ case 5:
code = w.status;
/* */ if (bodyAllowedForStatus(code)) { $s = 25; continue; }
/* */ $s = 26; continue;
/* if (bodyAllowedForStatus(code)) { */ case 25:
_tuple$3 = (_entry$3 = header[0][$String.keyFor("Content-Type")], _entry$3 !== undefined ? [_entry$3.v, true] : [sliceType$1.nil, false]);
haveType = _tuple$3[1];
/* */ if (!haveType && !hasTE) { $s = 28; continue; }
/* */ $s = 29; continue;
/* if (!haveType && !hasTE) { */ case 28:
_r$2 = DetectContentType(p); /* */ $s = 30; case 30: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
setHeader.contentType = _r$2;
/* } */ case 29:
$s = 27; continue;
/* } else { */ case 26:
_ref$3 = suppressedHeaders(code);
_i$2 = 0;
/* while (true) { */ case 31:
/* if (!(_i$2 < _ref$3.$length)) { break; } */ if(!(_i$2 < _ref$3.$length)) { $s = 32; continue; }
k$1 = ((_i$2 < 0 || _i$2 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$2]);
$r = delHeader(k$1); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_i$2++;
/* } */ $s = 31; continue; case 32:
/* } */ case 27:
_tuple$4 = (_entry$4 = header[0][$String.keyFor("Date")], _entry$4 !== undefined ? [_entry$4.v, true] : [sliceType$1.nil, false]);
ok$1 = _tuple$4[1];
/* */ if (!ok$1) { $s = 34; continue; }
/* */ $s = 35; continue;
/* if (!ok$1) { */ case 34:
_r$3 = appendTime($subslice(new sliceType$2(cw.res.dateBuf), 0, 0), $clone(time.Now(), time.Time)); /* */ $s = 36; case 36: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
setHeader.date = _r$3;
/* } */ case 35:
/* */ if (hasCL && hasTE && !(te === "identity")) { $s = 37; continue; }
/* */ $s = 38; continue;
/* if (hasCL && hasTE && !(te === "identity")) { */ case 37:
$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; }
$r = delHeader("Content-Length"); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
hasCL = false;
/* } */ case 38:
/* */ if (w.req.Method === "HEAD" || !bodyAllowedForStatus(code)) { $s = 41; continue; }
/* */ if (code === 204) { $s = 42; continue; }
/* */ if (hasCL) { $s = 43; continue; }
/* */ if (w.req.ProtoAtLeast(1, 1)) { $s = 44; continue; }
/* */ $s = 45; continue;
/* if (w.req.Method === "HEAD" || !bodyAllowedForStatus(code)) { */ case 41:
$s = 46; continue;
/* } else if (code === 204) { */ case 42:
$r = delHeader("Transfer-Encoding"); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 46; continue;
/* } else if (hasCL) { */ case 43:
$r = delHeader("Transfer-Encoding"); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 46; continue;
/* } else if (w.req.ProtoAtLeast(1, 1)) { */ case 44:
/* */ if (hasTE && te === "identity") { $s = 49; continue; }
/* */ $s = 50; continue;
/* if (hasTE && te === "identity") { */ case 49:
cw.chunking = false;
w.closeAfterReply = true;
$s = 51; continue;
/* } else { */ case 50:
cw.chunking = true;
setHeader.transferEncoding = "chunked";
/* */ if (hasTE && te === "chunked") { $s = 52; continue; }
/* */ $s = 53; continue;
/* if (hasTE && te === "chunked") { */ case 52:
$r = delHeader("Transfer-Encoding"); /* */ $s = 54; case 54: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 53:
/* } */ case 51:
$s = 46; continue;
/* } else { */ case 45:
w.closeAfterReply = true;
$r = delHeader("Transfer-Encoding"); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 46:
/* */ if (cw.chunking) { $s = 56; continue; }
/* */ $s = 57; continue;
/* if (cw.chunking) { */ case 56:
$r = delHeader("Content-Length"); /* */ $s = 58; case 58: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 57:
if (!w.req.ProtoAtLeast(1, 0)) {
$s = -1; return;
}
/* */ if (w.closeAfterReply && (!keepAlivesEnabled || !hasToken(new Header(cw.header).get("Connection"), "close"))) { $s = 59; continue; }
/* */ $s = 60; continue;
/* if (w.closeAfterReply && (!keepAlivesEnabled || !hasToken(new Header(cw.header).get("Connection"), "close"))) { */ case 59:
$r = delHeader("Connection"); /* */ $s = 61; case 61: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (w.req.ProtoAtLeast(1, 1)) {
setHeader.connection = "close";
}
/* } */ case 60:
_r$4 = statusLine(w.req, code); /* */ $s = 62; case 62: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_r$5 = w.conn.bufw.WriteString(_r$4); /* */ $s = 63; case 63: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_r$5;
_r$6 = new Header(cw.header).WriteSubset(w.conn.bufw, excludeHeader[0]); /* */ $s = 64; case 64: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_r$6;
$r = $clone(setHeader, extraHeader).Write(w.conn.bufw); /* */ $s = 65; case 65: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$7 = w.conn.bufw.Write(crlf); /* */ $s = 66; case 66: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_r$7;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: chunkWriter.ptr.prototype.writeHeader }; } $f.$ptr = $ptr; $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 = _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._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$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
};
chunkWriter.prototype.writeHeader = function(p) { return this.$val.writeHeader(p); };
foreachHeaderElement = function(v, fn) {
var $ptr, _i, _ref, f, fn, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
v = textproto.TrimString(v);
if (v === "") {
$s = -1; return;
}
/* */ if (!strings.Contains(v, ",")) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!strings.Contains(v, ",")) { */ case 1:
$r = fn(v); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } */ case 2:
_ref = strings.Split(v, ",");
_i = 0;
/* while (true) { */ case 4:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; }
f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
f = textproto.TrimString(f);
/* */ if (!(f === "")) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!(f === "")) { */ case 6:
$r = fn(f); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 7:
_i++;
/* } */ $s = 4; continue; case 5:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: foreachHeaderElement }; } $f.$ptr = $ptr; $f._i = _i; $f._ref = _ref; $f.f = f; $f.fn = fn; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
};
statusLine = function(req, code) {
var $ptr, _entry, _entry$1, _key, _r, _tuple, _tuple$1, code, codestring, key, line, ok, proto, proto11, req, text, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _key = $f._key; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; code = $f.code; codestring = $f.codestring; key = $f.key; line = $f.line; ok = $f.ok; proto = $f.proto; proto11 = $f.proto11; req = $f.req; text = $f.text; $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);
key = code;
proto11 = req.ProtoAtLeast(1, 1);
if (!proto11) {
key = -key;
}
$r = statusMu.RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_tuple = (_entry = statusLines[$Int.keyFor(key)], _entry !== undefined ? [_entry.v, true] : ["", false]);
line = _tuple[0];
ok = _tuple[1];
$r = statusMu.RUnlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (ok) {
$s = -1; return line;
}
proto = "HTTP/1.0";
if (proto11) {
proto = "HTTP/1.1";
}
_r = fmt.Sprintf("%03d", new sliceType([new $Int(code)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
codestring = _r;
_tuple$1 = (_entry$1 = statusText[$Int.keyFor(code)], _entry$1 !== undefined ? [_entry$1.v, true] : ["", false]);
text = _tuple$1[0];
ok = _tuple$1[1];
if (!ok) {
text = "status code " + codestring;
}
line = proto + " " + codestring + " " + text + "\r\n";
/* */ if (ok) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (ok) { */ case 4:
$r = statusMu.Lock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(statusMu, "Unlock"), []]);
_key = key; (statusLines || $throwRuntimeError("assignment to entry in nil map"))[$Int.keyFor(_key)] = { k: _key, v: line };
/* } */ case 5:
$s = -1; return line;
/* */ } return; } } catch(err) { $err = err; $s = -1; return ""; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: statusLine }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._key = _key; $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.code = code; $f.codestring = codestring; $f.key = key; $f.line = line; $f.ok = ok; $f.proto = proto; $f.proto11 = proto11; $f.req = req; $f.text = text; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
response.ptr.prototype.bodyAllowed = function() {
var $ptr, w;
w = this;
if (!w.wroteHeader) {
$panic(new $String(""));
}
return bodyAllowedForStatus(w.status);
};
response.prototype.bodyAllowed = function() { return this.$val.bodyAllowed(); };
response.ptr.prototype.Write = function(data) {
var $ptr, _r, _tuple, data, err, n, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
n = 0;
err = $ifaceNil;
w = this;
_r = w.write(data.$length, data, ""); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.data = data; $f.err = err; $f.n = n; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
response.prototype.Write = function(data) { return this.$val.Write(data); };
response.ptr.prototype.WriteString = function(data) {
var $ptr, _r, _tuple, data, err, n, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
n = 0;
err = $ifaceNil;
w = this;
_r = w.write(data.length, sliceType$2.nil, data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.WriteString }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.data = data; $f.err = err; $f.n = n; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
response.prototype.WriteString = function(data) { return this.$val.WriteString(data); };
response.ptr.prototype.write = function(lenData, dataB, dataS) {
var $ptr, _r, _r$1, _r$2, _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$3, x$4, x$5, x$6, x$7, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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$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:
n = 0;
err = $ifaceNil;
w = this;
_r = w.conn.hijacked(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (_r) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (_r) { */ case 1:
/* */ if (lenData > 0) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (lenData > 0) { */ case 4:
$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; }
/* } */ case 5:
_tmp = 0;
_tmp$1 = $pkg.ErrHijacked;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
/* } */ case 2:
/* */ if (!w.wroteHeader) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (!w.wroteHeader) { */ case 7:
$r = w.WriteHeader(200); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 8:
if (lenData === 0) {
_tmp$2 = 0;
_tmp$3 = $ifaceNil;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
}
if (!w.bodyAllowed()) {
_tmp$4 = 0;
_tmp$5 = $pkg.ErrBodyNotAllowed;
n = _tmp$4;
err = _tmp$5;
$s = -1; return [n, err];
}
w.written = (x$3 = w.written, x$4 = (new $Int64(0, lenData)), new $Int64(x$3.$high + x$4.$high, x$3.$low + x$4.$low));
if (!((x$5 = w.contentLength, (x$5.$high === -1 && x$5.$low === 4294967295))) && (x$6 = w.written, x$7 = w.contentLength, (x$6.$high > x$7.$high || (x$6.$high === x$7.$high && x$6.$low > x$7.$low)))) {
_tmp$6 = 0;
_tmp$7 = $pkg.ErrContentLength;
n = _tmp$6;
err = _tmp$7;
$s = -1; return [n, err];
}
/* */ if (!(dataB === sliceType$2.nil)) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (!(dataB === sliceType$2.nil)) { */ case 10:
_r$1 = w.w.Write(dataB); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
n = _tuple[0];
err = _tuple[1];
$s = -1; return [n, err];
/* } else { */ case 11:
_r$2 = w.w.WriteString(dataS); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$1 = _r$2;
n = _tuple$1[0];
err = _tuple$1[1];
$s = -1; return [n, err];
/* } */ case 12:
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.write }; } $f.$ptr = $ptr; $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._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$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;
};
response.prototype.write = function(lenData, dataB, dataS) { return this.$val.write(lenData, dataB, dataS); };
response.ptr.prototype.finishRequest = function() {
var $ptr, _r, _r$1, _r$2, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
w = this;
(w.$ptr_handlerDone || (w.$ptr_handlerDone = new ptrType$22(function() { return this.$target.handlerDone; }, function($v) { this.$target.handlerDone = $v; }, w))).setTrue();
/* */ if (!w.wroteHeader) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!w.wroteHeader) { */ case 1:
$r = w.WriteHeader(200); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
_r = w.w.Flush(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
putBufioWriter(w.w);
$r = w.cw.close(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$1 = w.conn.bufw.Flush(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
$r = w.conn.r.abortPendingRead(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$2 = w.reqBody.Close(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
if (!(w.req.MultipartForm === ptrType$20.nil)) {
w.req.MultipartForm.RemoveAll();
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.finishRequest }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
response.prototype.finishRequest = function() { return this.$val.finishRequest(); };
response.ptr.prototype.shouldReuseConnection = function() {
var $ptr, _r, w, x$3, x$4, x$5, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; w = $f.w; 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:
w = this;
if (w.closeAfterReply) {
$s = -1; return false;
}
if (!(w.req.Method === "HEAD") && !((x$3 = w.contentLength, (x$3.$high === -1 && x$3.$low === 4294967295))) && w.bodyAllowed() && !((x$4 = w.contentLength, x$5 = w.written, (x$4.$high === x$5.$high && x$4.$low === x$5.$low)))) {
$s = -1; return false;
}
if (!($interfaceIsEqual(w.conn.werr, $ifaceNil))) {
$s = -1; return false;
}
_r = w.closedRequestBodyEarly(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (_r) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (_r) { */ case 1:
$s = -1; return false;
/* } */ case 2:
$s = -1; return true;
/* */ } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.shouldReuseConnection }; } $f.$ptr = $ptr; $f._r = _r; $f.w = w; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
};
response.prototype.shouldReuseConnection = function() { return this.$val.shouldReuseConnection(); };
response.ptr.prototype.closedRequestBodyEarly = function() {
var $ptr, _r, _tuple, _v, body$1, ok, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
w = this;
_tuple = $assertType(w.req.Body, ptrType$92, true);
body$1 = _tuple[0];
ok = _tuple[1];
if (!(ok)) { _v = false; $s = 1; continue s; }
_r = body$1.didEarlyClose(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_v = _r; case 1:
$s = -1; return _v;
/* */ } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.closedRequestBodyEarly }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
response.prototype.closedRequestBodyEarly = function() { return this.$val.closedRequestBodyEarly(); };
response.ptr.prototype.Flush = function() {
var $ptr, _r, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
w = this;
/* */ if (!w.wroteHeader) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!w.wroteHeader) { */ case 1:
$r = w.WriteHeader(200); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
_r = w.w.Flush(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
$r = w.cw.flush(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.Flush }; } $f.$ptr = $ptr; $f._r = _r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
response.prototype.Flush = function() { return this.$val.Flush(); };
conn.ptr.prototype.finalFlush = function() {
var $ptr, _r, c, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
if (!(c.bufr === ptrType$68.nil)) {
putBufioReader(c.bufr);
c.bufr = ptrType$68.nil;
}
/* */ if (!(c.bufw === ptrType$10.nil)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(c.bufw === ptrType$10.nil)) { */ case 1:
_r = c.bufw.Flush(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
putBufioWriter(c.bufw);
c.bufw = ptrType$10.nil;
/* } */ case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.finalFlush }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
};
conn.prototype.finalFlush = function() { return this.$val.finalFlush(); };
conn.ptr.prototype.close = function() {
var $ptr, _r, c, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = this;
$r = c.finalFlush(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r = c.rwc.Close(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.close }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
};
conn.prototype.close = function() { return this.$val.close(); };
conn.ptr.prototype.closeWriteAndWait = function() {
var $ptr, _r, _tuple, c, ok, tcp, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
c = this;
$r = c.finalFlush(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_tuple = $assertType(c.rwc, closeWriter, true);
tcp = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (ok) { */ case 2:
_r = tcp.CloseWrite(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
/* } */ case 3:
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.closeWriteAndWait }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.c = c; $f.ok = ok; $f.tcp = tcp; $f.$s = $s; $f.$r = $r; return $f;
};
conn.prototype.closeWriteAndWait = function() { return this.$val.closeWriteAndWait(); };
validNPN = function(proto) {
var $ptr, _1, proto;
_1 = proto;
if (_1 === ("") || _1 === ("http/1.1") || _1 === ("http/1.0")) {
return false;
}
return true;
};
conn.ptr.prototype.setState = function(nc, state) {
var $ptr, _1, c, hook, nc, srv, state, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
c = this;
srv = c.server;
_1 = state;
/* */ if (_1 === (0)) { $s = 2; continue; }
/* */ if ((_1 === (3)) || (_1 === (4))) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (_1 === (0)) { */ case 2:
$r = srv.trackConn(c, true); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 4; continue;
/* } else if ((_1 === (3)) || (_1 === (4))) { */ case 3:
$r = srv.trackConn(c, false); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 4:
case 1:
c.curState.Store(((state < 0 || state >= connStateInterface.length) ? ($throwRuntimeError("index out of range"), undefined) : connStateInterface[state]));
hook = srv.ConnState;
/* */ if (!(hook === $throwNilPointerError)) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (!(hook === $throwNilPointerError)) { */ case 7:
$r = hook(nc, state); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 8:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.setState }; } $f.$ptr = $ptr; $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;
};
conn.prototype.setState = function(nc, state) { return this.$val.setState(nc, state); };
badRequestError.prototype.Error = function() {
var $ptr, e;
e = this.$val;
return "Bad Request: " + (e);
};
$ptrType(badRequestError).prototype.Error = function() { return new badRequestError(this.$get()).Error(); };
isCommonNetReadError = function(err) {
var $ptr, _r, _tuple, _tuple$1, _v, err, neterr, oe, ok, ok$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
if ($interfaceIsEqual(err, io.EOF)) {
$s = -1; return true;
}
_tuple = $assertType(err, net.Error, true);
neterr = _tuple[0];
ok = _tuple[1];
if (!(ok)) { _v = false; $s = 3; continue s; }
_r = neterr.Timeout(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_v = _r; case 3:
/* */ if (_v) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (_v) { */ case 1:
$s = -1; return true;
/* } */ case 2:
_tuple$1 = $assertType(err, ptrType$56, true);
oe = _tuple$1[0];
ok$1 = _tuple$1[1];
if (ok$1 && oe.Op === "read") {
$s = -1; return true;
}
$s = -1; return false;
/* */ } return; } if ($f === undefined) { $f = { $blk: isCommonNetReadError }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
conn.ptr.prototype.serve = function(ctx) {
var $ptr, _arg, _arg$1, _entry, _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, _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$3, x$4, x$5, x$6, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _entry = $f._entry; _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; _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$3 = $f.x$3; 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);
c = [c];
c[0] = this;
_r = c[0].rwc.RemoteAddr(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_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; }
c[0].remoteAddr = _r$1;
$deferred.push([(function(c) { return function $b() {
var $ptr, _r$2, buf, err, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; buf = $f.buf; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
err = $recover();
/* */ if (!($interfaceIsEqual(err, $ifaceNil)) && !($interfaceIsEqual(err, $pkg.ErrAbortHandler))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil)) && !($interfaceIsEqual(err, $pkg.ErrAbortHandler))) { */ case 1:
buf = $makeSlice(sliceType$2, 65536);
buf = $subslice(buf, 0, runtime.Stack(buf, false));
$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; }
/* } */ case 2:
_r$2 = c[0].hijacked(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
/* */ if (!_r$2) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!_r$2) { */ case 4:
$r = c[0].close(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$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; }
/* } */ case 5:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.buf = buf; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
}; })(c), []]);
_tuple = $assertType(c[0].rwc, ptrType$95, true);
tlsConn = _tuple[0];
ok = _tuple[1];
/* */ if (ok) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (ok) { */ case 3:
d = c[0].server.ReadTimeout;
/* */ if (!((d.$high === 0 && d.$low === 0))) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (!((d.$high === 0 && d.$low === 0))) { */ case 5:
_r$2 = c[0].rwc.SetReadDeadline($clone($clone(time.Now(), time.Time).Add(d), time.Time)); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
/* } */ case 6:
d$1 = c[0].server.WriteTimeout;
/* */ if (!((d$1.$high === 0 && d$1.$low === 0))) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (!((d$1.$high === 0 && d$1.$low === 0))) { */ case 8:
_r$3 = c[0].rwc.SetWriteDeadline($clone($clone(time.Now(), time.Time).Add(d$1), time.Time)); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$3;
/* } */ case 9:
_r$4 = tlsConn.Handshake(); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
err = _r$4;
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 12:
_r$5 = c[0].rwc.RemoteAddr(); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_arg = _r$5;
_arg$1 = err;
$r = c[0].server.logf("http: TLS handshake error from %s: %v", new sliceType([_arg, _arg$1])); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } */ case 13:
c[0].tlsState = new tls.ConnectionState.ptr(0, false, false, 0, "", false, "", sliceType$15.nil, sliceType$16.nil, sliceType$4.nil, sliceType$2.nil, sliceType$2.nil);
_r$6 = tlsConn.ConnectionState(); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
tls.ConnectionState.copy(c[0].tlsState, _r$6);
proto = c[0].tlsState.NegotiatedProtocol;
/* */ if (validNPN(proto)) { $s = 17; continue; }
/* */ $s = 18; continue;
/* if (validNPN(proto)) { */ case 17:
fn = (_entry = c[0].server.TLSNextProto[$String.keyFor(proto)], _entry !== undefined ? _entry.v : $throwNilPointerError);
/* */ if (!(fn === $throwNilPointerError)) { $s = 19; continue; }
/* */ $s = 20; continue;
/* if (!(fn === $throwNilPointerError)) { */ case 19:
h = new initNPNRequest.ptr(tlsConn, new serverHandler.ptr(c[0].server));
$r = fn(c[0].server, tlsConn, new h.constructor.elem(h)); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 20:
$s = -1; return;
/* } */ case 18:
/* } */ case 4:
_r$7 = context.WithCancel(ctx); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_tuple$1 = _r$7;
ctx = _tuple$1[0];
cancelCtx = _tuple$1[1];
c[0].cancelCtx = cancelCtx;
$deferred.push([cancelCtx, []]);
c[0].r = new connReader.ptr(c[0], new sync.Mutex.ptr(0, 0), false, arrayType$5.zero(), $ifaceNil, ptrType$67.nil, false, false, new $Int64(0, 0));
_r$8 = newBufioReader(c[0].r); /* */ $s = 23; case 23: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
c[0].bufr = _r$8;
_r$9 = newBufioWriterSize((x$3 = new checkConnErrorWriter.ptr(c[0]), new x$3.constructor.elem(x$3)), 4096); /* */ $s = 24; case 24: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
c[0].bufw = _r$9;
/* while (true) { */ case 25:
_r$10 = c[0].readRequest(ctx); /* */ $s = 27; case 27: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
_tuple$2 = _r$10;
w = _tuple$2[0];
err$1 = _tuple$2[1];
/* */ if (!((x$4 = c[0].r.remain, x$5 = c[0].server.initialReadLimitSize(), (x$4.$high === x$5.$high && x$4.$low === x$5.$low)))) { $s = 28; continue; }
/* */ $s = 29; continue;
/* if (!((x$4 = c[0].r.remain, x$5 = c[0].server.initialReadLimitSize(), (x$4.$high === x$5.$high && x$4.$low === x$5.$low)))) { */ case 28:
$r = c[0].setState(c[0].rwc, 1); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 29:
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 31; continue; }
/* */ $s = 32; continue;
/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 31:
/* */ if ($interfaceIsEqual(err$1, errTooLarge)) { $s = 33; continue; }
/* */ $s = 34; continue;
/* if ($interfaceIsEqual(err$1, errTooLarge)) { */ case 33:
_r$11 = 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 = 35; case 35: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
_r$11;
$r = c[0].closeWriteAndWait(); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } */ case 34:
_r$12 = isCommonNetReadError(err$1); /* */ $s = 39; case 39: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
/* */ if (_r$12) { $s = 37; continue; }
/* */ $s = 38; continue;
/* if (_r$12) { */ case 37:
$s = -1; return;
/* } */ case 38:
publicErr = "400 Bad Request";
_tuple$3 = $assertType(err$1, badRequestError, true);
v = _tuple$3[0];
ok$1 = _tuple$3[1];
if (ok$1) {
publicErr = publicErr + ": " + (v);
}
_r$13 = 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 = 40; case 40: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
_r$13;
$s = -1; return;
/* } */ case 32:
req = w.req;
/* */ if (req.expectsContinue()) { $s = 41; continue; }
/* */ if (!(new Header(req.Header).get("Expect") === "")) { $s = 42; continue; }
/* */ $s = 43; continue;
/* if (req.expectsContinue()) { */ case 41:
if (req.ProtoAtLeast(1, 1) && !((x$6 = req.ContentLength, (x$6.$high === 0 && x$6.$low === 0)))) {
req.Body = new expectContinueReader.ptr(w, req.Body, false, false);
}
$s = 43; continue;
/* } else if (!(new Header(req.Header).get("Expect") === "")) { */ case 42:
$r = w.sendExpectationFailed(); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } */ case 43:
c[0].curReq.Store(w);
_r$14 = requestBodyRemains(req.Body); /* */ $s = 48; case 48: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
/* */ if (_r$14) { $s = 45; continue; }
/* */ $s = 46; continue;
/* if (_r$14) { */ case 45:
$r = registerOnHitEOF(req.Body, $methodVal(w.conn.r, "startBackgroundRead")); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 47; continue;
/* } else { */ case 46:
/* */ if (w.conn.bufr.Buffered() > 0) { $s = 50; continue; }
/* */ $s = 51; continue;
/* if (w.conn.bufr.Buffered() > 0) { */ case 50:
$r = w.conn.r.closeNotifyFromPipelinedRequest(); /* */ $s = 52; case 52: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 51:
$r = w.conn.r.startBackgroundRead(); /* */ $s = 53; case 53: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 47:
$r = new serverHandler.ptr(c[0].server).ServeHTTP(w, w.req); /* */ $s = 54; case 54: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = w.cancelCtx(); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$15 = c[0].hijacked(); /* */ $s = 58; case 58: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
/* */ if (_r$15) { $s = 56; continue; }
/* */ $s = 57; continue;
/* if (_r$15) { */ case 56:
$s = -1; return;
/* } */ case 57:
$r = w.finishRequest(); /* */ $s = 59; case 59: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$16 = w.shouldReuseConnection(); /* */ $s = 62; case 62: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
/* */ if (!_r$16) { $s = 60; continue; }
/* */ $s = 61; continue;
/* if (!_r$16) { */ case 60:
if (w.requestBodyLimitHit) { _v = true; $s = 65; continue s; }
_r$17 = w.closedRequestBodyEarly(); /* */ $s = 66; case 66: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
_v = _r$17; case 65:
/* */ if (_v) { $s = 63; continue; }
/* */ $s = 64; continue;
/* if (_v) { */ case 63:
$r = c[0].closeWriteAndWait(); /* */ $s = 67; case 67: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 64:
$s = -1; return;
/* } */ case 61:
$r = c[0].setState(c[0].rwc, 2); /* */ $s = 68; case 68: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
c[0].curReq.Store((ptrType$90.nil));
if (!w.conn.server.doKeepAlives()) {
$s = -1; return;
}
d$2 = c[0].server.idleTimeout();
/* */ if (!((d$2.$high === 0 && d$2.$low === 0))) { $s = 69; continue; }
/* */ $s = 70; continue;
/* if (!((d$2.$high === 0 && d$2.$low === 0))) { */ case 69:
_r$18 = c[0].rwc.SetReadDeadline($clone($clone(time.Now(), time.Time).Add(d$2), time.Time)); /* */ $s = 71; case 71: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
_r$18;
_r$19 = c[0].bufr.Peek(4); /* */ $s = 72; case 72: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
_tuple$4 = _r$19;
err$2 = _tuple$4[1];
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return;
}
/* } */ case 70:
_r$20 = c[0].rwc.SetReadDeadline(new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil)); /* */ $s = 73; case 73: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
_r$20;
/* } */ $s = 25; continue; case 26:
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: conn.ptr.prototype.serve }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._entry = _entry; $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._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$3 = x$3; $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; } }
};
conn.prototype.serve = function(ctx) { return this.$val.serve(ctx); };
response.ptr.prototype.sendExpectationFailed = function() {
var $ptr, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
w = this;
new Header(w.Header()).Set("Connection", "close");
$r = w.WriteHeader(417); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = w.finishRequest(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.sendExpectationFailed }; } $f.$ptr = $ptr; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
response.prototype.sendExpectationFailed = function() { return this.$val.sendExpectationFailed(); };
response.ptr.prototype.Hijack = function() {
var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tuple, buf, c, err, rwc, w, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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);
rwc = $ifaceNil;
buf = ptrType$85.nil;
err = $ifaceNil;
w = this;
if ((w.$ptr_handlerDone || (w.$ptr_handlerDone = new ptrType$22(function() { return this.$target.handlerDone; }, function($v) { this.$target.handlerDone = $v; }, w))).isSet()) {
$panic(new $String("net/http: Hijack called after ServeHTTP finished"));
}
/* */ if (w.wroteHeader) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (w.wroteHeader) { */ case 1:
$r = w.cw.flush(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
c = w.conn;
$r = c.mu.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(c.mu, "Unlock"), []]);
_r = c.hijackLocked(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
rwc = _tuple[0];
buf = _tuple[1];
err = _tuple[2];
if ($interfaceIsEqual(err, $ifaceNil)) {
putBufioWriter(w.w);
w.w = ptrType$10.nil;
}
_tmp = rwc;
_tmp$1 = buf;
_tmp$2 = err;
rwc = _tmp;
buf = _tmp$1;
err = _tmp$2;
$s = -1; return [rwc, buf, err];
/* */ } 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.$ptr = $ptr; $f._r = _r; $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; } }
};
response.prototype.Hijack = function() { return this.$val.Hijack(); };
response.ptr.prototype.CloseNotify = function() {
var $ptr, w;
w = this;
if ((w.$ptr_handlerDone || (w.$ptr_handlerDone = new ptrType$22(function() { return this.$target.handlerDone; }, function($v) { this.$target.handlerDone = $v; }, w))).isSet()) {
$panic(new $String("net/http: CloseNotify called after ServeHTTP finished"));
}
return w.closeNotifyCh;
};
response.prototype.CloseNotify = function() { return this.$val.CloseNotify(); };
registerOnHitEOF = function(rc, fn) {
var $ptr, _r, _ref, fn, rc, v, v$1, v$2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
_ref = rc;
/* */ if ($assertType(_ref, ptrType$94, true)[1]) { $s = 1; continue; }
/* */ if ($assertType(_ref, ptrType$92, true)[1]) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if ($assertType(_ref, ptrType$94, true)[1]) { */ case 1:
v = _ref.$val;
$r = registerOnHitEOF(v.readCloser, fn); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 4; continue;
/* } else if ($assertType(_ref, ptrType$92, true)[1]) { */ case 2:
v$1 = _ref.$val;
$r = v$1.registerOnHitEOF(fn); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 4; continue;
/* } else { */ case 3:
v$2 = _ref;
_r = fmt.Sprintf("%T", new sliceType([rc])); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$panic(new $String("unexpected type " + _r));
/* } */ case 4:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: registerOnHitEOF }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
requestBodyRemains = function(rc) {
var $ptr, _r, _r$1, _r$2, _ref, rc, v, v$1, v$2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _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:
if ($interfaceIsEqual(rc, new $pkg.NoBody.constructor.elem($pkg.NoBody))) {
$s = -1; return false;
}
_ref = rc;
/* */ if ($assertType(_ref, ptrType$94, true)[1]) { $s = 1; continue; }
/* */ if ($assertType(_ref, ptrType$92, true)[1]) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if ($assertType(_ref, ptrType$94, true)[1]) { */ case 1:
v = _ref.$val;
_r = requestBodyRemains(v.readCloser); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } else if ($assertType(_ref, ptrType$92, true)[1]) { */ case 2:
v$1 = _ref.$val;
_r$1 = v$1.bodyRemains(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return _r$1;
/* } else { */ case 3:
v$2 = _ref;
_r$2 = fmt.Sprintf("%T", new sliceType([rc])); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$panic(new $String("unexpected type " + _r$2));
/* } */ case 4:
$s = -1; return false;
/* */ } return; } if ($f === undefined) { $f = { $blk: requestBodyRemains }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $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;
};
HandlerFunc.prototype.ServeHTTP = function(w, r) {
var $ptr, f, r, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; r = $f.r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
f = this.$val;
$r = f(w, r); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: HandlerFunc.prototype.ServeHTTP }; } $f.$ptr = $ptr; $f.f = f; $f.r = r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
$ptrType(HandlerFunc).prototype.ServeHTTP = function(w, r) { return new HandlerFunc(this.$get()).ServeHTTP(w, r); };
Error = function(w, error, code) {
var $ptr, _r, _r$1, _r$2, code, error, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; code = $f.code; error = $f.error; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = w.Header(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$r = new Header(_r).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; }
_r$1 = w.Header(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$r = new Header(_r$1).Set("X-Content-Type-Options", "nosniff"); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = w.WriteHeader(code); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$2 = fmt.Fprintln(w, new sliceType([new $String(error)])); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Error }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.code = code; $f.error = error; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Error = Error;
NotFound = function(w, r) {
var $ptr, r, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; r = $f.r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: NotFound }; } $f.$ptr = $ptr; $f.r = r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.NotFound = NotFound;
NotFoundHandler = function() {
var $ptr;
return new HandlerFunc((NotFound));
};
$pkg.NotFoundHandler = NotFoundHandler;
Redirect = function(w, r, urlStr, code) {
var $ptr, _entry, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tuple, _tuple$1, code, err, i, note, olddir, oldpath, query, r, trailing, u, urlStr, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _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; 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; urlStr = $f.urlStr; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = url.Parse(urlStr); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
u = _tuple[0];
err = _tuple[1];
if ($interfaceIsEqual(err, $ifaceNil)) {
if (u.Scheme === "" && u.Host === "") {
oldpath = r.URL.Path;
if (oldpath === "") {
oldpath = "/";
}
if (urlStr === "" || !((urlStr.charCodeAt(0) === 47))) {
_tuple$1 = path.Split(oldpath);
olddir = _tuple$1[0];
urlStr = olddir + urlStr;
}
query = "";
i = strings.Index(urlStr, "?");
if (!((i === -1))) {
_tmp = $substring(urlStr, 0, i);
_tmp$1 = $substring(urlStr, i);
urlStr = _tmp;
query = _tmp$1;
}
trailing = strings.HasSuffix(urlStr, "/");
urlStr = path.Clean(urlStr);
if (trailing && !strings.HasSuffix(urlStr, "/")) {
urlStr = urlStr + ("/");
}
urlStr = urlStr + (query);
}
}
_r$1 = w.Header(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$r = new Header(_r$1).Set("Location", hexEscapeNonASCII(urlStr)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = w.WriteHeader(code); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (r.Method === "GET") { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (r.Method === "GET") { */ case 5:
_r$2 = htmlEscape(urlStr); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
note = "<a href=\"" + _r$2 + "\">" + (_entry = statusText[$Int.keyFor(code)], _entry !== undefined ? _entry.v : "") + "</a>.\n";
_r$3 = fmt.Fprintln(w, new sliceType([new $String(note)])); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$3;
/* } */ case 6:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Redirect }; } $f.$ptr = $ptr; $f._entry = _entry; $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.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.urlStr = urlStr; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.Redirect = Redirect;
htmlEscape = function(s) {
var $ptr, _r, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = htmlReplacer.Replace(s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: htmlEscape }; } $f.$ptr = $ptr; $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
redirectHandler.ptr.prototype.ServeHTTP = function(w, r) {
var $ptr, r, rh, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; r = $f.r; rh = $f.rh; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
rh = this;
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: redirectHandler.ptr.prototype.ServeHTTP }; } $f.$ptr = $ptr; $f.r = r; $f.rh = rh; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
redirectHandler.prototype.ServeHTTP = function(w, r) { return this.$val.ServeHTTP(w, r); };
RedirectHandler = function(url$1, code) {
var $ptr, code, url$1;
return new redirectHandler.ptr(url$1, code);
};
$pkg.RedirectHandler = RedirectHandler;
pathMatch = function(pattern, path$1) {
var $ptr, n, path$1, pattern;
if (pattern.length === 0) {
return false;
}
n = pattern.length;
if (!((pattern.charCodeAt((n - 1 >> 0)) === 47))) {
return pattern === path$1;
}
return path$1.length >= n && $substring(path$1, 0, n) === pattern;
};
cleanPath = function(p) {
var $ptr, np, p;
if (p === "") {
return "/";
}
if (!((p.charCodeAt(0) === 47))) {
p = "/" + p;
}
np = path.Clean(p);
if ((p.charCodeAt((p.length - 1 >> 0)) === 47) && !(np === "/")) {
np = np + ("/");
}
return np;
};
ServeMux.ptr.prototype.match = function(path$1) {
var $ptr, _entry, _i, _keys, _ref, h, k, mux, n, path$1, pattern, v;
h = $ifaceNil;
pattern = "";
mux = this;
n = 0;
_ref = mux.m;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
continue;
}
k = _entry.k;
v = $clone(_entry.v, muxEntry);
if (!pathMatch(k, path$1)) {
_i++;
continue;
}
if ($interfaceIsEqual(h, $ifaceNil) || k.length > n) {
n = k.length;
h = v.h;
pattern = v.pattern;
}
_i++;
}
return [h, pattern];
};
ServeMux.prototype.match = function(path$1) { return this.$val.match(path$1); };
ServeMux.ptr.prototype.Handler = function(r) {
var $ptr, _r, _r$1, _tmp, _tmp$1, _tuple, _tuple$1, h, mux, p, pattern, r, url$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; h = $f.h; mux = $f.mux; p = $f.p; pattern = $f.pattern; r = $f.r; url$1 = $f.url$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
h = $ifaceNil;
pattern = "";
mux = this;
/* */ if (!(r.Method === "CONNECT")) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(r.Method === "CONNECT")) { */ case 1:
p = cleanPath(r.URL.Path);
/* */ if (!(p === r.URL.Path)) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!(p === r.URL.Path)) { */ case 3:
_r = mux.handler(r.Host, p); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
pattern = _tuple[1];
url$1 = $clone(r.URL, url.URL);
url$1.Path = p;
_tmp = RedirectHandler(url$1.String(), 301);
_tmp$1 = pattern;
h = _tmp;
pattern = _tmp$1;
$s = -1; return [h, pattern];
/* } */ case 4:
/* } */ case 2:
_r$1 = mux.handler(r.Host, r.URL.Path); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple$1 = _r$1;
h = _tuple$1[0];
pattern = _tuple$1[1];
$s = -1; return [h, pattern];
/* */ } return; } if ($f === undefined) { $f = { $blk: ServeMux.ptr.prototype.Handler }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.h = h; $f.mux = mux; $f.p = p; $f.pattern = pattern; $f.r = r; $f.url$1 = url$1; $f.$s = $s; $f.$r = $r; return $f;
};
ServeMux.prototype.Handler = function(r) { return this.$val.Handler(r); };
ServeMux.ptr.prototype.handler = function(host, path$1) {
var $ptr, _tmp, _tmp$1, _tuple, _tuple$1, h, host, mux, path$1, pattern, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
h = $ifaceNil;
pattern = "";
mux = this;
$r = mux.mu.RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(mux.mu, "RUnlock"), []]);
if (mux.hosts) {
_tuple = mux.match(host + path$1);
h = _tuple[0];
pattern = _tuple[1];
}
if ($interfaceIsEqual(h, $ifaceNil)) {
_tuple$1 = mux.match(path$1);
h = _tuple$1[0];
pattern = _tuple$1[1];
}
if ($interfaceIsEqual(h, $ifaceNil)) {
_tmp = NotFoundHandler();
_tmp$1 = "";
h = _tmp;
pattern = _tmp$1;
}
$s = -1; return [h, pattern];
/* */ } 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.$ptr = $ptr; $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; } }
};
ServeMux.prototype.handler = function(host, path$1) { return this.$val.handler(host, path$1); };
ServeMux.ptr.prototype.ServeHTTP = function(w, r) {
var $ptr, _r, _r$1, _tuple, h, mux, r, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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:
mux = this;
/* */ if (r.RequestURI === "*") { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (r.RequestURI === "*") { */ case 1:
/* */ if (r.ProtoAtLeast(1, 1)) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (r.ProtoAtLeast(1, 1)) { */ case 3:
_r = w.Header(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$r = new Header(_r).Set("Connection", "close"); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 4:
$r = w.WriteHeader(400); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } */ case 2:
_r$1 = mux.Handler(r); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
h = _tuple[0];
$r = h.ServeHTTP(w, r); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: ServeMux.ptr.prototype.ServeHTTP }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.h = h; $f.mux = mux; $f.r = r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
ServeMux.prototype.ServeHTTP = function(w, r) { return this.$val.ServeHTTP(w, r); };
ServeMux.ptr.prototype.Handle = function(pattern, handler) {
var $ptr, _entry, _entry$1, _key, _key$1, handler, mux, n, path$1, pattern, url$1, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _key = $f._key; _key$1 = $f._key$1; handler = $f.handler; mux = $f.mux; n = $f.n; path$1 = $f.path$1; pattern = $f.pattern; url$1 = $f.url$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);
mux = this;
$r = mux.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(mux.mu, "Unlock"), []]);
if (pattern === "") {
$panic(new $String("http: invalid pattern " + pattern));
}
if ($interfaceIsEqual(handler, $ifaceNil)) {
$panic(new $String("http: nil handler"));
}
if ((_entry = mux.m[$String.keyFor(pattern)], _entry !== undefined ? _entry.v : new muxEntry.ptr(false, $ifaceNil, "")).explicit) {
$panic(new $String("http: multiple registrations for " + pattern));
}
if (mux.m === false) {
mux.m = {};
}
_key = pattern; (mux.m || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: new muxEntry.ptr(true, handler, pattern) };
if (!((pattern.charCodeAt(0) === 47))) {
mux.hosts = true;
}
n = pattern.length;
if (n > 0 && (pattern.charCodeAt((n - 1 >> 0)) === 47) && !(_entry$1 = mux.m[$String.keyFor($substring(pattern, 0, (n - 1 >> 0)))], _entry$1 !== undefined ? _entry$1.v : new muxEntry.ptr(false, $ifaceNil, "")).explicit) {
path$1 = pattern;
if (!((pattern.charCodeAt(0) === 47))) {
path$1 = $substring(pattern, strings.Index(pattern, "/"));
}
url$1 = new url.URL.ptr("", "", ptrType$18.nil, "", path$1, "", false, "", "");
_key$1 = $substring(pattern, 0, (n - 1 >> 0)); (mux.m || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$1)] = { k: _key$1, v: new muxEntry.ptr(false, RedirectHandler(url$1.String(), 301), pattern) };
}
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: ServeMux.ptr.prototype.Handle }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._key = _key; $f._key$1 = _key$1; $f.handler = handler; $f.mux = mux; $f.n = n; $f.path$1 = path$1; $f.pattern = pattern; $f.url$1 = url$1; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
ServeMux.prototype.Handle = function(pattern, handler) { return this.$val.Handle(pattern, handler); };
ServeMux.ptr.prototype.HandleFunc = function(pattern, handler) {
var $ptr, handler, mux, pattern, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; handler = $f.handler; mux = $f.mux; pattern = $f.pattern; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
mux = this;
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: ServeMux.ptr.prototype.HandleFunc }; } $f.$ptr = $ptr; $f.handler = handler; $f.mux = mux; $f.pattern = pattern; $f.$s = $s; $f.$r = $r; return $f;
};
ServeMux.prototype.HandleFunc = function(pattern, handler) { return this.$val.HandleFunc(pattern, handler); };
Server.ptr.prototype.getDoneChan = function() {
var $ptr, s, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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);
s = this;
$r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(s.mu, "Unlock"), []]);
$s = -1; return s.getDoneChanLocked();
/* */ } 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.$ptr = $ptr; $f.s = s; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Server.prototype.getDoneChan = function() { return this.$val.getDoneChan(); };
Server.ptr.prototype.getDoneChanLocked = function() {
var $ptr, s;
s = this;
if (s.doneChan === $chanNil) {
s.doneChan = new $Chan(structType, 0);
}
return s.doneChan;
};
Server.prototype.getDoneChanLocked = function() { return this.$val.getDoneChanLocked(); };
Server.ptr.prototype.closeDoneChanLocked = function() {
var $ptr, _selection, ch, s, $r;
/* */ var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _selection = $f._selection; ch = $f.ch; s = $f.s; $r = $f.$r; }
s = this;
ch = s.getDoneChanLocked();
_selection = $select([[ch], []]);
if (_selection[0] === 0) {
} else if (_selection[0] === 1) {
$close(ch);
}
/* */ if ($f === undefined) { $f = { $blk: Server.ptr.prototype.closeDoneChanLocked }; } $f.$ptr = $ptr; $f._selection = _selection; $f.ch = ch; $f.s = s; $f.$r = $r; return $f;
};
Server.prototype.closeDoneChanLocked = function() { return this.$val.closeDoneChanLocked(); };
Server.ptr.prototype.Close = function() {
var $ptr, _entry, _i, _keys, _r, _r$1, _ref, c, err, srv, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _i = $f._i; _keys = $f._keys; _r = $f._r; _r$1 = $f._r$1; _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);
srv = this;
$r = srv.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(srv.mu, "Unlock"), []]);
srv.closeDoneChanLocked();
_r = srv.closeListenersLocked(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
_ref = srv.activeConn;
_i = 0;
_keys = $keys(_ref);
/* while (true) { */ case 3:
/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 4; continue; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
/* continue; */ $s = 3; continue;
}
c = _entry.k;
_r$1 = c.rwc.Close(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
delete srv.activeConn[ptrType$93.keyFor(c)];
_i++;
/* } */ $s = 3; continue; case 4:
$s = -1; return err;
/* */ } 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.$ptr = $ptr; $f._entry = _entry; $f._i = _i; $f._keys = _keys; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f.c = c; $f.err = err; $f.srv = srv; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Server.prototype.Close = function() { return this.$val.Close(); };
Server.ptr.prototype.Shutdown = function(ctx) {
var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _selection, ctx, lnerr, srv, ticker, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _selection = $f._selection; ctx = $f.ctx; 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);
srv = this;
atomic.AddInt32((srv.$ptr_inShutdown || (srv.$ptr_inShutdown = new ptrType$86(function() { return this.$target.inShutdown; }, function($v) { this.$target.inShutdown = $v; }, srv))), 1);
$deferred.push([atomic.AddInt32, [(srv.$ptr_inShutdown || (srv.$ptr_inShutdown = new ptrType$86(function() { return this.$target.inShutdown; }, function($v) { this.$target.inShutdown = $v; }, srv))), -1]]);
$r = srv.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r = srv.closeListenersLocked(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
lnerr = _r;
srv.closeDoneChanLocked();
$r = srv.mu.Unlock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
ticker = time.NewTicker(shutdownPollInterval);
$deferred.push([$methodVal(ticker, "Stop"), []]);
/* while (true) { */ case 4:
_r$1 = srv.closeIdleConns(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
/* */ if (_r$1) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (_r$1) { */ case 6:
$s = -1; return lnerr;
/* } */ case 7:
_r$2 = ctx.Done(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$3 = $select([[_r$2], [ticker.C]]); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_selection = _r$3;
/* */ if (_selection[0] === 0) { $s = 11; continue; }
/* */ if (_selection[0] === 1) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (_selection[0] === 0) { */ case 11:
_r$4 = ctx.Err(); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
$s = -1; return _r$4;
/* } else if (_selection[0] === 1) { */ case 12:
/* } */ case 13:
/* } */ $s = 4; continue; case 5:
$s = -1; return $ifaceNil;
/* */ } 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.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._selection = _selection; $f.ctx = ctx; $f.lnerr = lnerr; $f.srv = srv; $f.ticker = ticker; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Server.prototype.Shutdown = function(ctx) { return this.$val.Shutdown(ctx); };
Server.ptr.prototype.closeIdleConns = function() {
var $ptr, _entry, _i, _keys, _r, _ref, _tuple, c, ok, quiescent, s, st, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _i = $f._i; _keys = $f._keys; _r = $f._r; _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);
s = this;
$r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(s.mu, "Unlock"), []]);
quiescent = true;
_ref = s.activeConn;
_i = 0;
_keys = $keys(_ref);
/* while (true) { */ case 2:
/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 3; continue; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
/* continue; */ $s = 2; continue;
}
c = _entry.k;
_tuple = $assertType(c.curState.Load(), ConnState, true);
st = _tuple[0];
ok = _tuple[1];
/* */ if (!ok || !((st === 2))) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!ok || !((st === 2))) { */ case 4:
quiescent = false;
_i++;
/* continue; */ $s = 2; continue;
/* } */ case 5:
_r = c.rwc.Close(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
delete s.activeConn[ptrType$93.keyFor(c)];
_i++;
/* } */ $s = 2; continue; case 3:
$s = -1; return quiescent;
/* */ } 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.$ptr = $ptr; $f._entry = _entry; $f._i = _i; $f._keys = _keys; $f._r = _r; $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; } }
};
Server.prototype.closeIdleConns = function() { return this.$val.closeIdleConns(); };
Server.ptr.prototype.closeListenersLocked = function() {
var $ptr, _entry, _i, _keys, _r, _ref, cerr, err, ln, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _i = $f._i; _keys = $f._keys; _r = $f._r; _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:
s = this;
err = $ifaceNil;
_ref = s.listeners;
_i = 0;
_keys = $keys(_ref);
/* while (true) { */ case 1:
/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 2; continue; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
/* continue; */ $s = 1; continue;
}
ln = _entry.k;
_r = ln.Close(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
cerr = _r;
if (!($interfaceIsEqual(cerr, $ifaceNil)) && $interfaceIsEqual(err, $ifaceNil)) {
err = cerr;
}
delete s.listeners[net.Listener.keyFor(ln)];
_i++;
/* } */ $s = 1; continue; case 2:
$s = -1; return err;
/* */ } return; } if ($f === undefined) { $f = { $blk: Server.ptr.prototype.closeListenersLocked }; } $f.$ptr = $ptr; $f._entry = _entry; $f._i = _i; $f._keys = _keys; $f._r = _r; $f._ref = _ref; $f.cerr = cerr; $f.err = err; $f.ln = ln; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
Server.prototype.closeListenersLocked = function() { return this.$val.closeListenersLocked(); };
ConnState.prototype.String = function() {
var $ptr, _entry, c;
c = this.$val;
return (_entry = stateName[ConnState.keyFor(c)], _entry !== undefined ? _entry.v : "");
};
$ptrType(ConnState).prototype.String = function() { return new ConnState(this.$get()).String(); };
serverHandler.ptr.prototype.ServeHTTP = function(rw, req) {
var $ptr, handler, req, rw, sh, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; handler = $f.handler; req = $f.req; rw = $f.rw; sh = $f.sh; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
sh = this;
handler = sh.srv.Handler;
if ($interfaceIsEqual(handler, $ifaceNil)) {
handler = $pkg.DefaultServeMux;
}
if (req.RequestURI === "*" && req.Method === "OPTIONS") {
handler = (x$3 = new globalOptionsHandler.ptr(), new x$3.constructor.elem(x$3));
}
$r = handler.ServeHTTP(rw, req); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: serverHandler.ptr.prototype.ServeHTTP }; } $f.$ptr = $ptr; $f.handler = handler; $f.req = req; $f.rw = rw; $f.sh = sh; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
};
serverHandler.prototype.ServeHTTP = function(rw, req) { return this.$val.ServeHTTP(rw, req); };
Server.ptr.prototype.ListenAndServe = function() {
var $ptr, _r, _tuple, addr, err, ln, srv, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; addr = $f.addr; err = $f.err; ln = $f.ln; srv = $f.srv; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
srv = this;
addr = srv.Addr;
if (addr === "") {
addr = ":http";
}
_tuple = net.Listen("tcp", addr);
ln = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
_r = srv.Serve((x$3 = new tcpKeepAliveListener.ptr($assertType(ln, ptrType$96)), new x$3.constructor.elem(x$3))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: Server.ptr.prototype.ListenAndServe }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.addr = addr; $f.err = err; $f.ln = ln; $f.srv = srv; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
};
Server.prototype.ListenAndServe = function() { return this.$val.ListenAndServe(); };
Server.ptr.prototype.shouldConfigureHTTP2ForServe = function() {
var $ptr, srv;
srv = this;
if (srv.TLSConfig === ptrType$13.nil) {
return true;
}
return strSliceContains(srv.TLSConfig.NextProtos, "h2");
};
Server.prototype.shouldConfigureHTTP2ForServe = function() { return this.$val.shouldConfigureHTTP2ForServe(); };
Server.ptr.prototype.Serve = function(l) {
var $ptr, _arg, _arg$1, _arg$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _selection, _tuple, _tuple$1, _v, baseCtx, c, ctx, e, err, fn, l, max, ne, ok, rw, srv, tempDelay, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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);
srv = this;
$deferred.push([$methodVal(l, "Close"), []]);
fn = testHookServerServe;
/* */ if (!(fn === $throwNilPointerError)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(fn === $throwNilPointerError)) { */ case 1:
$r = fn(srv, l); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
tempDelay = new time.Duration(0, 0);
_r = srv.setupHTTP2_Serve(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
$r = srv.trackListener(l, true); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(srv, "trackListener"), [l, false]]);
baseCtx = context.Background();
_r$1 = context.WithValue(baseCtx, $pkg.ServerContextKey, srv); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
ctx = _r$1;
_arg = ctx;
_arg$1 = $pkg.LocalAddrContextKey;
_r$2 = l.Addr(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_arg$2 = _r$2;
_r$3 = context.WithValue(_arg, _arg$1, _arg$2); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
ctx = _r$3;
/* while (true) { */ case 9:
_r$4 = l.Accept(); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_tuple = _r$4;
rw = _tuple[0];
e = _tuple[1];
/* */ if (!($interfaceIsEqual(e, $ifaceNil))) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (!($interfaceIsEqual(e, $ifaceNil))) { */ case 12:
_r$5 = srv.getDoneChan(); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_selection = $select([[_r$5], []]);
/* */ if (_selection[0] === 0) { $s = 15; continue; }
/* */ if (_selection[0] === 1) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (_selection[0] === 0) { */ case 15:
$s = -1; return $pkg.ErrServerClosed;
/* } else if (_selection[0] === 1) { */ case 16:
/* } */ case 17:
_tuple$1 = $assertType(e, net.Error, true);
ne = _tuple$1[0];
ok = _tuple$1[1];
if (!(ok)) { _v = false; $s = 20; continue s; }
_r$6 = ne.Temporary(); /* */ $s = 21; case 21: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_v = _r$6; case 20:
/* */ if (_v) { $s = 18; continue; }
/* */ $s = 19; continue;
/* if (_v) { */ case 18:
if ((tempDelay.$high === 0 && tempDelay.$low === 0)) {
tempDelay = new time.Duration(0, 5000000);
} else {
tempDelay = $mul64(tempDelay, (new time.Duration(0, 2)));
}
max = new time.Duration(0, 1000000000);
if ((tempDelay.$high > max.$high || (tempDelay.$high === max.$high && tempDelay.$low > max.$low))) {
tempDelay = max;
}
$r = srv.logf("http: Accept error: %v; retrying in %v", new sliceType([e, tempDelay])); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = time.Sleep(tempDelay); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* continue; */ $s = 9; continue;
/* } */ case 19:
$s = -1; return e;
/* } */ case 13:
tempDelay = new time.Duration(0, 0);
_r$7 = srv.newConn(rw); /* */ $s = 24; case 24: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
c = _r$7;
$r = c.setState(c.rwc, 0); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$go($methodVal(c, "serve"), [ctx]);
/* } */ $s = 9; continue; case 10:
$s = -1; return $ifaceNil;
/* */ } 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.$ptr = $ptr; $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._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; } }
};
Server.prototype.Serve = function(l) { return this.$val.Serve(l); };
Server.ptr.prototype.trackListener = function(ln, add) {
var $ptr, _key, add, ln, s, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
s = this;
$r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(s.mu, "Unlock"), []]);
if (s.listeners === false) {
s.listeners = {};
}
if (add) {
if (($keys(s.listeners).length === 0) && ($keys(s.activeConn).length === 0)) {
s.doneChan = $chanNil;
}
_key = ln; (s.listeners || $throwRuntimeError("assignment to entry in nil map"))[net.Listener.keyFor(_key)] = { k: _key, v: new structType.ptr() };
} else {
delete s.listeners[net.Listener.keyFor(ln)];
}
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Server.ptr.prototype.trackListener }; } $f.$ptr = $ptr; $f._key = _key; $f.add = add; $f.ln = ln; $f.s = s; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Server.prototype.trackListener = function(ln, add) { return this.$val.trackListener(ln, add); };
Server.ptr.prototype.trackConn = function(c, add) {
var $ptr, _key, add, c, s, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
s = this;
$r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(s.mu, "Unlock"), []]);
if (s.activeConn === false) {
s.activeConn = {};
}
if (add) {
_key = c; (s.activeConn || $throwRuntimeError("assignment to entry in nil map"))[ptrType$93.keyFor(_key)] = { k: _key, v: new structType.ptr() };
} else {
delete s.activeConn[ptrType$93.keyFor(c)];
}
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Server.ptr.prototype.trackConn }; } $f.$ptr = $ptr; $f._key = _key; $f.add = add; $f.c = c; $f.s = s; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Server.prototype.trackConn = function(c, add) { return this.$val.trackConn(c, add); };
Server.ptr.prototype.idleTimeout = function() {
var $ptr, s, x$3;
s = this;
if (!((x$3 = s.IdleTimeout, (x$3.$high === 0 && x$3.$low === 0)))) {
return s.IdleTimeout;
}
return s.ReadTimeout;
};
Server.prototype.idleTimeout = function() { return this.$val.idleTimeout(); };
Server.ptr.prototype.readHeaderTimeout = function() {
var $ptr, s, x$3;
s = this;
if (!((x$3 = s.ReadHeaderTimeout, (x$3.$high === 0 && x$3.$low === 0)))) {
return s.ReadHeaderTimeout;
}
return s.ReadTimeout;
};
Server.prototype.readHeaderTimeout = function() { return this.$val.readHeaderTimeout(); };
Server.ptr.prototype.doKeepAlives = function() {
var $ptr, s;
s = this;
return (atomic.LoadInt32((s.$ptr_disableKeepAlives || (s.$ptr_disableKeepAlives = new ptrType$86(function() { return this.$target.disableKeepAlives; }, function($v) { this.$target.disableKeepAlives = $v; }, s)))) === 0) && !s.shuttingDown();
};
Server.prototype.doKeepAlives = function() { return this.$val.doKeepAlives(); };
Server.ptr.prototype.shuttingDown = function() {
var $ptr, s;
s = this;
return !((atomic.LoadInt32((s.$ptr_inShutdown || (s.$ptr_inShutdown = new ptrType$86(function() { return this.$target.inShutdown; }, function($v) { this.$target.inShutdown = $v; }, s)))) === 0));
};
Server.prototype.shuttingDown = function() { return this.$val.shuttingDown(); };
Server.ptr.prototype.SetKeepAlivesEnabled = function(v) {
var $ptr, _r, srv, v, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; 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);
srv = this;
if (v) {
atomic.StoreInt32((srv.$ptr_disableKeepAlives || (srv.$ptr_disableKeepAlives = new ptrType$86(function() { return this.$target.disableKeepAlives; }, function($v) { this.$target.disableKeepAlives = $v; }, srv))), 0);
$s = -1; return;
}
atomic.StoreInt32((srv.$ptr_disableKeepAlives || (srv.$ptr_disableKeepAlives = new ptrType$86(function() { return this.$target.disableKeepAlives; }, function($v) { this.$target.disableKeepAlives = $v; }, srv))), 1);
_r = srv.closeIdleConns(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
$r = srv.mu.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(srv.mu, "Unlock"), []]);
srv.closeDoneChanLocked();
srv.doneChan = $chanNil;
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Server.ptr.prototype.SetKeepAlivesEnabled }; } $f.$ptr = $ptr; $f._r = _r; $f.srv = srv; $f.v = v; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Server.prototype.SetKeepAlivesEnabled = function(v) { return this.$val.SetKeepAlivesEnabled(v); };
Server.ptr.prototype.logf = function(format, args) {
var $ptr, args, format, s, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; args = $f.args; format = $f.format; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
s = this;
/* */ if (!(s.ErrorLog === ptrType$51.nil)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(s.ErrorLog === ptrType$51.nil)) { */ case 1:
$r = s.ErrorLog.Printf(format, args); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 3; continue;
/* } else { */ case 2:
$r = log.Printf(format, args); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 3:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Server.ptr.prototype.logf }; } $f.$ptr = $ptr; $f.args = args; $f.format = format; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
};
Server.prototype.logf = function(format, args) { return this.$val.logf(format, args); };
Server.ptr.prototype.ListenAndServeTLS = function(certFile, keyFile) {
var $ptr, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, addr, certFile, config, configHasCert, err, err$1, err$2, keyFile, ln, srv, tlsListener, x$3, x$4, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; addr = $f.addr; certFile = $f.certFile; config = $f.config; configHasCert = $f.configHasCert; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; keyFile = $f.keyFile; ln = $f.ln; srv = $f.srv; tlsListener = $f.tlsListener; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
srv = this;
addr = srv.Addr;
if (addr === "") {
addr = ":https";
}
_r = srv.setupHTTP2_ListenAndServeTLS(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
_r$1 = cloneTLSConfig(srv.TLSConfig); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
config = _r$1;
if (!strSliceContains(config.NextProtos, "http/1.1")) {
config.NextProtos = $append(config.NextProtos, "http/1.1");
}
configHasCert = config.Certificates.$length > 0 || !(config.GetCertificate === $throwNilPointerError);
/* */ if (!configHasCert || !(certFile === "") || !(keyFile === "")) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!configHasCert || !(certFile === "") || !(keyFile === "")) { */ case 3:
err$1 = $ifaceNil;
config.Certificates = $makeSlice(sliceType$10, 1);
_r$2 = tls.LoadX509KeyPair(certFile, keyFile); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple = _r$2;
tls.Certificate.copy((x$3 = config.Certificates, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])), _tuple[0]);
err$1 = _tuple[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return err$1;
}
/* } */ case 4:
_tuple$1 = net.Listen("tcp", addr);
ln = _tuple$1[0];
err$2 = _tuple$1[1];
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return err$2;
}
tlsListener = tls.NewListener((x$4 = new tcpKeepAliveListener.ptr($assertType(ln, ptrType$96)), new x$4.constructor.elem(x$4)), config);
_r$3 = srv.Serve(tlsListener); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
$s = -1; return _r$3;
/* */ } return; } if ($f === undefined) { $f = { $blk: Server.ptr.prototype.ListenAndServeTLS }; } $f.$ptr = $ptr; $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.addr = addr; $f.certFile = certFile; $f.config = config; $f.configHasCert = configHasCert; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.keyFile = keyFile; $f.ln = ln; $f.srv = srv; $f.tlsListener = tlsListener; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
};
Server.prototype.ListenAndServeTLS = function(certFile, keyFile) { return this.$val.ListenAndServeTLS(certFile, keyFile); };
Server.ptr.prototype.setupHTTP2_ListenAndServeTLS = function() {
var $ptr, srv, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; srv = $f.srv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
srv = this;
$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; }
$s = -1; return srv.nextProtoErr;
/* */ } return; } if ($f === undefined) { $f = { $blk: Server.ptr.prototype.setupHTTP2_ListenAndServeTLS }; } $f.$ptr = $ptr; $f.srv = srv; $f.$s = $s; $f.$r = $r; return $f;
};
Server.prototype.setupHTTP2_ListenAndServeTLS = function() { return this.$val.setupHTTP2_ListenAndServeTLS(); };
Server.ptr.prototype.setupHTTP2_Serve = function() {
var $ptr, srv, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; srv = $f.srv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
srv = this;
$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; }
$s = -1; return srv.nextProtoErr;
/* */ } return; } if ($f === undefined) { $f = { $blk: Server.ptr.prototype.setupHTTP2_Serve }; } $f.$ptr = $ptr; $f.srv = srv; $f.$s = $s; $f.$r = $r; return $f;
};
Server.prototype.setupHTTP2_Serve = function() { return this.$val.setupHTTP2_Serve(); };
Server.ptr.prototype.onceSetNextProtoDefaults_Serve = function() {
var $ptr, srv, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; srv = $f.srv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
srv = this;
/* */ if (srv.shouldConfigureHTTP2ForServe()) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (srv.shouldConfigureHTTP2ForServe()) { */ case 1:
$r = srv.onceSetNextProtoDefaults(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Server.ptr.prototype.onceSetNextProtoDefaults_Serve }; } $f.$ptr = $ptr; $f.srv = srv; $f.$s = $s; $f.$r = $r; return $f;
};
Server.prototype.onceSetNextProtoDefaults_Serve = function() { return this.$val.onceSetNextProtoDefaults_Serve(); };
Server.ptr.prototype.onceSetNextProtoDefaults = function() {
var $ptr, _r, srv, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; srv = $f.srv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
srv = this;
if (strings.Contains(os.Getenv("GODEBUG"), "http2server=0")) {
$s = -1; return;
}
/* */ if (srv.TLSNextProto === false) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (srv.TLSNextProto === false) { */ case 1:
_r = http2ConfigureServer(srv, ptrType$49.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
srv.nextProtoErr = _r;
/* } */ case 2:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Server.ptr.prototype.onceSetNextProtoDefaults }; } $f.$ptr = $ptr; $f._r = _r; $f.srv = srv; $f.$s = $s; $f.$r = $r; return $f;
};
Server.prototype.onceSetNextProtoDefaults = function() { return this.$val.onceSetNextProtoDefaults(); };
tcpKeepAliveListener.ptr.prototype.Accept = function() {
var $ptr, _r, _r$1, _r$2, _tmp, _tmp$1, _tuple, c, err, ln, tc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; c = $f.c; err = $f.err; ln = $f.ln; tc = $f.tc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
c = $ifaceNil;
err = $ifaceNil;
ln = this;
_r = ln.TCPListener.AcceptTCP(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
tc = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [c, err];
}
_r$1 = tc.SetKeepAlive(true); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
_r$2 = tc.SetKeepAlivePeriod(new time.Duration(41, 3906340864)); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2;
_tmp = tc;
_tmp$1 = $ifaceNil;
c = _tmp;
err = _tmp$1;
$s = -1; return [c, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: tcpKeepAliveListener.ptr.prototype.Accept }; } $f.$ptr = $ptr; $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.c = c; $f.err = err; $f.ln = ln; $f.tc = tc; $f.$s = $s; $f.$r = $r; return $f;
};
tcpKeepAliveListener.prototype.Accept = function() { return this.$val.Accept(); };
globalOptionsHandler.ptr.prototype.ServeHTTP = function(w, r) {
var $ptr, _r, _r$1, mb, r, w, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; mb = $f.mb; r = $f.r; w = $f.w; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = w.Header(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$r = new Header(_r).Set("Content-Length", "0"); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (!((x$3 = r.ContentLength, (x$3.$high === 0 && x$3.$low === 0)))) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!((x$3 = r.ContentLength, (x$3.$high === 0 && x$3.$low === 0)))) { */ case 3:
mb = MaxBytesReader(w, r.Body, new $Int64(0, 4096));
_r$1 = io.Copy(ioutil.Discard, mb); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
/* } */ case 4:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: globalOptionsHandler.ptr.prototype.ServeHTTP }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.mb = mb; $f.r = r; $f.w = w; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
};
globalOptionsHandler.prototype.ServeHTTP = function(w, r) { return this.$val.ServeHTTP(w, r); };
initNPNRequest.ptr.prototype.ServeHTTP = function(rw, req) {
var $ptr, _r, _r$1, _r$2, h, req, rw, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; h = $f.h; req = $f.req; rw = $f.rw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
h = this;
/* */ if (req.TLS === ptrType$17.nil) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (req.TLS === ptrType$17.nil) { */ case 1:
req.TLS = new tls.ConnectionState.ptr(0, false, false, 0, "", false, "", sliceType$15.nil, sliceType$16.nil, sliceType$4.nil, sliceType$2.nil, sliceType$2.nil);
_r = h.c.ConnectionState(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
tls.ConnectionState.copy(req.TLS, _r);
/* } */ case 2:
if ($interfaceIsEqual(req.Body, $ifaceNil)) {
req.Body = new $pkg.NoBody.constructor.elem($pkg.NoBody);
}
/* */ if (req.RemoteAddr === "") { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (req.RemoteAddr === "") { */ case 4:
_r$1 = h.c.RemoteAddr(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$2 = _r$1.String(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
req.RemoteAddr = _r$2;
/* } */ case 5:
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: initNPNRequest.ptr.prototype.ServeHTTP }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.h = h; $f.req = req; $f.rw = rw; $f.$s = $s; $f.$r = $r; return $f;
};
initNPNRequest.prototype.ServeHTTP = function(rw, req) { return this.$val.ServeHTTP(rw, req); };
newLoggingConn = function(baseName, c) {
var $ptr, _entry, _entry$1, _key, _r, baseName, c, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _key = $f._key; _r = $f._r; 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);
$r = uniqNameMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(uniqNameMu, "Unlock"), []]);
_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 };
_r = 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 = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return new loggingConn.ptr(_r, c);
/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: newLoggingConn }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._key = _key; $f._r = _r; $f.baseName = baseName; $f.c = c; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
loggingConn.ptr.prototype.Write = function(p) {
var $ptr, _r, _tuple, c, err, n, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
n = 0;
err = $ifaceNil;
c = this;
$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; }
_r = c.Conn.Write(p); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
$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; }
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: loggingConn.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
};
loggingConn.prototype.Write = function(p) { return this.$val.Write(p); };
loggingConn.ptr.prototype.Read = function(p) {
var $ptr, _r, _tuple, c, err, n, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
n = 0;
err = $ifaceNil;
c = this;
$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; }
_r = c.Conn.Read(p); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
$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; }
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: loggingConn.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
};
loggingConn.prototype.Read = function(p) { return this.$val.Read(p); };
loggingConn.ptr.prototype.Close = function() {
var $ptr, _r, c, err, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
err = $ifaceNil;
c = this;
$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; }
_r = c.Conn.Close(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
$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; }
$s = -1; return err;
/* */ } return; } if ($f === undefined) { $f = { $blk: loggingConn.ptr.prototype.Close }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
};
loggingConn.prototype.Close = function() { return this.$val.Close(); };
checkConnErrorWriter.ptr.prototype.Write = function(p) {
var $ptr, _r, _tuple, err, n, p, w, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
n = 0;
err = $ifaceNil;
w = this;
_r = w.c.rwc.Write(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil)) && $interfaceIsEqual(w.c.werr, $ifaceNil)) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil)) && $interfaceIsEqual(w.c.werr, $ifaceNil)) { */ case 2:
w.c.werr = err;
$r = w.c.cancelCtx(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 3:
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: checkConnErrorWriter.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.n = n; $f.p = p; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
};
checkConnErrorWriter.prototype.Write = function(p) { return this.$val.Write(p); };
numLeadingCRorLF = function(v) {
var $ptr, _i, _ref, b, n, v;
n = 0;
_ref = v;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if ((b === 13) || (b === 10)) {
n = n + (1) >> 0;
_i++;
continue;
}
break;
}
return n;
};
strSliceContains = function(ss, s) {
var $ptr, _i, _ref, s, ss, v;
_ref = ss;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (v === s) {
return true;
}
_i++;
}
return false;
};
DetectContentType = function(data) {
var $ptr, _i, _r, _ref, ct, data, firstNonWS, sig, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _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:
if (data.$length > 512) {
data = $subslice(data, 0, 512);
}
firstNonWS = 0;
while (true) {
if (!(firstNonWS < data.$length && isWS(((firstNonWS < 0 || firstNonWS >= data.$length) ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + firstNonWS])))) { break; }
firstNonWS = firstNonWS + (1) >> 0;
}
_ref = sniffSignatures;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
sig = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_r = sig.match(data, firstNonWS); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
ct = _r;
if (!(ct === "")) {
$s = -1; return ct;
}
_i++;
/* } */ $s = 1; continue; case 2:
$s = -1; return "application/octet-stream";
/* */ } return; } if ($f === undefined) { $f = { $blk: DetectContentType }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.ct = ct; $f.data = data; $f.firstNonWS = firstNonWS; $f.sig = sig; $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.DetectContentType = DetectContentType;
isWS = function(b) {
var $ptr, _1, b;
_1 = b;
if ((_1 === (9)) || (_1 === (10)) || (_1 === (12)) || (_1 === (13)) || (_1 === (32))) {
return true;
}
return false;
};
exactSig.ptr.prototype.match = function(data, firstNonWS) {
var $ptr, data, e, firstNonWS;
e = this;
if (bytes.HasPrefix(data, e.sig)) {
return e.ct;
}
return "";
};
exactSig.prototype.match = function(data, firstNonWS) { return this.$val.match(data, firstNonWS); };
maskedSig.ptr.prototype.match = function(data, firstNonWS) {
var $ptr, _i, _ref, data, db, firstNonWS, i, m, mask, x$3;
m = this;
if (m.skipWS) {
data = $subslice(data, firstNonWS);
}
if (!((m.pat.$length === m.mask.$length))) {
return "";
}
if (data.$length < m.mask.$length) {
return "";
}
_ref = m.mask;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
mask = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
db = (((i < 0 || i >= data.$length) ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + i]) & mask) >>> 0;
if (!((db === (x$3 = m.pat, ((i < 0 || i >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i]))))) {
return "";
}
_i++;
}
return m.ct;
};
maskedSig.prototype.match = function(data, firstNonWS) { return this.$val.match(data, firstNonWS); };
htmlSig.prototype.match = function(data, firstNonWS) {
var $ptr, _i, _ref, b, data, db, db$1, firstNonWS, h, i, x$3;
h = this;
data = $subslice(data, firstNonWS);
if (data.$length < (h.$length + 1 >> 0)) {
return "";
}
_ref = h;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
db = ((i < 0 || i >= data.$length) ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + i]);
if (65 <= b && b <= 90) {
db = (db & (223)) >>> 0;
}
if (!((b === db))) {
return "";
}
_i++;
}
db$1 = (x$3 = h.$length, ((x$3 < 0 || x$3 >= data.$length) ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + x$3]));
if (!((db$1 === 32)) && !((db$1 === 62))) {
return "";
}
return "text/html; charset=utf-8";
};
$ptrType(htmlSig).prototype.match = function(data, firstNonWS) { return this.$get().match(data, firstNonWS); };
mp4Sig.ptr.prototype.match = function(data, firstNonWS) {
var $ptr, _r, boxSize, data, firstNonWS, st;
if (data.$length < 12) {
return "";
}
boxSize = (($clone(binary.BigEndian, binary.bigEndian).Uint32($subslice(data, 0, 4)) >> 0));
if (!(((_r = boxSize % 4, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0)) || data.$length < boxSize) {
return "";
}
if (!bytes.Equal($subslice(data, 4, 8), mp4ftype)) {
return "";
}
st = 8;
while (true) {
if (!(st < boxSize)) { break; }
if (st === 12) {
st = st + (4) >> 0;
continue;
}
if (bytes.Equal($subslice(data, st, (st + 3 >> 0)), mp4)) {
return "video/mp4";
}
st = st + (4) >> 0;
}
return "";
};
mp4Sig.prototype.match = function(data, firstNonWS) { return this.$val.match(data, firstNonWS); };
textSig.ptr.prototype.match = function(data, firstNonWS) {
var $ptr, _i, _ref, b, data, firstNonWS;
_ref = $subslice(data, firstNonWS);
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if ((b <= 8) || ((b === 11)) || (14 <= b && b <= 26) || (28 <= b && b <= 31)) {
return "";
}
_i++;
}
return "text/plain; charset=utf-8";
};
textSig.prototype.match = function(data, firstNonWS) { return this.$val.match(data, firstNonWS); };
StatusText = function(code) {
var $ptr, _entry, code;
return (_entry = statusText[$Int.keyFor(code)], _entry !== undefined ? _entry.v : "");
};
$pkg.StatusText = StatusText;
errorReader.ptr.prototype.Read = function(p) {
var $ptr, _tmp, _tmp$1, err, n, p, r;
n = 0;
err = $ifaceNil;
r = this;
_tmp = 0;
_tmp$1 = r.err;
n = _tmp;
err = _tmp$1;
return [n, err];
};
errorReader.prototype.Read = function(p) { return this.$val.Read(p); };
byteReader.ptr.prototype.Read = function(p) {
var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, br, err, n, p;
n = 0;
err = $ifaceNil;
br = this;
if (br.done) {
_tmp = 0;
_tmp$1 = io.EOF;
n = _tmp;
err = _tmp$1;
return [n, err];
}
if (p.$length === 0) {
_tmp$2 = 0;
_tmp$3 = $ifaceNil;
n = _tmp$2;
err = _tmp$3;
return [n, err];
}
br.done = true;
(0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = br.b);
_tmp$4 = 1;
_tmp$5 = io.EOF;
n = _tmp$4;
err = _tmp$5;
return [n, err];
};
byteReader.prototype.Read = function(p) { return this.$val.Read(p); };
newTransferWriter = function(r) {
var $ptr, _r, _r$1, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _v, atLeastHTTP11, err, r, rr, rr$1, t, x$3, x$4, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _v = $f._v; atLeastHTTP11 = $f.atLeastHTTP11; err = $f.err; r = $f.r; rr = $f.rr; rr$1 = $f.rr$1; t = $f.t; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = ptrType$97.nil;
err = $ifaceNil;
t = new transferWriter.ptr("", $ifaceNil, $ifaceNil, false, new $Int64(0, 0), false, sliceType$1.nil, false, false, false, $chanNil);
atLeastHTTP11 = false;
_ref = r;
/* */ if ($assertType(_ref, ptrType$7, true)[1]) { $s = 1; continue; }
/* */ if ($assertType(_ref, ptrType$16, true)[1]) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if ($assertType(_ref, ptrType$7, true)[1]) { */ case 1:
rr = _ref.$val;
/* */ if (!((x$3 = rr.ContentLength, (x$3.$high === 0 && x$3.$low === 0))) && $interfaceIsEqual(rr.Body, $ifaceNil)) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!((x$3 = rr.ContentLength, (x$3.$high === 0 && x$3.$low === 0))) && $interfaceIsEqual(rr.Body, $ifaceNil)) { */ case 4:
_tmp = ptrType$97.nil;
_r = fmt.Errorf("http: Request.ContentLength=%d with nil Body", new sliceType([rr.ContentLength])); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tmp$1 = _r;
t = _tmp;
err = _tmp$1;
$s = -1; return [t, err];
/* } */ case 5:
t.Method = valueOrDefault(rr.Method, "GET");
t.Close = rr.Close;
t.TransferEncoding = rr.TransferEncoding;
t.Trailer = rr.Trailer;
atLeastHTTP11 = rr.protoAtLeastOutgoing(1, 1);
t.Body = rr.Body;
t.BodyCloser = rr.Body;
t.ContentLength = rr.outgoingLength();
if (!((x$4 = t.ContentLength, (x$4.$high < 0 || (x$4.$high === 0 && x$4.$low < 0))) && (t.TransferEncoding.$length === 0) && atLeastHTTP11)) { _v = false; $s = 9; continue s; }
_r$1 = t.shouldSendChunkedRequestBody(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_v = _r$1; case 9:
/* */ if (_v) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (_v) { */ case 7:
t.TransferEncoding = new sliceType$1(["chunked"]);
/* } */ case 8:
$s = 3; continue;
/* } else if ($assertType(_ref, ptrType$16, true)[1]) { */ case 2:
rr$1 = _ref.$val;
t.IsResponse = true;
if (!(rr$1.Request === ptrType$7.nil)) {
t.Method = rr$1.Request.Method;
}
t.Body = rr$1.Body;
t.BodyCloser = rr$1.Body;
t.ContentLength = rr$1.ContentLength;
t.Close = rr$1.Close;
t.TransferEncoding = rr$1.TransferEncoding;
t.Trailer = rr$1.Trailer;
atLeastHTTP11 = rr$1.ProtoAtLeast(1, 1);
t.ResponseToHEAD = noResponseBodyExpected(t.Method);
/* } */ case 3:
if (t.ResponseToHEAD) {
t.Body = $ifaceNil;
if (chunked(t.TransferEncoding)) {
t.ContentLength = new $Int64(-1, 4294967295);
}
} else {
if (!atLeastHTTP11 || $interfaceIsEqual(t.Body, $ifaceNil)) {
t.TransferEncoding = sliceType$1.nil;
}
if (chunked(t.TransferEncoding)) {
t.ContentLength = new $Int64(-1, 4294967295);
} else if ($interfaceIsEqual(t.Body, $ifaceNil)) {
t.ContentLength = new $Int64(0, 0);
}
}
if (!chunked(t.TransferEncoding)) {
t.Trailer = false;
}
_tmp$2 = t;
_tmp$3 = $ifaceNil;
t = _tmp$2;
err = _tmp$3;
$s = -1; return [t, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: newTransferWriter }; } $f.$ptr = $ptr; $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._v = _v; $f.atLeastHTTP11 = atLeastHTTP11; $f.err = err; $f.r = r; $f.rr = rr; $f.rr$1 = rr$1; $f.t = t; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
};
transferWriter.ptr.prototype.shouldSendChunkedRequestBody = function() {
var $ptr, t, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; t = $f.t; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
if ((x$3 = t.ContentLength, (x$3.$high > 0 || (x$3.$high === 0 && x$3.$low >= 0))) || $interfaceIsEqual(t.Body, $ifaceNil)) {
$s = -1; return false;
}
/* */ if (requestMethodUsuallyLacksBody(t.Method)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (requestMethodUsuallyLacksBody(t.Method)) { */ case 1:
$r = t.probeRequestBody(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return !($interfaceIsEqual(t.Body, $ifaceNil));
/* } */ case 2:
$s = -1; return true;
/* */ } return; } if ($f === undefined) { $f = { $blk: transferWriter.ptr.prototype.shouldSendChunkedRequestBody }; } $f.$ptr = $ptr; $f.t = t; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
};
transferWriter.prototype.shouldSendChunkedRequestBody = function() { return this.$val.shouldSendChunkedRequestBody(); };
transferWriter.ptr.prototype.probeRequestBody = function() {
var $ptr, _r, _selection, rres, t, timer, x$3, x$4, x$5, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _selection = $f._selection; rres = $f.rres; t = $f.t; timer = $f.timer; 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:
t = [t];
t[0] = this;
t[0].ByteReadCh = new $Chan(readResult, 1);
$go((function(t) { return function $b(body$1) {
var $ptr, _r, _tuple, body$1, buf, rres, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
buf = arrayType$5.zero();
rres = new readResult.ptr(0, $ifaceNil, 0);
_r = body$1.Read(new sliceType$2(buf)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
rres.n = _tuple[0];
rres.err = _tuple[1];
if (rres.n === 1) {
rres.b = buf[0];
}
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.body$1 = body$1; $f.buf = buf; $f.rres = rres; $f.$s = $s; $f.$r = $r; return $f;
}; })(t), [t[0].Body]);
timer = time.NewTimer(new time.Duration(0, 200000000));
_r = $select([[t[0].ByteReadCh], [timer.C]]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_selection = _r;
if (_selection[0] === 0) {
rres = $clone(_selection[1][0], readResult);
timer.Stop();
if ((rres.n === 0) && $interfaceIsEqual(rres.err, io.EOF)) {
t[0].Body = $ifaceNil;
t[0].ContentLength = new $Int64(0, 0);
} else if (rres.n === 1) {
if (!($interfaceIsEqual(rres.err, $ifaceNil))) {
t[0].Body = io.MultiReader(new sliceType$21([new byteReader.ptr(rres.b, false), (x$3 = new errorReader.ptr(rres.err), new x$3.constructor.elem(x$3))]));
} else {
t[0].Body = io.MultiReader(new sliceType$21([new byteReader.ptr(rres.b, false), t[0].Body]));
}
} else if (!($interfaceIsEqual(rres.err, $ifaceNil))) {
t[0].Body = (x$4 = new errorReader.ptr(rres.err), new x$4.constructor.elem(x$4));
}
} else if (_selection[0] === 1) {
t[0].Body = io.MultiReader(new sliceType$21([(x$5 = new finishAsyncByteRead.ptr(t[0]), new x$5.constructor.elem(x$5)), t[0].Body]));
t[0].FlushHeaders = true;
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: transferWriter.ptr.prototype.probeRequestBody }; } $f.$ptr = $ptr; $f._r = _r; $f._selection = _selection; $f.rres = rres; $f.t = t; $f.timer = timer; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
};
transferWriter.prototype.probeRequestBody = function() { return this.$val.probeRequestBody(); };
noResponseBodyExpected = function(requestMethod) {
var $ptr, requestMethod;
return requestMethod === "HEAD";
};
transferWriter.ptr.prototype.shouldSendContentLength = function() {
var $ptr, t, x$3, x$4, x$5;
t = this;
if (chunked(t.TransferEncoding)) {
return false;
}
if ((x$3 = t.ContentLength, (x$3.$high > 0 || (x$3.$high === 0 && x$3.$low > 0)))) {
return true;
}
if ((x$4 = t.ContentLength, (x$4.$high < 0 || (x$4.$high === 0 && x$4.$low < 0)))) {
return false;
}
if (t.Method === "POST" || t.Method === "PUT") {
return true;
}
if ((x$5 = t.ContentLength, (x$5.$high === 0 && x$5.$low === 0)) && isIdentity(t.TransferEncoding)) {
if (t.Method === "GET" || t.Method === "HEAD") {
return false;
}
return true;
}
return false;
};
transferWriter.prototype.shouldSendContentLength = function() { return this.$val.shouldSendContentLength(); };
transferWriter.ptr.prototype.WriteHeader = function(w) {
var $ptr, _1, _entry, _i, _keys, _r, _r$1, _r$2, _r$3, _r$4, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _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; _r$4 = $f._r$4; _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:
t = this;
/* */ if (t.Close) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (t.Close) { */ case 1:
_r = io.WriteString(w, "Connection: close\r\n"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
/* } */ case 2:
/* */ if (t.shouldSendContentLength()) { $s = 4; continue; }
/* */ if (chunked(t.TransferEncoding)) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (t.shouldSendContentLength()) { */ case 4:
_r$1 = io.WriteString(w, "Content-Length: "); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple$1 = _r$1;
err$1 = _tuple$1[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return err$1;
}
_r$2 = io.WriteString(w, strconv.FormatInt(t.ContentLength, 10) + "\r\n"); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$2 = _r$2;
err$2 = _tuple$2[1];
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return err$2;
}
$s = 6; continue;
/* } else if (chunked(t.TransferEncoding)) { */ case 5:
_r$3 = io.WriteString(w, "Transfer-Encoding: chunked\r\n"); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$3 = _r$3;
err$3 = _tuple$3[1];
if (!($interfaceIsEqual(err$3, $ifaceNil))) {
$s = -1; return err$3;
}
/* } */ case 6:
/* */ if (!(t.Trailer === false)) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (!(t.Trailer === false)) { */ case 10:
keys = $makeSlice(sliceType$1, 0, $keys(t.Trailer).length);
_ref = t.Trailer;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
continue;
}
k = _entry.k;
k = CanonicalHeaderKey(k);
_1 = k;
if (_1 === ("Transfer-Encoding") || _1 === ("Trailer") || _1 === ("Content-Length")) {
$s = -1; return new badStringError.ptr("invalid Trailer key", k);
}
keys = $append(keys, k);
_i++;
}
/* */ if (keys.$length > 0) { $s = 12; continue; }
/* */ $s = 13; continue;
/* if (keys.$length > 0) { */ case 12:
$r = sort.Strings(keys); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$4 = io.WriteString(w, "Trailer: " + strings.Join(keys, ",") + "\r\n"); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_tuple$4 = _r$4;
err$4 = _tuple$4[1];
if (!($interfaceIsEqual(err$4, $ifaceNil))) {
$s = -1; return err$4;
}
/* } */ case 13:
/* } */ case 11:
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: transferWriter.ptr.prototype.WriteHeader }; } $f.$ptr = $ptr; $f._1 = _1; $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._r$4 = _r$4; $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;
};
transferWriter.prototype.WriteHeader = function(w) { return this.$val.WriteHeader(w); };
transferWriter.ptr.prototype.WriteBody = function(w) {
var $ptr, _r, _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, bw, cw, err, err$1, err$2, ncopy, nextra, ok, t, w, x$3, x$4, x$5, x$6, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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; 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$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:
t = this;
err = $ifaceNil;
ncopy = new $Int64(0, 0);
/* */ if (!($interfaceIsEqual(t.Body, $ifaceNil))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!($interfaceIsEqual(t.Body, $ifaceNil))) { */ case 1:
/* */ if (chunked(t.TransferEncoding)) { $s = 3; continue; }
/* */ if ((x$3 = t.ContentLength, (x$3.$high === -1 && x$3.$low === 4294967295))) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (chunked(t.TransferEncoding)) { */ case 3:
_tuple = $assertType(w, ptrType$10, true);
bw = _tuple[0];
ok = _tuple[1];
if (ok && !t.IsResponse) {
w = new internal.FlushAfterChunkWriter.ptr(bw);
}
cw = internal.NewChunkedWriter(w);
_r = io.Copy(cw, t.Body); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
err = _tuple$1[1];
/* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 8:
_r$1 = cw.Close(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
err = _r$1;
/* } */ case 9:
$s = 6; continue;
/* } else if ((x$3 = t.ContentLength, (x$3.$high === -1 && x$3.$low === 4294967295))) { */ case 4:
_r$2 = io.Copy(w, t.Body); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$2 = _r$2;
ncopy = _tuple$2[0];
err = _tuple$2[1];
$s = 6; continue;
/* } else { */ case 5:
_r$3 = io.Copy(w, io.LimitReader(t.Body, t.ContentLength)); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$3 = _r$3;
ncopy = _tuple$3[0];
err = _tuple$3[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
nextra = new $Int64(0, 0);
_r$4 = io.Copy(ioutil.Discard, t.Body); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_tuple$4 = _r$4;
nextra = _tuple$4[0];
err = _tuple$4[1];
ncopy = (x$4 = nextra, new $Int64(ncopy.$high + x$4.$high, ncopy.$low + x$4.$low));
/* } */ case 6:
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
/* } */ case 2:
/* */ if (!($interfaceIsEqual(t.BodyCloser, $ifaceNil))) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if (!($interfaceIsEqual(t.BodyCloser, $ifaceNil))) { */ case 14:
_r$5 = t.BodyCloser.Close(); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
err$1 = _r$5;
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
$s = -1; return err$1;
}
/* } */ case 15:
/* */ if (!t.ResponseToHEAD && !((x$5 = t.ContentLength, (x$5.$high === -1 && x$5.$low === 4294967295))) && !((x$6 = t.ContentLength, (x$6.$high === ncopy.$high && x$6.$low === ncopy.$low)))) { $s = 17; continue; }
/* */ $s = 18; continue;
/* if (!t.ResponseToHEAD && !((x$5 = t.ContentLength, (x$5.$high === -1 && x$5.$low === 4294967295))) && !((x$6 = t.ContentLength, (x$6.$high === ncopy.$high && x$6.$low === ncopy.$low)))) { */ case 17:
_r$6 = fmt.Errorf("http: ContentLength=%d with Body length %d", new sliceType([t.ContentLength, ncopy])); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
$s = -1; return _r$6;
/* } */ case 18:
/* */ if (chunked(t.TransferEncoding)) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if (chunked(t.TransferEncoding)) { */ case 20:
/* */ if (!(t.Trailer === false)) { $s = 22; continue; }
/* */ $s = 23; continue;
/* if (!(t.Trailer === false)) { */ case 22:
_r$7 = new Header(t.Trailer).Write(w); /* */ $s = 24; case 24: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
err$2 = _r$7;
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
$s = -1; return err$2;
}
/* } */ case 23:
_r$8 = io.WriteString(w, "\r\n"); /* */ $s = 25; case 25: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_tuple$5 = _r$8;
err = _tuple$5[1];
/* } */ case 21:
$s = -1; return err;
/* */ } return; } if ($f === undefined) { $f = { $blk: transferWriter.ptr.prototype.WriteBody }; } $f.$ptr = $ptr; $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._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.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$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;
};
transferWriter.prototype.WriteBody = function(w) { return this.$val.WriteBody(w); };
transferReader.ptr.prototype.protoAtLeast = function(m, n) {
var $ptr, m, n, t;
t = this;
return t.ProtoMajor > m || ((t.ProtoMajor === m) && t.ProtoMinor >= n);
};
transferReader.prototype.protoAtLeast = function(m, n) { return this.$val.protoAtLeast(m, n); };
bodyAllowedForStatus = function(status) {
var $ptr, status;
if (status >= 100 && status <= 199) {
return false;
} else if ((status === 204)) {
return false;
} else if ((status === 304)) {
return false;
}
return true;
};
suppressedHeaders = function(status) {
var $ptr, status;
if ((status === 304)) {
return suppressedHeaders304;
} else if (!bodyAllowedForStatus(status)) {
return suppressedHeadersNoBody;
}
return sliceType$1.nil;
};
readTransfer = function(msg, r) {
var $ptr, _r, _r$1, _r$2, _r$3, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
err = $ifaceNil;
t = new transferReader.ptr(false, 0, "GET", 0, 0, $ifaceNil, new $Int64(0, 0), sliceType$1.nil, false, false);
isResponse = false;
_ref = msg;
if ($assertType(_ref, ptrType$16, true)[1]) {
rr = _ref.$val;
t.Header = rr.Header;
t.StatusCode = rr.StatusCode;
t.ProtoMajor = rr.ProtoMajor;
t.ProtoMinor = rr.ProtoMinor;
t.Close = shouldClose(t.ProtoMajor, t.ProtoMinor, t.Header, true);
isResponse = true;
if (!(rr.Request === ptrType$7.nil)) {
t.RequestMethod = rr.Request.Method;
}
} else if ($assertType(_ref, ptrType$7, true)[1]) {
rr$1 = _ref.$val;
t.Header = rr$1.Header;
t.RequestMethod = rr$1.Method;
t.ProtoMajor = rr$1.ProtoMajor;
t.ProtoMinor = rr$1.ProtoMinor;
t.StatusCode = 200;
t.Close = rr$1.Close;
} else {
rr$2 = _ref;
$panic(new $String("unexpected type"));
}
if ((t.ProtoMajor === 0) && (t.ProtoMinor === 0)) {
_tmp = 1;
_tmp$1 = 1;
t.ProtoMajor = _tmp;
t.ProtoMinor = _tmp$1;
}
_r = t.fixTransferEncoding(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = err;
$s = -1; return err;
}
_r$1 = fixLength(isResponse, t.StatusCode, t.RequestMethod, t.Header, t.TransferEncoding); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
realLength = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = err;
$s = -1; return err;
}
/* */ if (isResponse && t.RequestMethod === "HEAD") { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (isResponse && t.RequestMethod === "HEAD") { */ case 3:
_r$2 = parseContentLength(new Header(t.Header).get("Content-Length")); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$1 = _r$2;
n = _tuple$1[0];
err$1 = _tuple$1[1];
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
err = err$1;
$s = -1; return err;
} else {
t.ContentLength = n;
}
$s = 5; continue;
/* } else { */ case 4:
t.ContentLength = realLength;
/* } */ case 5:
_r$3 = fixTrailer(t.Header, t.TransferEncoding); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$2 = _r$3;
t.Trailer = _tuple$2[0];
err = _tuple$2[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
err = err;
$s = -1; return err;
}
_ref$1 = msg;
if ($assertType(_ref$1, ptrType$16, true)[1]) {
if ((realLength.$high === -1 && realLength.$low === 4294967295) && !chunked(t.TransferEncoding) && bodyAllowedForStatus(t.StatusCode)) {
t.Close = true;
}
}
if (chunked(t.TransferEncoding)) {
if (noResponseBodyExpected(t.RequestMethod)) {
t.Body = new $pkg.NoBody.constructor.elem($pkg.NoBody);
} else {
t.Body = new body.ptr(internal.NewChunkedReader(r), msg, r, t.Close, false, new sync.Mutex.ptr(0, 0), false, false, false, $throwNilPointerError);
}
} else if ((realLength.$high === 0 && realLength.$low === 0)) {
t.Body = new $pkg.NoBody.constructor.elem($pkg.NoBody);
} else if ((realLength.$high > 0 || (realLength.$high === 0 && realLength.$low > 0))) {
t.Body = new body.ptr(io.LimitReader(r, realLength), $ifaceNil, ptrType$68.nil, t.Close, false, new sync.Mutex.ptr(0, 0), false, false, false, $throwNilPointerError);
} else if (t.Close) {
t.Body = new body.ptr(r, $ifaceNil, ptrType$68.nil, t.Close, false, new sync.Mutex.ptr(0, 0), false, false, false, $throwNilPointerError);
} else {
t.Body = new $pkg.NoBody.constructor.elem($pkg.NoBody);
}
_ref$2 = msg;
if ($assertType(_ref$2, ptrType$7, true)[1]) {
rr$3 = _ref$2.$val;
rr$3.Body = t.Body;
rr$3.ContentLength = t.ContentLength;
rr$3.TransferEncoding = t.TransferEncoding;
rr$3.Close = t.Close;
rr$3.Trailer = t.Trailer;
} else if ($assertType(_ref$2, ptrType$16, true)[1]) {
rr$4 = _ref$2.$val;
rr$4.Body = t.Body;
rr$4.ContentLength = t.ContentLength;
rr$4.TransferEncoding = t.TransferEncoding;
rr$4.Close = t.Close;
rr$4.Trailer = t.Trailer;
}
err = $ifaceNil;
$s = -1; return err;
/* */ } return; } if ($f === undefined) { $f = { $blk: readTransfer }; } $f.$ptr = $ptr; $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._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;
};
chunked = function(te) {
var $ptr, te;
return te.$length > 0 && (0 >= te.$length ? ($throwRuntimeError("index out of range"), undefined) : te.$array[te.$offset + 0]) === "chunked";
};
isIdentity = function(te) {
var $ptr, te;
return (te.$length === 1) && (0 >= te.$length ? ($throwRuntimeError("index out of range"), undefined) : te.$array[te.$offset + 0]) === "identity";
};
transferReader.ptr.prototype.fixTransferEncoding = function() {
var $ptr, _entry, _i, _r, _r$1, _ref, _tuple, encoding, encodings, present, raw, t, te, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _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$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
_tuple = (_entry = t.Header[$String.keyFor("Transfer-Encoding")], _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
raw = _tuple[0];
present = _tuple[1];
if (!present) {
$s = -1; return $ifaceNil;
}
delete t.Header[$String.keyFor("Transfer-Encoding")];
if (!t.protoAtLeast(1, 1)) {
$s = -1; return $ifaceNil;
}
encodings = strings.Split((0 >= raw.$length ? ($throwRuntimeError("index out of range"), undefined) : raw.$array[raw.$offset + 0]), ",");
te = $makeSlice(sliceType$1, 0, encodings.$length);
_ref = encodings;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
encoding = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_r = strings.TrimSpace(encoding); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r$1 = strings.ToLower(_r); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
encoding = _r$1;
if (encoding === "identity") {
/* break; */ $s = 2; continue;
}
if (!(encoding === "chunked")) {
$s = -1; return new badStringError.ptr("unsupported transfer encoding", encoding);
}
te = $subslice(te, 0, (te.$length + 1 >> 0));
(x$3 = te.$length - 1 >> 0, ((x$3 < 0 || x$3 >= te.$length) ? ($throwRuntimeError("index out of range"), undefined) : te.$array[te.$offset + x$3] = encoding));
_i++;
/* } */ $s = 1; continue; case 2:
if (te.$length > 1) {
$s = -1; return new badStringError.ptr("too many transfer encodings", strings.Join(te, ","));
}
if (te.$length > 0) {
delete t.Header[$String.keyFor("Content-Length")];
t.TransferEncoding = te;
$s = -1; return $ifaceNil;
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: transferReader.ptr.prototype.fixTransferEncoding }; } $f.$ptr = $ptr; $f._entry = _entry; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $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$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
};
transferReader.prototype.fixTransferEncoding = function() { return this.$val.fixTransferEncoding(); };
fixLength = function(isResponse, status, requestMethod, header, te) {
var $ptr, _1, _entry, _entry$1, _i, _q, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _tuple, cl, contentLens, ct, err, first, header, isRequest, isResponse, n, requestMethod, status, te, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _1 = $f._1; _entry = $f._entry; _entry$1 = $f._entry$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; _r$5 = $f._r$5; _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:
isRequest = !isResponse;
contentLens = (_entry = header[$String.keyFor("Content-Length")], _entry !== undefined ? _entry.v : sliceType$1.nil);
/* */ if (contentLens.$length > 1) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (contentLens.$length > 1) { */ case 1:
_r = 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 = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
first = _r;
_ref = $subslice(contentLens, 1);
_i = 0;
/* while (true) { */ case 4:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; }
ct = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_r$1 = strings.TrimSpace(ct); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
/* */ if (!(first === _r$1)) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!(first === _r$1)) { */ case 6:
_r$2 = fmt.Errorf("http: message cannot contain multiple Content-Length headers; got %q", new sliceType([contentLens])); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$s = -1; return [new $Int64(0, 0), _r$2];
/* } */ case 7:
_i++;
/* } */ $s = 4; continue; case 5:
new Header(header).Del("Content-Length");
new Header(header).Add("Content-Length", first);
contentLens = (_entry$1 = header[$String.keyFor("Content-Length")], _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil);
/* } */ case 2:
/* */ if (noResponseBodyExpected(requestMethod)) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (noResponseBodyExpected(requestMethod)) { */ case 10:
/* */ 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; }
/* */ $s = 13; continue;
/* 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:
_r$3 = fmt.Errorf("http: method cannot contain a Content-Length; got %q", new sliceType([contentLens])); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
$s = -1; return [new $Int64(0, 0), _r$3];
/* } */ case 13:
$s = -1; return [new $Int64(0, 0), $ifaceNil];
/* } */ case 11:
if ((_q = status / 100, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) === 1) {
$s = -1; return [new $Int64(0, 0), $ifaceNil];
}
_1 = status;
if ((_1 === (204)) || (_1 === (304))) {
$s = -1; return [new $Int64(0, 0), $ifaceNil];
}
if (chunked(te)) {
$s = -1; return [new $Int64(-1, 4294967295), $ifaceNil];
}
cl = "";
/* */ if (contentLens.$length === 1) { $s = 15; continue; }
/* */ $s = 16; continue;
/* if (contentLens.$length === 1) { */ case 15:
_r$4 = 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$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
cl = _r$4;
/* } */ case 16:
/* */ if (!(cl === "")) { $s = 18; continue; }
/* */ $s = 19; continue;
/* if (!(cl === "")) { */ case 18:
_r$5 = parseContentLength(cl); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_tuple = _r$5;
n = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [new $Int64(-1, 4294967295), err];
}
$s = -1; return [n, $ifaceNil];
/* } else { */ case 19:
new Header(header).Del("Content-Length");
/* } */ case 20:
if (isRequest) {
$s = -1; return [new $Int64(0, 0), $ifaceNil];
}
$s = -1; return [new $Int64(-1, 4294967295), $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: fixLength }; } $f.$ptr = $ptr; $f._1 = _1; $f._entry = _entry; $f._entry$1 = _entry$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._r$5 = _r$5; $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;
};
shouldClose = function(major, minor, header, removeCloseHeader) {
var $ptr, _entry, conv, hasClose, header, major, minor, removeCloseHeader;
if (major < 1) {
return true;
}
conv = (_entry = header[$String.keyFor("Connection")], _entry !== undefined ? _entry.v : sliceType$1.nil);
hasClose = httplex.HeaderValuesContainsToken(conv, "close");
if ((major === 1) && (minor === 0)) {
return hasClose || !httplex.HeaderValuesContainsToken(conv, "keep-alive");
}
if (hasClose && removeCloseHeader) {
new Header(header).Del("Connection");
}
return hasClose;
};
fixTrailer = function(header, te) {
var $ptr, _entry, _i, _ref, _tuple, err, header, ok, te, trailer, v, vv, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
err = [err];
trailer = [trailer];
_tuple = (_entry = header[$String.keyFor("Trailer")], _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
vv = _tuple[0];
ok = _tuple[1];
if (!ok) {
$s = -1; return [false, $ifaceNil];
}
new Header(header).Del("Trailer");
trailer[0] = {};
err[0] = $ifaceNil;
_ref = vv;
_i = 0;
/* while (true) { */ case 1:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
$r = foreachHeaderElement(v, (function(err, trailer) { return function(key) {
var $ptr, _1, _key, key;
key = CanonicalHeaderKey(key);
_1 = key;
if (_1 === ("Transfer-Encoding") || _1 === ("Trailer") || _1 === ("Content-Length")) {
if ($interfaceIsEqual(err[0], $ifaceNil)) {
err[0] = new badStringError.ptr("bad trailer key", key);
return;
}
}
_key = key; (trailer[0] || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: sliceType$1.nil };
}; })(err, trailer)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_i++;
/* } */ $s = 1; continue; case 2:
if (!($interfaceIsEqual(err[0], $ifaceNil))) {
$s = -1; return [false, err[0]];
}
if ($keys(trailer[0]).length === 0) {
$s = -1; return [false, $ifaceNil];
}
if (!chunked(te)) {
$s = -1; return [false, $pkg.ErrUnexpectedTrailer];
}
$s = -1; return [trailer[0], $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: fixTrailer }; } $f.$ptr = $ptr; $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;
};
body.ptr.prototype.Read = function(p) {
var $ptr, _r, _tmp, _tmp$1, _tuple, b, err, n, p, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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);
n = 0;
err = $ifaceNil;
b = this;
$r = b.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(b.mu, "Unlock"), []]);
if (b.closed) {
_tmp = 0;
_tmp$1 = $pkg.ErrBodyReadAfterClose;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
_r = b.readLocked(p); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
$s = -1; return [n, err];
/* */ } 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.$ptr = $ptr; $f._r = _r; $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; } }
};
body.prototype.Read = function(p) { return this.$val.Read(p); };
body.ptr.prototype.readLocked = function(p) {
var $ptr, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, _tuple$2, b, e, err, lr, lr$1, n, ok, ok$1, p, x$3, x$4, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
n = 0;
err = $ifaceNil;
b = this;
if (b.sawEOF) {
_tmp = 0;
_tmp$1 = io.EOF;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
_r = b.src.Read(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
/* */ if ($interfaceIsEqual(err, io.EOF)) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if ($interfaceIsEqual(err, io.EOF)) { */ case 2:
b.sawEOF = true;
/* */ if (!($interfaceIsEqual(b.hdr, $ifaceNil))) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!($interfaceIsEqual(b.hdr, $ifaceNil))) { */ case 4:
_r$1 = b.readTrailer(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
e = _r$1;
if (!($interfaceIsEqual(e, $ifaceNil))) {
err = e;
b.sawEOF = false;
b.closed = true;
}
b.hdr = $ifaceNil;
$s = 6; continue;
/* } else { */ case 5:
_tuple$1 = $assertType(b.src, ptrType$88, true);
lr = _tuple$1[0];
ok = _tuple$1[1];
if (ok && (x$3 = lr.N, (x$3.$high > 0 || (x$3.$high === 0 && x$3.$low > 0)))) {
err = io.ErrUnexpectedEOF;
}
/* } */ case 6:
/* } */ case 3:
if ($interfaceIsEqual(err, $ifaceNil) && n > 0) {
_tuple$2 = $assertType(b.src, ptrType$88, true);
lr$1 = _tuple$2[0];
ok$1 = _tuple$2[1];
if (ok$1 && (x$4 = lr$1.N, (x$4.$high === 0 && x$4.$low === 0))) {
err = io.EOF;
b.sawEOF = true;
}
}
/* */ if (b.sawEOF && !(b.onHitEOF === $throwNilPointerError)) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (b.sawEOF && !(b.onHitEOF === $throwNilPointerError)) { */ case 8:
$r = b.onHitEOF(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 9:
_tmp$2 = n;
_tmp$3 = err;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: body.ptr.prototype.readLocked }; } $f.$ptr = $ptr; $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._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$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
};
body.prototype.readLocked = function(p) { return this.$val.readLocked(p); };
seeUpcomingDoubleCRLF = function(r) {
var $ptr, _r, _tuple, buf, err, peekSize, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
peekSize = 4;
/* while (true) { */ case 1:
_r = r.Peek(peekSize); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
buf = _tuple[0];
err = _tuple[1];
if (bytes.HasSuffix(buf, doubleCRLF)) {
$s = -1; return true;
}
if (!($interfaceIsEqual(err, $ifaceNil))) {
/* break; */ $s = 2; continue;
}
peekSize = peekSize + (1) >> 0;
/* } */ $s = 1; continue; case 2:
$s = -1; return false;
/* */ } return; } if ($f === undefined) { $f = { $blk: seeUpcomingDoubleCRLF }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.peekSize = peekSize; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
body.ptr.prototype.readTrailer = function() {
var $ptr, _r, _r$1, _r$2, _r$3, _ref, _tuple, _tuple$1, b, buf, err, hdr, rr, rr$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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:
b = this;
_r = b.r.Peek(2); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
buf = _tuple[0];
err = _tuple[1];
/* */ if (bytes.Equal(buf, singleCRLF)) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (bytes.Equal(buf, singleCRLF)) { */ case 2:
_r$1 = b.r.Discard(2); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
$s = -1; return $ifaceNil;
/* } */ case 3:
if (buf.$length < 2) {
$s = -1; return errTrailerEOF;
}
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
_r$2 = seeUpcomingDoubleCRLF(b.r); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
/* */ if (!_r$2) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (!_r$2) { */ case 5:
$s = -1; return errors.New("http: suspiciously long trailer after chunked body");
/* } */ case 6:
_r$3 = textproto.NewReader(b.r).ReadMIMEHeader(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$1 = _r$3;
hdr = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
if ($interfaceIsEqual(err, io.EOF)) {
$s = -1; return errTrailerEOF;
}
$s = -1; return err;
}
_ref = b.hdr;
if ($assertType(_ref, ptrType$7, true)[1]) {
rr = _ref.$val;
mergeSetHeader((rr.$ptr_Trailer || (rr.$ptr_Trailer = new ptrType$69(function() { return this.$target.Trailer; }, function($v) { this.$target.Trailer = $v; }, rr))), (hdr));
} else if ($assertType(_ref, ptrType$16, true)[1]) {
rr$1 = _ref.$val;
mergeSetHeader((rr$1.$ptr_Trailer || (rr$1.$ptr_Trailer = new ptrType$69(function() { return this.$target.Trailer; }, function($v) { this.$target.Trailer = $v; }, rr$1))), (hdr));
}
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: body.ptr.prototype.readTrailer }; } $f.$ptr = $ptr; $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.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;
};
body.prototype.readTrailer = function() { return this.$val.readTrailer(); };
mergeSetHeader = function(dst, src) {
var $ptr, _entry, _i, _key, _keys, _ref, dst, k, src, vv;
if (dst.$get() === false) {
dst.$set(src);
return;
}
_ref = src;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
continue;
}
k = _entry.k;
vv = _entry.v;
_key = k; (dst.$get() || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: vv };
_i++;
}
};
body.ptr.prototype.unreadDataSizeLocked = function() {
var $ptr, _tuple, b, lr, ok;
b = this;
_tuple = $assertType(b.src, ptrType$88, true);
lr = _tuple[0];
ok = _tuple[1];
if (ok) {
return lr.N;
}
return new $Int64(-1, 4294967295);
};
body.prototype.unreadDataSizeLocked = function() { return this.$val.unreadDataSizeLocked(); };
body.ptr.prototype.Close = function() {
var $ptr, _r, _r$1, _tuple, _tuple$1, _tuple$2, b, err, lr, n, ok, x$3, x$4, x$5, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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$3 = $f.x$3; 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);
b = this;
$r = b.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(b.mu, "Unlock"), []]);
if (b.closed) {
$s = -1; return $ifaceNil;
}
err = $ifaceNil;
/* */ if (b.sawEOF) { $s = 3; continue; }
/* */ if ($interfaceIsEqual(b.hdr, $ifaceNil) && b.closing) { $s = 4; continue; }
/* */ if (b.doEarlyClose) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (b.sawEOF) { */ case 3:
$s = 7; continue;
/* } else if ($interfaceIsEqual(b.hdr, $ifaceNil) && b.closing) { */ case 4:
$s = 7; continue;
/* } else if (b.doEarlyClose) { */ case 5:
_tuple = $assertType(b.src, ptrType$88, true);
lr = _tuple[0];
ok = _tuple[1];
/* */ if (ok && (x$3 = lr.N, (x$3.$high > 0 || (x$3.$high === 0 && x$3.$low > 262144)))) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (ok && (x$3 = lr.N, (x$3.$high > 0 || (x$3.$high === 0 && x$3.$low > 262144)))) { */ case 8:
b.earlyClose = true;
$s = 10; continue;
/* } else { */ case 9:
n = new $Int64(0, 0);
_r = io.CopyN(ioutil.Discard, (x$4 = new bodyLocked.ptr(b), new x$4.constructor.elem(x$4)), new $Int64(0, 262144)); /* */ $s = 11; case 11: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple$1 = _r;
n = _tuple$1[0];
err = _tuple$1[1];
if ($interfaceIsEqual(err, io.EOF)) {
err = $ifaceNil;
}
if ((n.$high === 0 && n.$low === 262144)) {
b.earlyClose = true;
}
/* } */ case 10:
$s = 7; continue;
/* } else { */ case 6:
_r$1 = io.Copy(ioutil.Discard, (x$5 = new bodyLocked.ptr(b), new x$5.constructor.elem(x$5))); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple$2 = _r$1;
err = _tuple$2[1];
/* } */ case 7:
case 2:
b.closed = true;
$s = -1; return err;
/* */ } 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.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
body.prototype.Close = function() { return this.$val.Close(); };
body.ptr.prototype.didEarlyClose = function() {
var $ptr, b, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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);
b = this;
$r = b.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(b.mu, "Unlock"), []]);
$s = -1; return b.earlyClose;
/* */ } 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.$ptr = $ptr; $f.b = b; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
body.prototype.didEarlyClose = function() { return this.$val.didEarlyClose(); };
body.ptr.prototype.bodyRemains = function() {
var $ptr, b, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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);
b = this;
$r = b.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(b.mu, "Unlock"), []]);
$s = -1; return !b.sawEOF;
/* */ } 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.$ptr = $ptr; $f.b = b; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
body.prototype.bodyRemains = function() { return this.$val.bodyRemains(); };
body.ptr.prototype.registerOnHitEOF = function(fn) {
var $ptr, b, fn, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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);
b = this;
$r = b.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(b.mu, "Unlock"), []]);
b.onHitEOF = fn;
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: body.ptr.prototype.registerOnHitEOF }; } $f.$ptr = $ptr; $f.b = b; $f.fn = fn; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
body.prototype.registerOnHitEOF = function(fn) { return this.$val.registerOnHitEOF(fn); };
bodyLocked.ptr.prototype.Read = function(p) {
var $ptr, _r, _tmp, _tmp$1, _tuple, bl, err, n, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
n = 0;
err = $ifaceNil;
bl = this;
if (bl.b.closed) {
_tmp = 0;
_tmp$1 = $pkg.ErrBodyReadAfterClose;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
_r = bl.b.readLocked(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: bodyLocked.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
bodyLocked.prototype.Read = function(p) { return this.$val.Read(p); };
parseContentLength = function(cl) {
var $ptr, _r, _tuple, cl, err, n, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
_r = strings.TrimSpace(cl); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
cl = _r;
if (cl === "") {
$s = -1; return [new $Int64(-1, 4294967295), $ifaceNil];
}
_tuple = strconv.ParseInt(cl, 10, 64);
n = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil)) || (n.$high < 0 || (n.$high === 0 && n.$low < 0))) {
$s = -1; return [new $Int64(0, 0), new badStringError.ptr("bad Content-Length", cl)];
}
$s = -1; return [n, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: parseContentLength }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.cl = cl; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
};
finishAsyncByteRead.ptr.prototype.Read = function(p) {
var $ptr, _r, _tmp, _tmp$1, err, fr, n, p, rres, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
n = 0;
err = $ifaceNil;
fr = this;
if (p.$length === 0) {
$s = -1; return [n, err];
}
_r = $recv(fr.tw.ByteReadCh); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
rres = $clone(_r[0], readResult);
_tmp = rres.n;
_tmp$1 = rres.err;
n = _tmp;
err = _tmp$1;
if (n === 1) {
(0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = rres.b);
}
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: finishAsyncByteRead.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
finishAsyncByteRead.prototype.Read = function(p) { return this.$val.Read(p); };
Transport.ptr.prototype.onceSetNextProtoDefaults = function() {
var $ptr, _r, _tuple, err, limit1, t, t2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
t = this;
if (strings.Contains(os.Getenv("GODEBUG"), "http2client=0")) {
$s = -1; return;
}
if (!(t.TLSNextProto === false)) {
$s = -1; return;
}
if (!(t.TLSClientConfig === ptrType$13.nil) || !(t.Dial === $throwNilPointerError) || !(t.DialTLS === $throwNilPointerError)) {
$s = -1; return;
}
_r = http2configureTransport(t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
t2 = _tuple[0];
err = _tuple[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
$r = log.Printf("Error enabling Transport HTTP/2 support: %v", new sliceType([err])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } */ case 3:
t.h2transport = t2;
limit1 = t.MaxResponseHeaderBytes;
if (!((limit1.$high === 0 && limit1.$low === 0)) && (t2.MaxHeaderListSize === 0)) {
if ((limit1.$high > 0 || (limit1.$high === 0 && limit1.$low >= 4294967295))) {
t2.MaxHeaderListSize = 4294967295;
} else {
t2.MaxHeaderListSize = ((limit1.$low >>> 0));
}
}
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.onceSetNextProtoDefaults }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.limit1 = limit1; $f.t = t; $f.t2 = t2; $f.$s = $s; $f.$r = $r; return $f;
};
Transport.prototype.onceSetNextProtoDefaults = function() { return this.$val.onceSetNextProtoDefaults(); };
transportRequest.ptr.prototype.extraHeaders = function() {
var $ptr, tr;
tr = this;
if (tr.extra === false) {
tr.extra = {};
}
return tr.extra;
};
transportRequest.prototype.extraHeaders = function() { return this.$val.extraHeaders(); };
Transport.ptr.prototype.RoundTrip = function(req) {
var $ptr, _entry, _entry$1, _i, _i$1, _keys, _r, _r$1, _r$10, _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, _v, altProto, altRT, cm, ctx, e, err, err$1, isHTTP, k, ok, pconn, req, resp, resp$1, scheme, t, trace, treq, v, vv, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _i$1 = $f._i$1; _keys = $f._keys; _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; _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; _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; isHTTP = $f.isHTTP; k = $f.k; 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:
t = this;
$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; }
ctx = req.Context();
_r = httptrace.ContextClientTrace(ctx); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
trace = _r;
/* */ if (req.URL === ptrType$19.nil) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (req.URL === ptrType$19.nil) { */ case 3:
$r = req.closeBody(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return [ptrType$16.nil, errors.New("http: nil Request.URL")];
/* } */ case 4:
/* */ if (req.Header === false) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (req.Header === false) { */ case 6:
$r = req.closeBody(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return [ptrType$16.nil, errors.New("http: nil Request.Header")];
/* } */ case 7:
scheme = req.URL.Scheme;
isHTTP = scheme === "http" || scheme === "https";
/* */ if (isHTTP) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (isHTTP) { */ case 9:
_ref = req.Header;
_i = 0;
_keys = $keys(_ref);
/* while (true) { */ case 11:
/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 12; continue; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
/* continue; */ $s = 11; continue;
}
k = _entry.k;
vv = _entry.v;
/* */ if (!httplex.ValidHeaderFieldName(k)) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (!httplex.ValidHeaderFieldName(k)) { */ case 13:
_r$1 = fmt.Errorf("net/http: invalid header field name %q", new sliceType([new $String(k)])); /* */ $s = 15; case 15: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$s = -1; return [ptrType$16.nil, _r$1];
/* } */ case 14:
_ref$1 = vv;
_i$1 = 0;
/* while (true) { */ case 16:
/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 17; continue; }
v = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
/* */ if (!httplex.ValidHeaderFieldValue(v)) { $s = 18; continue; }
/* */ $s = 19; continue;
/* if (!httplex.ValidHeaderFieldValue(v)) { */ case 18:
_r$2 = 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$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$s = -1; return [ptrType$16.nil, _r$2];
/* } */ case 19:
_i$1++;
/* } */ $s = 16; continue; case 17:
_i++;
/* } */ $s = 11; continue; case 12:
/* } */ case 10:
_tuple = $assertType(t.altProto.Load(), mapType$1, true);
altProto = _tuple[0];
altRT = (_entry$1 = altProto[$String.keyFor(scheme)], _entry$1 !== undefined ? _entry$1.v : $ifaceNil);
/* */ if (!($interfaceIsEqual(altRT, $ifaceNil))) { $s = 21; continue; }
/* */ $s = 22; continue;
/* if (!($interfaceIsEqual(altRT, $ifaceNil))) { */ case 21:
_r$3 = altRT.RoundTrip(req); /* */ $s = 23; case 23: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$1 = _r$3;
resp = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $pkg.ErrSkipAltProtocol))) {
$s = -1; return [resp, err];
}
/* } */ case 22:
/* */ if (!isHTTP) { $s = 24; continue; }
/* */ $s = 25; continue;
/* if (!isHTTP) { */ case 24:
$r = req.closeBody(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return [ptrType$16.nil, new badStringError.ptr("unsupported protocol scheme", scheme)];
/* } */ case 25:
if (!(!(req.Method === ""))) { _v = false; $s = 29; continue s; }
_r$4 = validMethod(req.Method); /* */ $s = 30; case 30: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_v = !_r$4; case 29:
/* */ if (_v) { $s = 27; continue; }
/* */ $s = 28; continue;
/* if (_v) { */ case 27:
_r$5 = fmt.Errorf("net/http: invalid method %q", new sliceType([new $String(req.Method)])); /* */ $s = 31; case 31: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
$s = -1; return [ptrType$16.nil, _r$5];
/* } */ case 28:
/* */ if (req.URL.Host === "") { $s = 32; continue; }
/* */ $s = 33; continue;
/* if (req.URL.Host === "") { */ case 32:
$r = req.closeBody(); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return [ptrType$16.nil, errors.New("http: no Host in request URL")];
/* } */ case 33:
/* while (true) { */ case 35:
treq = new transportRequest.ptr(req, false, trace);
_r$6 = t.connectMethodForRequest(treq); /* */ $s = 37; case 37: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_tuple$2 = _r$6;
cm = $clone(_tuple$2[0], connectMethod);
err$1 = _tuple$2[1];
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 38; continue; }
/* */ $s = 39; continue;
/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 38:
$r = req.closeBody(); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return [ptrType$16.nil, err$1];
/* } */ case 39:
_r$7 = t.getConn(treq, $clone(cm, connectMethod)); /* */ $s = 41; case 41: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_tuple$3 = _r$7;
pconn = _tuple$3[0];
err$1 = _tuple$3[1];
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 42; continue; }
/* */ $s = 43; continue;
/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 42:
$r = t.setReqCanceler(req, $throwNilPointerError); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = req.closeBody(); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return [ptrType$16.nil, err$1];
/* } */ case 43:
resp$1 = ptrType$16.nil;
/* */ if (!($interfaceIsEqual(pconn.alt, $ifaceNil))) { $s = 46; continue; }
/* */ $s = 47; continue;
/* if (!($interfaceIsEqual(pconn.alt, $ifaceNil))) { */ case 46:
$r = t.setReqCanceler(req, $throwNilPointerError); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$8 = pconn.alt.RoundTrip(req); /* */ $s = 50; case 50: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_tuple$4 = _r$8;
resp$1 = _tuple$4[0];
err$1 = _tuple$4[1];
$s = 48; continue;
/* } else { */ case 47:
_r$9 = pconn.roundTrip(treq); /* */ $s = 51; case 51: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
_tuple$5 = _r$9;
resp$1 = _tuple$5[0];
err$1 = _tuple$5[1];
/* } */ case 48:
if ($interfaceIsEqual(err$1, $ifaceNil)) {
$s = -1; return [resp$1, $ifaceNil];
}
_r$10 = pconn.shouldRetryRequest(req, err$1); /* */ $s = 54; case 54: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
/* */ if (!_r$10) { $s = 52; continue; }
/* */ $s = 53; continue;
/* if (!_r$10) { */ case 52:
_tuple$6 = $assertType(err$1, transportReadFromServerError, true);
e = $clone(_tuple$6[0], transportReadFromServerError);
ok = _tuple$6[1];
if (ok) {
err$1 = e.err;
}
$s = -1; return [ptrType$16.nil, err$1];
/* } */ case 53:
$r = testHookRoundTripRetried(); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ $s = 35; continue; case 36:
$s = -1; return [ptrType$16.nil, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.RoundTrip }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._i$1 = _i$1; $f._keys = _keys; $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._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._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.isHTTP = isHTTP; $f.k = k; $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;
};
Transport.prototype.RoundTrip = function(req) { return this.$val.RoundTrip(req); };
persistConn.ptr.prototype.shouldRetryRequest = function(req, err) {
var $ptr, _r, _tuple, _tuple$1, err, ok, ok$1, pc, req, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
pc = this;
if ($interfaceIsEqual(err, http2ErrNoCachedConn)) {
$s = -1; return true;
}
if ($interfaceIsEqual(err, errMissingHost)) {
$s = -1; return false;
}
_r = pc.isReused(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (!_r) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!_r) { */ case 1:
$s = -1; return false;
/* } */ case 2:
_tuple = $assertType(err, nothingWrittenError, true);
ok = _tuple[1];
if (ok) {
$s = -1; return true;
}
if (!req.isReplayable()) {
$s = -1; return false;
}
_tuple$1 = $assertType(err, transportReadFromServerError, true);
ok$1 = _tuple$1[1];
if (ok$1) {
$s = -1; return true;
}
if ($interfaceIsEqual(err, errServerClosedIdle)) {
$s = -1; return true;
}
$s = -1; return false;
/* */ } return; } if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.shouldRetryRequest }; } $f.$ptr = $ptr; $f._r = _r; $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.$s = $s; $f.$r = $r; return $f;
};
persistConn.prototype.shouldRetryRequest = function(req, err) { return this.$val.shouldRetryRequest(req, err); };
Transport.ptr.prototype.RegisterProtocol = function(scheme, rt) {
var $ptr, _entry, _entry$1, _i, _key, _key$1, _keys, _ref, _tuple, _tuple$1, exists, k, newMap, oldMap, rt, scheme, t, v, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
t = this;
$r = t.altMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(t.altMu, "Unlock"), []]);
_tuple = $assertType(t.altProto.Load(), mapType$1, true);
oldMap = _tuple[0];
_tuple$1 = (_entry = oldMap[$String.keyFor(scheme)], _entry !== undefined ? [_entry.v, true] : [$ifaceNil, false]);
exists = _tuple$1[1];
if (exists) {
$panic(new $String("protocol " + scheme + " already registered"));
}
newMap = {};
_ref = oldMap;
_i = 0;
_keys = $keys(_ref);
while (true) {
if (!(_i < _keys.length)) { break; }
_entry$1 = _ref[_keys[_i]];
if (_entry$1 === undefined) {
_i++;
continue;
}
k = _entry$1.k;
v = _entry$1.v;
_key = k; (newMap || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: v };
_i++;
}
_key$1 = scheme; (newMap || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$1)] = { k: _key$1, v: rt };
t.altProto.Store(new mapType$1(newMap));
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.RegisterProtocol }; } $f.$ptr = $ptr; $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; } }
};
Transport.prototype.RegisterProtocol = function(scheme, rt) { return this.$val.RegisterProtocol(scheme, rt); };
Transport.ptr.prototype.CloseIdleConnections = function() {
var $ptr, _entry, _i, _i$1, _keys, _ref, _ref$1, conns, m, pconn, t, t2, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
t = this;
$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; }
$r = t.idleMu.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
m = t.idleConn;
t.idleConn = false;
t.idleConnCh = false;
t.wantIdle = true;
connLRU.copy(t.idleLRU, new connLRU.ptr(ptrType$12.nil, false));
$r = t.idleMu.Unlock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_ref = m;
_i = 0;
_keys = $keys(_ref);
/* while (true) { */ case 4:
/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 5; continue; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
/* continue; */ $s = 4; continue;
}
conns = _entry.v;
_ref$1 = conns;
_i$1 = 0;
/* while (true) { */ case 6:
/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 7; continue; }
pconn = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
$r = pconn.close(errCloseIdleConns); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_i$1++;
/* } */ $s = 6; continue; case 7:
_i++;
/* } */ $s = 4; continue; case 5:
t2 = t.h2transport;
/* */ if (!(t2 === ptrType$14.nil)) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (!(t2 === ptrType$14.nil)) { */ case 9:
$r = t2.CloseIdleConnections(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 10:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.CloseIdleConnections }; } $f.$ptr = $ptr; $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;
};
Transport.prototype.CloseIdleConnections = function() { return this.$val.CloseIdleConnections(); };
Transport.ptr.prototype.CancelRequest = function(req) {
var $ptr, req, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; req = $f.req; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
$r = t.cancelRequest(req, errRequestCanceled); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.CancelRequest }; } $f.$ptr = $ptr; $f.req = req; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
Transport.prototype.CancelRequest = function(req) { return this.$val.CancelRequest(req); };
Transport.ptr.prototype.cancelRequest = function(req, err) {
var $ptr, _entry, cancel, err, req, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
t = this;
$r = t.reqMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
cancel = (_entry = t.reqCanceler[ptrType$7.keyFor(req)], _entry !== undefined ? _entry.v : $throwNilPointerError);
delete t.reqCanceler[ptrType$7.keyFor(req)];
$r = t.reqMu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (!(cancel === $throwNilPointerError)) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!(cancel === $throwNilPointerError)) { */ case 3:
$r = cancel(err); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 4:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.cancelRequest }; } $f.$ptr = $ptr; $f._entry = _entry; $f.cancel = cancel; $f.err = err; $f.req = req; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
Transport.prototype.cancelRequest = function(req, err) { return this.$val.cancelRequest(req, err); };
Transport.ptr.prototype.connectMethodForRequest = function(treq) {
var $ptr, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, cm, err, port, port$1, t, treq, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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:
cm = new connectMethod.ptr(ptrType$19.nil, "", "");
err = $ifaceNil;
t = this;
port = treq.Request.URL.Port();
/* */ if (!validPort(port)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!validPort(port)) { */ case 1:
_tmp = $clone(cm, connectMethod);
_r = fmt.Errorf("invalid URL port %q", new sliceType([new $String(port)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tmp$1 = _r;
connectMethod.copy(cm, _tmp);
err = _tmp$1;
$s = -1; return [cm, err];
/* } */ case 2:
cm.targetScheme = treq.Request.URL.Scheme;
_r$1 = canonicalAddr(treq.Request.URL); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
cm.targetAddr = _r$1;
/* */ if (!(t.Proxy === $throwNilPointerError)) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (!(t.Proxy === $throwNilPointerError)) { */ case 5:
_r$2 = t.Proxy(treq.Request); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple = _r$2;
cm.proxyURL = _tuple[0];
err = _tuple[1];
/* */ if ($interfaceIsEqual(err, $ifaceNil) && !(cm.proxyURL === ptrType$19.nil)) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if ($interfaceIsEqual(err, $ifaceNil) && !(cm.proxyURL === ptrType$19.nil)) { */ case 8:
port$1 = cm.proxyURL.Port();
/* */ if (!validPort(port$1)) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (!validPort(port$1)) { */ case 10:
_tmp$2 = $clone(cm, connectMethod);
_r$3 = fmt.Errorf("invalid proxy URL port %q", new sliceType([new $String(port$1)])); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tmp$3 = _r$3;
connectMethod.copy(cm, _tmp$2);
err = _tmp$3;
$s = -1; return [cm, err];
/* } */ case 11:
/* } */ case 9:
/* } */ case 6:
_tmp$4 = $clone(cm, connectMethod);
_tmp$5 = err;
connectMethod.copy(cm, _tmp$4);
err = _tmp$5;
$s = -1; return [cm, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.connectMethodForRequest }; } $f.$ptr = $ptr; $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.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;
};
Transport.prototype.connectMethodForRequest = function(treq) { return this.$val.connectMethodForRequest(treq); };
connectMethod.ptr.prototype.proxyAuth = function() {
var $ptr, _tuple, cm, password, u, username;
cm = this;
if (cm.proxyURL === ptrType$19.nil) {
return "";
}
u = cm.proxyURL.User;
if (!(u === ptrType$18.nil)) {
username = u.Username();
_tuple = u.Password();
password = _tuple[0];
return "Basic " + basicAuth(username, password);
}
return "";
};
connectMethod.prototype.proxyAuth = function() { return this.$val.proxyAuth(); };
transportReadFromServerError.ptr.prototype.Error = function() {
var $ptr, _r, e, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
e = this;
_r = fmt.Sprintf("net/http: Transport failed to read from server: %v", new sliceType([e.err])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: transportReadFromServerError.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
};
transportReadFromServerError.prototype.Error = function() { return this.$val.Error(); };
Transport.ptr.prototype.putOrCloseIdleConn = function(pconn) {
var $ptr, _r, err, pconn, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; err = $f.err; pconn = $f.pconn; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
t = this;
_r = t.tryPutIdleConn(pconn); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
$r = pconn.close(err); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 3:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.putOrCloseIdleConn }; } $f.$ptr = $ptr; $f._r = _r; $f.err = err; $f.pconn = pconn; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
};
Transport.prototype.putOrCloseIdleConn = function(pconn) { return this.$val.putOrCloseIdleConn(pconn); };
Transport.ptr.prototype.maxIdleConnsPerHost = function() {
var $ptr, t, v;
t = this;
v = t.MaxIdleConnsPerHost;
if (!((v === 0))) {
return v;
}
return 2;
};
Transport.prototype.maxIdleConnsPerHost = function() { return this.$val.maxIdleConnsPerHost(); };
Transport.ptr.prototype.tryPutIdleConn = function(pconn) {
var $ptr, _entry, _entry$1, _i, _key, _r, _ref, _selection, exist, idles, key, oldest, pconn, t, waitingDialer, x$3, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _key = $f._key; _r = $f._r; _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$3 = $f.x$3; $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);
t = this;
if (t.DisableKeepAlives || t.MaxIdleConnsPerHost < 0) {
$s = -1; return errKeepAlivesDisabled;
}
_r = pconn.isBroken(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (_r) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (_r) { */ case 1:
$s = -1; return errConnBroken;
/* } */ case 2:
if (!($interfaceIsEqual(pconn.alt, $ifaceNil))) {
$s = -1; return errNotCachingH2Conn;
}
$r = pconn.markReused(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
key = $clone(pconn.cacheKey, connectMethodKey);
$r = t.idleMu.Lock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(t.idleMu, "Unlock"), []]);
waitingDialer = (_entry = t.idleConnCh[connectMethodKey.keyFor(key)], _entry !== undefined ? _entry.v : $chanNil);
_selection = $select([[waitingDialer, pconn], []]);
if (_selection[0] === 0) {
$s = -1; return $ifaceNil;
} else if (_selection[0] === 1) {
if (!(waitingDialer === $chanNil)) {
delete t.idleConnCh[connectMethodKey.keyFor(key)];
}
}
if (t.wantIdle) {
$s = -1; return errWantIdle;
}
if (t.idleConn === false) {
t.idleConn = {};
}
idles = (_entry$1 = t.idleConn[connectMethodKey.keyFor(key)], _entry$1 !== undefined ? _entry$1.v : sliceType$22.nil);
if (idles.$length >= t.maxIdleConnsPerHost()) {
$s = -1; return errTooManyIdleHost;
}
_ref = idles;
_i = 0;
/* while (true) { */ case 6:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 7; continue; }
exist = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
/* */ if (exist === pconn) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (exist === pconn) { */ case 8:
$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; }
/* } */ case 9:
_i++;
/* } */ $s = 6; continue; case 7:
_key = $clone(key, connectMethodKey); (t.idleConn || $throwRuntimeError("assignment to entry in nil map"))[connectMethodKey.keyFor(_key)] = { k: _key, v: $append(idles, pconn) };
t.idleLRU.add(pconn);
/* */ if (!((t.MaxIdleConns === 0)) && t.idleLRU.len() > t.MaxIdleConns) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if (!((t.MaxIdleConns === 0)) && t.idleLRU.len() > t.MaxIdleConns) { */ case 11:
oldest = t.idleLRU.removeOldest();
$r = oldest.close(errTooManyIdle); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
t.removeIdleConnLocked(oldest);
/* } */ case 12:
if ((x$3 = t.IdleConnTimeout, (x$3.$high > 0 || (x$3.$high === 0 && x$3.$low > 0)))) {
if (!(pconn.idleTimer === ptrType$53.nil)) {
pconn.idleTimer.Reset(t.IdleConnTimeout);
} else {
pconn.idleTimer = time.AfterFunc(t.IdleConnTimeout, $methodVal(pconn, "closeConnIfStillIdle"));
}
}
time.Time.copy(pconn.idleAt, time.Now());
$s = -1; return $ifaceNil;
/* */ } 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.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._key = _key; $f._r = _r; $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$3 = x$3; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Transport.prototype.tryPutIdleConn = function(pconn) { return this.$val.tryPutIdleConn(pconn); };
Transport.ptr.prototype.getIdleConnCh = function(cm) {
var $ptr, _entry, _key, _tuple, ch, cm, key, ok, t, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
t = this;
if (t.DisableKeepAlives) {
$s = -1; return $chanNil;
}
key = $clone(cm.key(), connectMethodKey);
$r = t.idleMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(t.idleMu, "Unlock"), []]);
t.wantIdle = false;
if (t.idleConnCh === false) {
t.idleConnCh = {};
}
_tuple = (_entry = t.idleConnCh[connectMethodKey.keyFor(key)], _entry !== undefined ? [_entry.v, true] : [$chanNil, false]);
ch = _tuple[0];
ok = _tuple[1];
if (!ok) {
ch = new $Chan(ptrType$98, 0);
_key = $clone(key, connectMethodKey); (t.idleConnCh || $throwRuntimeError("assignment to entry in nil map"))[connectMethodKey.keyFor(_key)] = { k: _key, v: ch };
}
$s = -1; return ch;
/* */ } 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.$ptr = $ptr; $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; } }
};
Transport.prototype.getIdleConnCh = function(cm) { return this.$val.getIdleConnCh(cm); };
Transport.ptr.prototype.getIdleConn = function(cm) {
var $ptr, _entry, _key, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, cm, idleSince, key, ok, pconn, pconns, t, x$3, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _key = $f._key; _r = $f._r; _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$3 = $f.x$3; $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);
pconn = ptrType$98.nil;
idleSince = new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil);
t = this;
key = $clone(cm.key(), connectMethodKey);
$r = t.idleMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(t.idleMu, "Unlock"), []]);
/* while (true) { */ case 2:
_tuple = (_entry = t.idleConn[connectMethodKey.keyFor(key)], _entry !== undefined ? [_entry.v, true] : [sliceType$22.nil, false]);
pconns = _tuple[0];
ok = _tuple[1];
if (!ok) {
_tmp = ptrType$98.nil;
_tmp$1 = new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil);
pconn = _tmp;
time.Time.copy(idleSince, _tmp$1);
$s = -1; return [pconn, idleSince];
}
if (pconns.$length === 1) {
pconn = (0 >= pconns.$length ? ($throwRuntimeError("index out of range"), undefined) : pconns.$array[pconns.$offset + 0]);
delete t.idleConn[connectMethodKey.keyFor(key)];
} else {
pconn = (x$3 = pconns.$length - 1 >> 0, ((x$3 < 0 || x$3 >= pconns.$length) ? ($throwRuntimeError("index out of range"), undefined) : pconns.$array[pconns.$offset + x$3]));
_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)) };
}
t.idleLRU.remove(pconn);
_r = pconn.isBroken(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (_r) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (_r) { */ case 4:
/* continue; */ $s = 2; continue;
/* } */ case 5:
if (!(pconn.idleTimer === ptrType$53.nil) && !pconn.idleTimer.Stop()) {
/* continue; */ $s = 2; continue;
}
_tmp$2 = pconn;
_tmp$3 = $clone(pconn.idleAt, time.Time);
pconn = _tmp$2;
time.Time.copy(idleSince, _tmp$3);
$s = -1; return [pconn, idleSince];
/* } */ $s = 2; continue; case 3:
$s = -1; return [pconn, idleSince];
/* */ } 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.$ptr = $ptr; $f._entry = _entry; $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._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$3 = x$3; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Transport.prototype.getIdleConn = function(cm) { return this.$val.getIdleConn(cm); };
Transport.ptr.prototype.removeIdleConn = function(pconn) {
var $ptr, pconn, t, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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);
t = this;
$r = t.idleMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(t.idleMu, "Unlock"), []]);
t.removeIdleConnLocked(pconn);
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.removeIdleConn }; } $f.$ptr = $ptr; $f.pconn = pconn; $f.t = t; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Transport.prototype.removeIdleConn = function(pconn) { return this.$val.removeIdleConn(pconn); };
Transport.ptr.prototype.removeIdleConnLocked = function(pconn) {
var $ptr, _1, _entry, _i, _key, _ref, _tuple, i, key, pconn, pconns, t, v;
t = this;
if (!(pconn.idleTimer === ptrType$53.nil)) {
pconn.idleTimer.Stop();
}
t.idleLRU.remove(pconn);
key = $clone(pconn.cacheKey, connectMethodKey);
_tuple = (_entry = t.idleConn[connectMethodKey.keyFor(key)], _entry !== undefined ? [_entry.v, true] : [sliceType$22.nil, false]);
pconns = _tuple[0];
_1 = pconns.$length;
if (_1 === (0)) {
} else if (_1 === (1)) {
if ((0 >= pconns.$length ? ($throwRuntimeError("index out of range"), undefined) : pconns.$array[pconns.$offset + 0]) === pconn) {
delete t.idleConn[connectMethodKey.keyFor(key)];
}
} else {
_ref = pconns;
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
i = _i;
v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (!(v === pconn)) {
_i++;
continue;
}
$copySlice($subslice(pconns, i), $subslice(pconns, (i + 1 >> 0)));
_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)) };
break;
}
}
};
Transport.prototype.removeIdleConnLocked = function(pconn) { return this.$val.removeIdleConnLocked(pconn); };
Transport.ptr.prototype.setReqCanceler = function(r, fn) {
var $ptr, _key, fn, r, t, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
t = this;
$r = t.reqMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(t.reqMu, "Unlock"), []]);
if (t.reqCanceler === false) {
t.reqCanceler = {};
}
if (!(fn === $throwNilPointerError)) {
_key = r; (t.reqCanceler || $throwRuntimeError("assignment to entry in nil map"))[ptrType$7.keyFor(_key)] = { k: _key, v: fn };
} else {
delete t.reqCanceler[ptrType$7.keyFor(r)];
}
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.setReqCanceler }; } $f.$ptr = $ptr; $f._key = _key; $f.fn = fn; $f.r = r; $f.t = t; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
Transport.prototype.setReqCanceler = function(r, fn) { return this.$val.setReqCanceler(r, fn); };
Transport.ptr.prototype.replaceReqCanceler = function(r, fn) {
var $ptr, _entry, _key, _tuple, fn, ok, r, t, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
t = this;
$r = t.reqMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(t.reqMu, "Unlock"), []]);
_tuple = (_entry = t.reqCanceler[ptrType$7.keyFor(r)], _entry !== undefined ? [_entry.v, true] : [$throwNilPointerError, false]);
ok = _tuple[1];
if (!ok) {
$s = -1; return false;
}
if (!(fn === $throwNilPointerError)) {
_key = r; (t.reqCanceler || $throwRuntimeError("assignment to entry in nil map"))[ptrType$7.keyFor(_key)] = { k: _key, v: fn };
} else {
delete t.reqCanceler[ptrType$7.keyFor(r)];
}
$s = -1; return true;
/* */ } 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.$ptr = $ptr; $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; } }
};
Transport.prototype.replaceReqCanceler = function(r, fn) { return this.$val.replaceReqCanceler(r, fn); };
Transport.ptr.prototype.dial = function(ctx, network, addr) {
var $ptr, _r, _r$1, _r$2, _tuple, addr, c, ctx, err, network, t, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _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:
t = this;
/* */ if (!(t.DialContext === $throwNilPointerError)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(t.DialContext === $throwNilPointerError)) { */ case 1:
_r = t.DialContext(ctx, network, addr); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 2:
/* */ if (!(t.Dial === $throwNilPointerError)) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!(t.Dial === $throwNilPointerError)) { */ case 4:
_r$1 = t.Dial(network, addr); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
c = _tuple[0];
err = _tuple[1];
if ($interfaceIsEqual(c, $ifaceNil) && $interfaceIsEqual(err, $ifaceNil)) {
err = errors.New("net/http: Transport.Dial hook returned (nil, nil)");
}
$s = -1; return [c, err];
/* } */ case 5:
_r$2 = zeroDialer.DialContext(ctx, network, addr); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$s = -1; return _r$2;
/* */ } return; } if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.dial }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $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;
};
Transport.prototype.dial = function(ctx, network, addr) { return this.$val.dial(ctx, network, addr); };
Transport.ptr.prototype.getConn = function(treq, cm) {
var $ptr, _r, _r$1, _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;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _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:
cancelc = [cancelc];
cm = [cm];
ctx = [ctx];
dialc = [dialc];
t = [t];
testHookPostPendingDial$1 = [testHookPostPendingDial$1];
testHookPrePendingDial$1 = [testHookPrePendingDial$1];
t[0] = this;
req = treq.Request;
trace = treq.trace;
ctx[0] = req.Context();
/* */ if (!(trace === ptrType$45.nil) && !(trace.GetConn === $throwNilPointerError)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(trace === ptrType$45.nil) && !(trace.GetConn === $throwNilPointerError)) { */ case 1:
_r = cm[0].addr(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$r = trace.GetConn(_r); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
_r$1 = t[0].getIdleConn($clone(cm[0], connectMethod)); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
pc = _tuple[0];
idleSince = $clone(_tuple[1], time.Time);
/* */ if (!(pc === ptrType$98.nil)) { $s = 6; continue; }
/* */ $s = 7; continue;
/* if (!(pc === ptrType$98.nil)) { */ case 6:
/* */ if (!(trace === ptrType$45.nil) && !(trace.GotConn === $throwNilPointerError)) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (!(trace === ptrType$45.nil) && !(trace.GotConn === $throwNilPointerError)) { */ case 8:
_r$2 = pc.gotIdleConnTrace($clone(idleSince, time.Time)); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$r = trace.GotConn($clone(_r$2, httptrace.GotConnInfo)); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 9:
$r = t[0].setReqCanceler(req, (function(cancelc, cm, ctx, dialc, t, testHookPostPendingDial$1, testHookPrePendingDial$1) { return function(param) {
var $ptr, param;
}; })(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; }
$s = -1; return [pc, $ifaceNil];
/* } */ case 7:
dialc[0] = new $Chan(dialRes, 0);
testHookPrePendingDial$1[0] = testHookPrePendingDial;
testHookPostPendingDial$1[0] = testHookPostPendingDial;
handlePendingDial = (function(cancelc, cm, ctx, dialc, t, testHookPostPendingDial$1, testHookPrePendingDial$1) { return function $b() {
var $ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = testHookPrePendingDial$1[0](); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$go((function(cancelc, cm, ctx, dialc, t, testHookPostPendingDial$1, testHookPrePendingDial$1) { return function $b() {
var $ptr, _r$3, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$3 = $f._r$3; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r$3 = $recv(dialc[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
v = $clone(_r$3[0], dialRes);
/* */ if ($interfaceIsEqual(v.err, $ifaceNil)) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if ($interfaceIsEqual(v.err, $ifaceNil)) { */ case 2:
$r = t[0].putOrCloseIdleConn(v.pc); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 3:
$r = testHookPostPendingDial$1[0](); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r$3 = _r$3; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
}; })(cancelc, cm, ctx, dialc, t, testHookPostPendingDial$1, testHookPrePendingDial$1), []);
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
}; })(cancelc, cm, ctx, dialc, t, testHookPostPendingDial$1, testHookPrePendingDial$1);
cancelc[0] = new $Chan($error, 1);
$r = t[0].setReqCanceler(req, (function(cancelc, cm, ctx, dialc, t, testHookPostPendingDial$1, testHookPrePendingDial$1) { return function $b(err) {
var $ptr, err, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = $send(cancelc[0], err); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
}; })(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; }
$go((function(cancelc, cm, ctx, dialc, t, testHookPostPendingDial$1, testHookPrePendingDial$1) { return function $b() {
var $ptr, _r$3, _tuple$1, err, pc$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$3 = $f._r$3; _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:
_r$3 = t[0].dialConn(ctx[0], $clone(cm[0], connectMethod)); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$1 = _r$3;
pc$1 = _tuple$1[0];
err = _tuple$1[1];
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r$3 = _r$3; $f._tuple$1 = _tuple$1; $f.err = err; $f.pc$1 = pc$1; $f.$s = $s; $f.$r = $r; return $f;
}; })(cancelc, cm, ctx, dialc, t, testHookPostPendingDial$1, testHookPrePendingDial$1), []);
_r$3 = t[0].getIdleConnCh($clone(cm[0], connectMethod)); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
idleConnCh = _r$3;
_r$4 = req.Context().Done(); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_r$5 = $select([[dialc[0]], [idleConnCh], [req.Cancel], [_r$4], [cancelc[0]]]); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_selection = _r$5;
/* */ if (_selection[0] === 0) { $s = 17; continue; }
/* */ if (_selection[0] === 1) { $s = 18; continue; }
/* */ if (_selection[0] === 2) { $s = 19; continue; }
/* */ if (_selection[0] === 3) { $s = 20; continue; }
/* */ if (_selection[0] === 4) { $s = 21; continue; }
/* */ $s = 22; continue;
/* if (_selection[0] === 0) { */ case 17:
v = $clone(_selection[1][0], dialRes);
/* */ if (!(v.pc === ptrType$98.nil)) { $s = 23; continue; }
/* */ $s = 24; continue;
/* if (!(v.pc === ptrType$98.nil)) { */ case 23:
/* */ if (!(trace === ptrType$45.nil) && !(trace.GotConn === $throwNilPointerError) && $interfaceIsEqual(v.pc.alt, $ifaceNil)) { $s = 25; continue; }
/* */ $s = 26; continue;
/* if (!(trace === ptrType$45.nil) && !(trace.GotConn === $throwNilPointerError) && $interfaceIsEqual(v.pc.alt, $ifaceNil)) { */ case 25:
$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; }
/* } */ case 26:
$s = -1; return [v.pc, $ifaceNil];
/* } */ case 24:
_r$6 = req.Context().Done(); /* */ $s = 28; case 28: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_selection$1 = $select([[req.Cancel], [_r$6], [cancelc[0]], []]);
/* */ if (_selection$1[0] === 0) { $s = 29; continue; }
/* */ if (_selection$1[0] === 1) { $s = 30; continue; }
/* */ if (_selection$1[0] === 2) { $s = 31; continue; }
/* */ if (_selection$1[0] === 3) { $s = 32; continue; }
/* */ $s = 33; continue;
/* if (_selection$1[0] === 0) { */ case 29:
$s = -1; return [ptrType$98.nil, errRequestCanceledConn];
/* } else if (_selection$1[0] === 1) { */ case 30:
_r$7 = req.Context().Err(); /* */ $s = 34; case 34: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
$s = -1; return [ptrType$98.nil, _r$7];
/* } else if (_selection$1[0] === 2) { */ case 31:
err = _selection$1[1][0];
if ($interfaceIsEqual(err, errRequestCanceled)) {
err = errRequestCanceledConn;
}
$s = -1; return [ptrType$98.nil, err];
/* } else if (_selection$1[0] === 3) { */ case 32:
$s = -1; return [ptrType$98.nil, v.err];
/* } */ case 33:
$s = 22; continue;
/* } else if (_selection[0] === 1) { */ case 18:
pc$1 = _selection[1][0];
$r = handlePendingDial(); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (!(trace === ptrType$45.nil) && !(trace.GotConn === $throwNilPointerError)) { $s = 36; continue; }
/* */ $s = 37; continue;
/* if (!(trace === ptrType$45.nil) && !(trace.GotConn === $throwNilPointerError)) { */ case 36:
_r$8 = pc$1.isReused(); /* */ $s = 38; case 38: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
$r = trace.GotConn(new httptrace.GotConnInfo.ptr(pc$1.conn, _r$8, false, new time.Duration(0, 0))); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 37:
$s = -1; return [pc$1, $ifaceNil];
/* } else if (_selection[0] === 2) { */ case 19:
$r = handlePendingDial(); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return [ptrType$98.nil, errRequestCanceledConn];
/* } else if (_selection[0] === 3) { */ case 20:
$r = handlePendingDial(); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$9 = req.Context().Err(); /* */ $s = 42; case 42: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
$s = -1; return [ptrType$98.nil, _r$9];
/* } else if (_selection[0] === 4) { */ case 21:
err$1 = _selection[1][0];
$r = handlePendingDial(); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if ($interfaceIsEqual(err$1, errRequestCanceled)) {
err$1 = errRequestCanceledConn;
}
$s = -1; return [ptrType$98.nil, err$1];
/* } */ case 22:
$s = -1; return [ptrType$98.nil, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.getConn }; } $f.$ptr = $ptr; $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._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;
};
Transport.prototype.getConn = function(treq, cm) { return this.$val.getConn(treq, cm); };
Transport.ptr.prototype.dialConn = function(ctx, cm) {
var $ptr, _arg, _arg$1, _arg$2, _entry, _r, _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, br, cfg, cm, conn$1, conn$2, connectReq, cs, cs$1, ctx, d, err, err$1, err$2, err$3, err$4, err$5, errc, f, hdr, next, ok, ok$1, pa, pa$1, pconn, plainConn, resp, s, t, tc, timer, tlsConn, tlsDial, trace, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _entry = $f._entry; _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$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; br = $f.br; cfg = $f.cfg; cm = $f.cm; conn$1 = $f.conn$1; conn$2 = $f.conn$2; connectReq = $f.connectReq; cs = $f.cs; cs$1 = $f.cs$1; ctx = $f.ctx; 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; errc = $f.errc; f = $f.f; hdr = $f.hdr; next = $f.next; ok = $f.ok; ok$1 = $f.ok$1; pa = $f.pa; pa$1 = $f.pa$1; pconn = $f.pconn; plainConn = $f.plainConn; resp = $f.resp; s = $f.s; t = $f.t; tc = $f.tc; timer = $f.timer; tlsConn = $f.tlsConn; tlsDial = $f.tlsDial; trace = $f.trace; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
cs = [cs];
cs$1 = [cs$1];
errc = [errc];
pa = [pa];
timer = [timer];
tlsConn = [tlsConn];
trace = [trace];
t = this;
pconn = new persistConn.ptr($ifaceNil, t, $clone(cm.key(), connectMethodKey), $ifaceNil, ptrType$17.nil, ptrType$68.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 $Int64(0, 0), 0, ptrType$1.nil), ptrType$53.nil, new sync.Mutex.ptr(0, 0), 0, $ifaceNil, $ifaceNil, false, false, $throwNilPointerError);
_r = httptrace.ContextClientTrace(ctx); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
trace[0] = _r;
tlsDial = !(t.DialTLS === $throwNilPointerError) && cm.targetScheme === "https" && cm.proxyURL === ptrType$19.nil;
/* */ if (tlsDial) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (tlsDial) { */ case 2:
err = $ifaceNil;
_r$1 = cm.addr(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_arg = _r$1;
_r$2 = t.DialTLS("tcp", _arg); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple = _r$2;
pconn.conn = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [ptrType$98.nil, err];
}
if ($interfaceIsEqual(pconn.conn, $ifaceNil)) {
$s = -1; return [ptrType$98.nil, errors.New("net/http: Transport.DialTLS returned (nil, nil)")];
}
_tuple$1 = $assertType(pconn.conn, ptrType$95, true);
tc = _tuple$1[0];
ok = _tuple$1[1];
/* */ if (ok) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (ok) { */ case 7:
/* */ if (!(trace[0] === ptrType$45.nil) && !(trace[0].TLSHandshakeStart === $throwNilPointerError)) { $s = 9; continue; }
/* */ $s = 10; continue;
/* if (!(trace[0] === ptrType$45.nil) && !(trace[0].TLSHandshakeStart === $throwNilPointerError)) { */ case 9:
$r = trace[0].TLSHandshakeStart(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 10:
_r$3 = tc.Handshake(); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
err$1 = _r$3;
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 13:
$go($methodVal(pconn.conn, "Close"), []);
/* */ if (!(trace[0] === ptrType$45.nil) && !(trace[0].TLSHandshakeDone === $throwNilPointerError)) { $s = 15; continue; }
/* */ $s = 16; continue;
/* if (!(trace[0] === ptrType$45.nil) && !(trace[0].TLSHandshakeDone === $throwNilPointerError)) { */ case 15:
$r = trace[0].TLSHandshakeDone(new tls.ConnectionState.ptr(0, false, false, 0, "", false, "", sliceType$15.nil, sliceType$16.nil, sliceType$4.nil, sliceType$2.nil, sliceType$2.nil), err$1); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 16:
$s = -1; return [ptrType$98.nil, err$1];
/* } */ case 14:
_r$4 = tc.ConnectionState(); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
cs$1[0] = $clone(_r$4, tls.ConnectionState);
/* */ if (!(trace[0] === ptrType$45.nil) && !(trace[0].TLSHandshakeDone === $throwNilPointerError)) { $s = 19; continue; }
/* */ $s = 20; continue;
/* if (!(trace[0] === ptrType$45.nil) && !(trace[0].TLSHandshakeDone === $throwNilPointerError)) { */ case 19:
$r = trace[0].TLSHandshakeDone($clone(cs$1[0], tls.ConnectionState), $ifaceNil); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 20:
pconn.tlsState = cs$1[0];
/* } */ case 8:
$s = 4; continue;
/* } else { */ case 3:
_arg$1 = ctx;
_r$5 = cm.addr(); /* */ $s = 22; case 22: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_arg$2 = _r$5;
_r$6 = t.dial(_arg$1, "tcp", _arg$2); /* */ $s = 23; case 23: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_tuple$2 = _r$6;
conn$1 = _tuple$2[0];
err$2 = _tuple$2[1];
if (!($interfaceIsEqual(err$2, $ifaceNil))) {
if (!(cm.proxyURL === ptrType$19.nil)) {
err$2 = new net.OpError.ptr("proxyconnect", "tcp", $ifaceNil, $ifaceNil, err$2);
}
$s = -1; return [ptrType$98.nil, err$2];
}
pconn.conn = conn$1;
/* } */ case 4:
/* */ if (cm.proxyURL === ptrType$19.nil) { $s = 25; continue; }
/* */ if (cm.targetScheme === "http") { $s = 26; continue; }
/* */ if (cm.targetScheme === "https") { $s = 27; continue; }
/* */ $s = 28; continue;
/* if (cm.proxyURL === ptrType$19.nil) { */ case 25:
$s = 28; continue;
/* } else if (cm.targetScheme === "http") { */ case 26:
pconn.isProxy = true;
pa[0] = cm.proxyAuth();
if (!(pa[0] === "")) {
pconn.mutateHeaderFunc = (function(cs, cs$1, errc, pa, timer, tlsConn, trace) { return function(h) {
var $ptr, h;
new Header(h).Set("Proxy-Authorization", pa[0]);
}; })(cs, cs$1, errc, pa, timer, tlsConn, trace);
}
$s = 28; continue;
/* } else if (cm.targetScheme === "https") { */ case 27:
conn$2 = pconn.conn;
hdr = t.ProxyConnectHeader;
if (hdr === false) {
hdr = {};
}
connectReq = new Request.ptr("CONNECT", new url.URL.ptr("", cm.targetAddr, ptrType$18.nil, "", "", "", false, "", ""), "", 0, 0, hdr, $ifaceNil, $throwNilPointerError, new $Int64(0, 0), sliceType$1.nil, false, cm.targetAddr, false, false, ptrType$20.nil, false, "", "", ptrType$17.nil, $chanNil, ptrType$16.nil, $ifaceNil);
pa$1 = cm.proxyAuth();
if (!(pa$1 === "")) {
new Header(connectReq.Header).Set("Proxy-Authorization", pa$1);
}
_r$7 = connectReq.Write(conn$2); /* */ $s = 29; case 29: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_r$7;
br = bufio.NewReader(conn$2);
_r$8 = ReadResponse(br, connectReq); /* */ $s = 30; case 30: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_tuple$3 = _r$8;
resp = _tuple$3[0];
err$3 = _tuple$3[1];
/* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 31; continue; }
/* */ $s = 32; continue;
/* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 31:
_r$9 = conn$2.Close(); /* */ $s = 33; case 33: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
_r$9;
$s = -1; return [ptrType$98.nil, err$3];
/* } */ case 32:
/* */ if (!((resp.StatusCode === 200))) { $s = 34; continue; }
/* */ $s = 35; continue;
/* if (!((resp.StatusCode === 200))) { */ case 34:
f = strings.SplitN(resp.Status, " ", 2);
_r$10 = conn$2.Close(); /* */ $s = 36; case 36: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
_r$10;
$s = -1; return [ptrType$98.nil, errors.New((1 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 1]))];
/* } */ case 35:
/* } */ case 28:
case 24:
/* */ if (cm.targetScheme === "https" && !tlsDial) { $s = 37; continue; }
/* */ $s = 38; continue;
/* if (cm.targetScheme === "https" && !tlsDial) { */ case 37:
_r$11 = cloneTLSConfig(t.TLSClientConfig); /* */ $s = 39; case 39: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
cfg = _r$11;
if (cfg.ServerName === "") {
cfg.ServerName = cm.tlsHost();
}
plainConn = pconn.conn;
tlsConn[0] = tls.Client(plainConn, cfg);
errc[0] = new $Chan($error, 2);
timer[0] = ptrType$53.nil;
d = t.TLSHandshakeTimeout;
if (!((d.$high === 0 && d.$low === 0))) {
timer[0] = time.AfterFunc(d, (function(cs, cs$1, errc, pa, timer, tlsConn, trace) { return function $b() {
var $ptr, x$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = $send(errc[0], (x$3 = new tlsHandshakeTimeoutError.ptr(), new x$3.constructor.elem(x$3))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
}; })(cs, cs$1, errc, pa, timer, tlsConn, trace));
}
$go((function(cs, cs$1, errc, pa, timer, tlsConn, trace) { return function $b() {
var $ptr, _r$12, err$4, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$12 = $f._r$12; err$4 = $f.err$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
/* */ if (!(trace[0] === ptrType$45.nil) && !(trace[0].TLSHandshakeStart === $throwNilPointerError)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(trace[0] === ptrType$45.nil) && !(trace[0].TLSHandshakeStart === $throwNilPointerError)) { */ case 1:
$r = trace[0].TLSHandshakeStart(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 2:
_r$12 = tlsConn[0].Handshake(); /* */ $s = 4; case 4: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
err$4 = _r$12;
if (!(timer[0] === ptrType$53.nil)) {
timer[0].Stop();
}
$r = $send(errc[0], err$4); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r$12 = _r$12; $f.err$4 = err$4; $f.$s = $s; $f.$r = $r; return $f;
}; })(cs, cs$1, errc, pa, timer, tlsConn, trace), []);
_r$12 = $recv(errc[0]); /* */ $s = 40; case 40: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
err$4 = _r$12[0];
/* */ if (!($interfaceIsEqual(err$4, $ifaceNil))) { $s = 41; continue; }
/* */ $s = 42; continue;
/* if (!($interfaceIsEqual(err$4, $ifaceNil))) { */ case 41:
_r$13 = plainConn.Close(); /* */ $s = 43; case 43: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
_r$13;
/* */ if (!(trace[0] === ptrType$45.nil) && !(trace[0].TLSHandshakeDone === $throwNilPointerError)) { $s = 44; continue; }
/* */ $s = 45; continue;
/* if (!(trace[0] === ptrType$45.nil) && !(trace[0].TLSHandshakeDone === $throwNilPointerError)) { */ case 44:
$r = trace[0].TLSHandshakeDone(new tls.ConnectionState.ptr(0, false, false, 0, "", false, "", sliceType$15.nil, sliceType$16.nil, sliceType$4.nil, sliceType$2.nil, sliceType$2.nil), err$4); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 45:
$s = -1; return [ptrType$98.nil, err$4];
/* } */ case 42:
/* */ if (!cfg.InsecureSkipVerify) { $s = 47; continue; }
/* */ $s = 48; continue;
/* if (!cfg.InsecureSkipVerify) { */ case 47:
_r$14 = tlsConn[0].VerifyHostname(cfg.ServerName); /* */ $s = 49; case 49: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
err$5 = _r$14;
/* */ if (!($interfaceIsEqual(err$5, $ifaceNil))) { $s = 50; continue; }
/* */ $s = 51; continue;
/* if (!($interfaceIsEqual(err$5, $ifaceNil))) { */ case 50:
_r$15 = plainConn.Close(); /* */ $s = 52; case 52: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
_r$15;
$s = -1; return [ptrType$98.nil, err$5];
/* } */ case 51:
/* } */ case 48:
_r$16 = tlsConn[0].ConnectionState(); /* */ $s = 53; case 53: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
cs[0] = $clone(_r$16, tls.ConnectionState);
/* */ if (!(trace[0] === ptrType$45.nil) && !(trace[0].TLSHandshakeDone === $throwNilPointerError)) { $s = 54; continue; }
/* */ $s = 55; continue;
/* if (!(trace[0] === ptrType$45.nil) && !(trace[0].TLSHandshakeDone === $throwNilPointerError)) { */ case 54:
$r = trace[0].TLSHandshakeDone($clone(cs[0], tls.ConnectionState), $ifaceNil); /* */ $s = 56; case 56: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 55:
pconn.tlsState = cs[0];
pconn.conn = tlsConn[0];
/* } */ case 38:
s = pconn.tlsState;
/* */ if (!(s === ptrType$17.nil) && s.NegotiatedProtocolIsMutual && !(s.NegotiatedProtocol === "")) { $s = 57; continue; }
/* */ $s = 58; continue;
/* if (!(s === ptrType$17.nil) && s.NegotiatedProtocolIsMutual && !(s.NegotiatedProtocol === "")) { */ case 57:
_tuple$4 = (_entry = t.TLSNextProto[$String.keyFor(s.NegotiatedProtocol)], _entry !== undefined ? [_entry.v, true] : [$throwNilPointerError, false]);
next = _tuple$4[0];
ok$1 = _tuple$4[1];
/* */ if (ok$1) { $s = 59; continue; }
/* */ $s = 60; continue;
/* if (ok$1) { */ case 59:
_r$17 = next(cm.targetAddr, $assertType(pconn.conn, ptrType$95)); /* */ $s = 61; case 61: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
$s = -1; return [new persistConn.ptr(_r$17, ptrType$21.nil, new connectMethodKey.ptr("", "", ""), $ifaceNil, ptrType$17.nil, ptrType$68.nil, ptrType$10.nil, new $Int64(0, 0), $chanNil, $chanNil, $chanNil, false, false, new $Int64(0, 0), $chanNil, $chanNil, new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil), ptrType$53.nil, new sync.Mutex.ptr(0, 0), 0, $ifaceNil, $ifaceNil, false, false, $throwNilPointerError), $ifaceNil];
/* } */ case 60:
/* } */ case 58:
pconn.br = bufio.NewReader(pconn);
pconn.bw = bufio.NewWriter((x$3 = new persistConnWriter.ptr(pconn), new x$3.constructor.elem(x$3)));
$go($methodVal(pconn, "readLoop"), []);
$go($methodVal(pconn, "writeLoop"), []);
$s = -1; return [pconn, $ifaceNil];
/* */ } return; } if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.dialConn }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._entry = _entry; $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$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.br = br; $f.cfg = cfg; $f.cm = cm; $f.conn$1 = conn$1; $f.conn$2 = conn$2; $f.connectReq = connectReq; $f.cs = cs; $f.cs$1 = cs$1; $f.ctx = ctx; $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.errc = errc; $f.f = f; $f.hdr = hdr; $f.next = next; $f.ok = ok; $f.ok$1 = ok$1; $f.pa = pa; $f.pa$1 = pa$1; $f.pconn = pconn; $f.plainConn = plainConn; $f.resp = resp; $f.s = s; $f.t = t; $f.tc = tc; $f.timer = timer; $f.tlsConn = tlsConn; $f.tlsDial = tlsDial; $f.trace = trace; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
};
Transport.prototype.dialConn = function(ctx, cm) { return this.$val.dialConn(ctx, cm); };
persistConnWriter.ptr.prototype.Write = function(p) {
var $ptr, _r, _tuple, err, n, p, w, x$3, x$4, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; err = $f.err; n = $f.n; p = $f.p; w = $f.w; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
n = 0;
err = $ifaceNil;
w = this;
_r = w.pc.conn.Write(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
w.pc.nwrite = (x$3 = w.pc.nwrite, x$4 = (new $Int64(0, n)), new $Int64(x$3.$high + x$4.$high, x$3.$low + x$4.$low));
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: persistConnWriter.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.n = n; $f.p = p; $f.w = w; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
};
persistConnWriter.prototype.Write = function(p) { return this.$val.Write(p); };
connectMethod.ptr.prototype.key = function() {
var $ptr, cm, proxyStr, targetAddr;
cm = this;
proxyStr = "";
targetAddr = cm.targetAddr;
if (!(cm.proxyURL === ptrType$19.nil)) {
proxyStr = cm.proxyURL.String();
if (cm.targetScheme === "http") {
targetAddr = "";
}
}
return new connectMethodKey.ptr(proxyStr, cm.targetScheme, targetAddr);
};
connectMethod.prototype.key = function() { return this.$val.key(); };
connectMethod.ptr.prototype.addr = function() {
var $ptr, _r, cm, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; cm = $f.cm; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
cm = this;
/* */ if (!(cm.proxyURL === ptrType$19.nil)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(cm.proxyURL === ptrType$19.nil)) { */ case 1:
_r = canonicalAddr(cm.proxyURL); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 2:
$s = -1; return cm.targetAddr;
/* */ } return; } if ($f === undefined) { $f = { $blk: connectMethod.ptr.prototype.addr }; } $f.$ptr = $ptr; $f._r = _r; $f.cm = cm; $f.$s = $s; $f.$r = $r; return $f;
};
connectMethod.prototype.addr = function() { return this.$val.addr(); };
connectMethod.ptr.prototype.tlsHost = function() {
var $ptr, cm, h;
cm = this;
h = cm.targetAddr;
if (hasPort(h)) {
h = $substring(h, 0, strings.LastIndex(h, ":"));
}
return h;
};
connectMethod.prototype.tlsHost = function() { return this.$val.tlsHost(); };
connectMethodKey.ptr.prototype.String = function() {
var $ptr, _r, k, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; k = $f.k; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
k = this;
_r = 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 = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: connectMethodKey.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.k = k; $f.$s = $s; $f.$r = $r; return $f;
};
connectMethodKey.prototype.String = function() { return this.$val.String(); };
persistConn.ptr.prototype.maxHeaderResponseSize = function() {
var $ptr, pc, v;
pc = this;
v = pc.t.MaxResponseHeaderBytes;
if (!((v.$high === 0 && v.$low === 0))) {
return v;
}
return new $Int64(0, 10485760);
};
persistConn.prototype.maxHeaderResponseSize = function() { return this.$val.maxHeaderResponseSize(); };
persistConn.ptr.prototype.Read = function(p) {
var $ptr, _r, _r$1, _tmp, _tmp$1, _tuple, err, n, p, pc, x$3, x$4, x$5, x$6, x$7, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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; pc = $f.pc; 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:
n = 0;
err = $ifaceNil;
pc = this;
/* */ if ((x$3 = pc.readLimit, (x$3.$high < 0 || (x$3.$high === 0 && x$3.$low <= 0)))) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if ((x$3 = pc.readLimit, (x$3.$high < 0 || (x$3.$high === 0 && x$3.$low <= 0)))) { */ case 1:
_tmp = 0;
_r = fmt.Errorf("read limit of %d bytes exhausted", new sliceType([pc.maxHeaderResponseSize()])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tmp$1 = _r;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
/* } */ case 2:
if ((x$4 = (new $Int64(0, p.$length)), x$5 = pc.readLimit, (x$4.$high > x$5.$high || (x$4.$high === x$5.$high && x$4.$low > x$5.$low)))) {
p = $subslice(p, 0, $flatten64(pc.readLimit));
}
_r$1 = pc.conn.Read(p); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple = _r$1;
n = _tuple[0];
err = _tuple[1];
if ($interfaceIsEqual(err, io.EOF)) {
pc.sawEOF = true;
}
pc.readLimit = (x$6 = pc.readLimit, x$7 = (new $Int64(0, n)), new $Int64(x$6.$high - x$7.$high, x$6.$low - x$7.$low));
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $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.pc = pc; $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;
};
persistConn.prototype.Read = function(p) { return this.$val.Read(p); };
persistConn.ptr.prototype.isBroken = function() {
var $ptr, b, pc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; b = $f.b; pc = $f.pc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
pc = this;
$r = pc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
b = !($interfaceIsEqual(pc.closed, $ifaceNil));
$r = pc.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return b;
/* */ } return; } if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.isBroken }; } $f.$ptr = $ptr; $f.b = b; $f.pc = pc; $f.$s = $s; $f.$r = $r; return $f;
};
persistConn.prototype.isBroken = function() { return this.$val.isBroken(); };
persistConn.ptr.prototype.canceled = function() {
var $ptr, pc, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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);
pc = this;
$r = pc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(pc.mu, "Unlock"), []]);
$s = -1; return pc.canceledErr;
/* */ } 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.$ptr = $ptr; $f.pc = pc; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
persistConn.prototype.canceled = function() { return this.$val.canceled(); };
persistConn.ptr.prototype.isReused = function() {
var $ptr, pc, r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; pc = $f.pc; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
pc = this;
$r = pc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
r = pc.reused;
$r = pc.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return r;
/* */ } return; } if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.isReused }; } $f.$ptr = $ptr; $f.pc = pc; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
};
persistConn.prototype.isReused = function() { return this.$val.isReused(); };
persistConn.ptr.prototype.gotIdleConnTrace = function(idleAt) {
var $ptr, idleAt, pc, t, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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);
t = new httptrace.GotConnInfo.ptr($ifaceNil, false, false, new time.Duration(0, 0));
pc = this;
$r = pc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(pc.mu, "Unlock"), []]);
t.Reused = pc.reused;
t.Conn = pc.conn;
t.WasIdle = true;
if (!$clone(idleAt, time.Time).IsZero()) {
t.IdleTime = time.Since($clone(idleAt, time.Time));
}
$s = -1; return t;
/* */ } 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.$ptr = $ptr; $f.idleAt = idleAt; $f.pc = pc; $f.t = t; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
persistConn.prototype.gotIdleConnTrace = function(idleAt) { return this.$val.gotIdleConnTrace(idleAt); };
persistConn.ptr.prototype.cancelRequest = function(err) {
var $ptr, err, pc, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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);
pc = this;
$r = pc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(pc.mu, "Unlock"), []]);
pc.canceledErr = err;
$r = pc.closeLocked(errRequestCanceled); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.cancelRequest }; } $f.$ptr = $ptr; $f.err = err; $f.pc = pc; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
persistConn.prototype.cancelRequest = function(err) { return this.$val.cancelRequest(err); };
persistConn.ptr.prototype.closeConnIfStillIdle = function() {
var $ptr, _entry, _tuple, ok, pc, t, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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);
pc = this;
t = pc.t;
$r = t.idleMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(t.idleMu, "Unlock"), []]);
_tuple = (_entry = t.idleLRU.m[ptrType$98.keyFor(pc)], _entry !== undefined ? [_entry.v, true] : [ptrType$99.nil, false]);
ok = _tuple[1];
if (!ok) {
$s = -1; return;
}
t.removeIdleConnLocked(pc);
$r = pc.close(errIdleConnTimeout); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.closeConnIfStillIdle }; } $f.$ptr = $ptr; $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; } }
};
persistConn.prototype.closeConnIfStillIdle = function() { return this.$val.closeConnIfStillIdle(); };
persistConn.ptr.prototype.mapRoundTripErrorFromReadLoop = function(req, startBytesWritten, err) {
var $ptr, _r, _r$1, _r$2, _tuple, err, err$1, ok, out, pc, req, startBytesWritten, x$3, x$4, x$5, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; ok = $f.ok; out = $f.out; pc = $f.pc; req = $f.req; startBytesWritten = $f.startBytesWritten; 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:
out = $ifaceNil;
pc = this;
if ($interfaceIsEqual(err, $ifaceNil)) {
out = $ifaceNil;
$s = -1; return out;
}
_r = pc.canceled(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err$1 = _r;
if (!($interfaceIsEqual(err$1, $ifaceNil))) {
out = err$1;
$s = -1; return out;
}
if ($interfaceIsEqual(err, errServerClosedIdle)) {
out = err;
$s = -1; return out;
}
_tuple = $assertType(err, transportReadFromServerError, true);
ok = _tuple[1];
if (ok) {
out = err;
$s = -1; return out;
}
_r$1 = pc.isBroken(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
/* */ if (_r$1) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (_r$1) { */ case 2:
_r$2 = $recv(pc.writeLoopDone); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_r$2[0];
if ((x$3 = pc.nwrite, (x$3.$high === startBytesWritten.$high && x$3.$low === startBytesWritten.$low)) && (x$4 = req.outgoingLength(), (x$4.$high === 0 && x$4.$low === 0))) {
out = (x$5 = new nothingWrittenError.ptr(err), new x$5.constructor.elem(x$5));
$s = -1; return out;
}
/* } */ case 3:
out = err;
$s = -1; return out;
/* */ } return; } if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.mapRoundTripErrorFromReadLoop }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.ok = ok; $f.out = out; $f.pc = pc; $f.req = req; $f.startBytesWritten = startBytesWritten; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
};
persistConn.prototype.mapRoundTripErrorFromReadLoop = function(req, startBytesWritten, err) { return this.$val.mapRoundTripErrorFromReadLoop(req, startBytesWritten, err); };
persistConn.ptr.prototype.mapRoundTripErrorAfterClosed = function(req, startBytesWritten) {
var $ptr, _r, _r$1, _r$2, _tuple, err, err$1, ok, pc, req, startBytesWritten, x$3, x$4, x$5, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; ok = $f.ok; pc = $f.pc; req = $f.req; startBytesWritten = $f.startBytesWritten; 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:
pc = this;
_r = pc.canceled(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return err;
}
err$1 = pc.closed;
if ($interfaceIsEqual(err$1, errServerClosedIdle)) {
$s = -1; return err$1;
}
_tuple = $assertType(err$1, transportReadFromServerError, true);
ok = _tuple[1];
if (ok) {
$s = -1; return err$1;
}
_r$1 = $recv(pc.writeLoopDone); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1[0];
if ((x$3 = pc.nwrite, (x$3.$high === startBytesWritten.$high && x$3.$low === startBytesWritten.$low)) && (x$4 = req.outgoingLength(), (x$4.$high === 0 && x$4.$low === 0))) {
$s = -1; return (x$5 = new nothingWrittenError.ptr(err$1), new x$5.constructor.elem(x$5));
}
_r$2 = fmt.Errorf("net/http: HTTP/1.x transport connection broken: %v", new sliceType([err$1])); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$s = -1; return _r$2;
/* */ } return; } if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.mapRoundTripErrorAfterClosed }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.ok = ok; $f.pc = pc; $f.req = req; $f.startBytesWritten = startBytesWritten; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
};
persistConn.prototype.mapRoundTripErrorAfterClosed = function(req, startBytesWritten) { return this.$val.mapRoundTripErrorAfterClosed(req, startBytesWritten); };
persistConn.ptr.prototype.readLoop = function() {
var $ptr, _arg, _arg$1, _arg$2, _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, _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$3, x$4, x$5, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$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$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$3 = $f.x$3; 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);
closeErr = [closeErr];
eofc = [eofc];
pc = [pc];
pc[0] = this;
closeErr[0] = errReadLoopExiting;
$deferred.push([(function(closeErr, eofc, pc) { return function $b() {
var $ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = pc[0].close(closeErr[0]); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$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; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
}; })(closeErr, eofc, pc), []]);
tryPutIdleConn = (function(closeErr, eofc, pc) { return function $b(trace) {
var $ptr, _r, err, trace, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; err = $f.err; trace = $f.trace; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = pc[0].t.tryPutIdleConn(pc[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
closeErr[0] = err;
/* */ if (!(trace === ptrType$45.nil) && !(trace.PutIdleConn === $throwNilPointerError) && !($interfaceIsEqual(err, errKeepAlivesDisabled))) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!(trace === ptrType$45.nil) && !(trace.PutIdleConn === $throwNilPointerError) && !($interfaceIsEqual(err, errKeepAlivesDisabled))) { */ case 4:
$r = trace.PutIdleConn(err); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 5:
$s = -1; return false;
/* } */ case 3:
/* */ if (!(trace === ptrType$45.nil) && !(trace.PutIdleConn === $throwNilPointerError)) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (!(trace === ptrType$45.nil) && !(trace.PutIdleConn === $throwNilPointerError)) { */ case 7:
$r = trace.PutIdleConn($ifaceNil); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 8:
$s = -1; return true;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f.err = err; $f.trace = trace; $f.$s = $s; $f.$r = $r; return $f;
}; })(closeErr, eofc, pc);
eofc[0] = new $Chan(structType, 0);
$deferred.push([function(_arg) { $close(_arg); }, [eofc[0]]]);
$r = testHookMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
testHookReadLoopBeforeNextRead$1 = testHookReadLoopBeforeNextRead;
$r = testHookMu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
alive = true;
/* while (true) { */ case 3:
/* if (!(alive)) { break; } */ if(!(alive)) { $s = 4; continue; }
waitForBodyRead = [waitForBodyRead];
pc[0].readLimit = pc[0].maxHeaderResponseSize();
_r = pc[0].br.Peek(1); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
err = _tuple[1];
$r = pc[0].mu.Lock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (pc[0].numExpectedResponses === 0) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if (pc[0].numExpectedResponses === 0) { */ case 7:
$r = pc[0].readLoopPeekFailLocked(err); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = pc[0].mu.Unlock(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } */ case 8:
$r = pc[0].mu.Unlock(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$1 = $recv(pc[0].reqch); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
rc = $clone(_r$1[0], requestAndChan);
_r$2 = httptrace.ContextClientTrace(rc.req.Context()); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
trace = _r$2;
resp = ptrType$16.nil;
/* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 14; continue; }
/* */ $s = 15; continue;
/* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 14:
_r$3 = pc[0].readResponse($clone(rc, requestAndChan), trace); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple$1 = _r$3;
resp = _tuple$1[0];
err = _tuple$1[1];
$s = 16; continue;
/* } else { */ case 15:
err = (x$3 = new transportReadFromServerError.ptr(err), new x$3.constructor.elem(x$3));
closeErr[0] = err;
/* } */ case 16:
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 18; continue; }
/* */ $s = 19; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 18:
/* */ if ((x$4 = pc[0].readLimit, (x$4.$high < 0 || (x$4.$high === 0 && x$4.$low <= 0)))) { $s = 20; continue; }
/* */ $s = 21; continue;
/* if ((x$4 = pc[0].readLimit, (x$4.$high < 0 || (x$4.$high === 0 && x$4.$low <= 0)))) { */ case 20:
_r$4 = 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$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
err = _r$4;
/* } */ case 21:
_r$5 = pc[0].shouldRetryRequest(rc.req, err); /* */ $s = 25; case 25: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
/* */ if (!_r$5) { $s = 23; continue; }
/* */ $s = 24; continue;
/* if (!_r$5) { */ case 23:
$r = pc[0].t.setReqCanceler(rc.req, $throwNilPointerError); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 24:
_r$6 = $select([[rc.ch, new responseAndError.ptr(ptrType$16.nil, err)], [rc.callerGone]]); /* */ $s = 27; case 27: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_selection = _r$6;
if (_selection[0] === 0) {
} else if (_selection[0] === 1) {
$s = -1; return;
}
$s = -1; return;
/* } */ case 19:
pc[0].readLimit = new $Int64(2147483647, 4294967295);
$r = pc[0].mu.Lock(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
pc[0].numExpectedResponses = pc[0].numExpectedResponses - (1) >> 0;
$r = pc[0].mu.Unlock(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
hasBody = !(rc.req.Method === "HEAD") && !((x$5 = resp.ContentLength, (x$5.$high === 0 && x$5.$low === 0)));
if (resp.Close || rc.req.Close || resp.StatusCode <= 199) {
alive = false;
}
/* */ if (!hasBody) { $s = 30; continue; }
/* */ $s = 31; continue;
/* if (!hasBody) { */ case 30:
$r = pc[0].t.setReqCanceler(rc.req, $throwNilPointerError); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (!(alive && !pc[0].sawEOF)) { _v$1 = false; $s = 34; continue s; }
_r$7 = pc[0].wroteRequest(); /* */ $s = 35; case 35: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_v$1 = _r$7; case 34:
if (!(_v$1)) { _v = false; $s = 33; continue s; }
_r$8 = tryPutIdleConn(trace); /* */ $s = 36; case 36: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_v = _r$8; case 33:
alive = _v;
_r$9 = $select([[rc.ch, new responseAndError.ptr(resp, $ifaceNil)], [rc.callerGone]]); /* */ $s = 37; case 37: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
_selection$1 = _r$9;
if (_selection$1[0] === 0) {
} else if (_selection$1[0] === 1) {
$s = -1; return;
}
$r = testHookReadLoopBeforeNextRead$1(); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* continue; */ $s = 3; continue;
/* } */ case 31:
waitForBodyRead[0] = new $Chan($Bool, 2);
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) {
var $ptr, _r$10, _r$11, cerr, err$1, isEOF, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
isEOF = $interfaceIsEqual(err$1, io.EOF);
$r = $send(waitForBodyRead[0], isEOF); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (isEOF) { $s = 2; continue; }
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (isEOF) { */ case 2:
_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; }
_r$10[0];
$s = 4; continue;
/* } else if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 3:
_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; }
cerr = _r$11;
if (!($interfaceIsEqual(cerr, $ifaceNil))) {
$s = -1; return cerr;
}
/* } */ case 4:
$s = -1; return err$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $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;
}; })(closeErr, eofc, pc, waitForBodyRead), (function(closeErr, eofc, pc, waitForBodyRead) { return function $b() {
var $ptr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = $send(waitForBodyRead[0], false); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return $ifaceNil;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
}; })(closeErr, eofc, pc, waitForBodyRead));
resp.Body = body$1;
if (rc.addedGzip && new Header(resp.Header).Get("Content-Encoding") === "gzip") {
resp.Body = new gzipReader.ptr(body$1, ptrType$71.nil, $ifaceNil);
new Header(resp.Header).Del("Content-Encoding");
new Header(resp.Header).Del("Content-Length");
resp.ContentLength = new $Int64(-1, 4294967295);
resp.Uncompressed = true;
}
_r$10 = $select([[rc.ch, new responseAndError.ptr(resp, $ifaceNil)], [rc.callerGone]]); /* */ $s = 39; case 39: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
_selection$2 = _r$10;
if (_selection$2[0] === 0) {
} else if (_selection$2[0] === 1) {
$s = -1; return;
}
_r$11 = rc.req.Context().Done(); /* */ $s = 40; case 40: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
_r$12 = $select([[waitForBodyRead[0]], [rc.req.Cancel], [_r$11], [pc[0].closech]]); /* */ $s = 41; case 41: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
_selection$3 = _r$12;
/* */ if (_selection$3[0] === 0) { $s = 42; continue; }
/* */ if (_selection$3[0] === 1) { $s = 43; continue; }
/* */ if (_selection$3[0] === 2) { $s = 44; continue; }
/* */ if (_selection$3[0] === 3) { $s = 45; continue; }
/* */ $s = 46; continue;
/* if (_selection$3[0] === 0) { */ case 42:
bodyEOF = _selection$3[1][0];
$r = pc[0].t.setReqCanceler(rc.req, $throwNilPointerError); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (!(alive && bodyEOF && !pc[0].sawEOF)) { _v$3 = false; $s = 49; continue s; }
_r$13 = pc[0].wroteRequest(); /* */ $s = 50; case 50: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
_v$3 = _r$13; case 49:
if (!(_v$3)) { _v$2 = false; $s = 48; continue s; }
_r$14 = tryPutIdleConn(trace); /* */ $s = 51; case 51: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
_v$2 = _r$14; case 48:
alive = _v$2;
/* */ if (bodyEOF) { $s = 52; continue; }
/* */ $s = 53; continue;
/* if (bodyEOF) { */ case 52:
$r = $send(eofc[0], $clone(new structType.ptr(), structType)); /* */ $s = 54; case 54: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 53:
$s = 46; continue;
/* } else if (_selection$3[0] === 1) { */ case 43:
alive = false;
$r = pc[0].t.CancelRequest(rc.req); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 46; continue;
/* } else if (_selection$3[0] === 2) { */ case 44:
alive = false;
_arg$1 = rc.req;
_r$15 = rc.req.Context().Err(); /* */ $s = 56; case 56: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
_arg$2 = _r$15;
$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; }
$s = 46; continue;
/* } else if (_selection$3[0] === 3) { */ case 45:
alive = false;
/* } */ case 46:
$r = testHookReadLoopBeforeNextRead$1(); /* */ $s = 58; case 58: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ $s = 3; continue; case 4:
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.readLoop }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$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$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$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
persistConn.prototype.readLoop = function() { return this.$val.readLoop(); };
persistConn.ptr.prototype.readLoopPeekFailLocked = function(peekErr) {
var $ptr, _r, _r$1, _tuple, buf, n, pc, peekErr, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _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:
pc = this;
if (!($interfaceIsEqual(pc.closed, $ifaceNil))) {
$s = -1; return;
}
n = pc.br.Buffered();
/* */ if (n > 0) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (n > 0) { */ case 1:
_r = pc.br.Peek(n); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
buf = _tuple[0];
$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; }
/* } */ case 2:
/* */ if ($interfaceIsEqual(peekErr, io.EOF)) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if ($interfaceIsEqual(peekErr, io.EOF)) { */ case 5:
$r = pc.closeLocked(errServerClosedIdle); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = 7; continue;
/* } else { */ case 6:
_r$1 = fmt.Errorf("readLoopPeekFailLocked: %v", new sliceType([peekErr])); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
$r = pc.closeLocked(_r$1); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 7:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.readLoopPeekFailLocked }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.buf = buf; $f.n = n; $f.pc = pc; $f.peekErr = peekErr; $f.$s = $s; $f.$r = $r; return $f;
};
persistConn.prototype.readLoopPeekFailLocked = function(peekErr) { return this.$val.readLoopPeekFailLocked(peekErr); };
persistConn.ptr.prototype.readResponse = function(rc, trace) {
var $ptr, _r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, err, err$1, pc, peek, rc, resp, trace, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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:
resp = ptrType$16.nil;
err = $ifaceNil;
pc = this;
/* */ if (!(trace === ptrType$45.nil) && !(trace.GotFirstResponseByte === $throwNilPointerError)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!(trace === ptrType$45.nil) && !(trace.GotFirstResponseByte === $throwNilPointerError)) { */ case 1:
_r = pc.br.Peek(1); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
peek = _tuple[0];
err$1 = _tuple[1];
/* */ if ($interfaceIsEqual(err$1, $ifaceNil) && (peek.$length === 1)) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if ($interfaceIsEqual(err$1, $ifaceNil) && (peek.$length === 1)) { */ case 4:
$r = trace.GotFirstResponseByte(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 5:
/* } */ case 2:
_r$1 = ReadResponse(pc.br, rc.req); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple$1 = _r$1;
resp = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [resp, err];
}
/* */ if (!(rc.continueCh === $chanNil)) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (!(rc.continueCh === $chanNil)) { */ case 8:
/* */ if (resp.StatusCode === 100) { $s = 10; continue; }
/* */ $s = 11; continue;
/* if (resp.StatusCode === 100) { */ case 10:
/* */ if (!(trace === ptrType$45.nil) && !(trace.Got100Continue === $throwNilPointerError)) { $s = 13; continue; }
/* */ $s = 14; continue;
/* if (!(trace === ptrType$45.nil) && !(trace.Got100Continue === $throwNilPointerError)) { */ case 13:
$r = trace.Got100Continue(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 14:
$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; }
$s = 12; continue;
/* } else { */ case 11:
$close(rc.continueCh);
/* } */ case 12:
/* } */ case 9:
/* */ if (resp.StatusCode === 100) { $s = 17; continue; }
/* */ $s = 18; continue;
/* if (resp.StatusCode === 100) { */ case 17:
pc.readLimit = pc.maxHeaderResponseSize();
_r$2 = ReadResponse(pc.br, rc.req); /* */ $s = 19; case 19: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_tuple$2 = _r$2;
resp = _tuple$2[0];
err = _tuple$2[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [resp, err];
}
/* } */ case 18:
resp.TLS = pc.tlsState;
$s = -1; return [resp, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.readResponse }; } $f.$ptr = $ptr; $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.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;
};
persistConn.prototype.readResponse = function(rc, trace) { return this.$val.readResponse(rc, trace); };
persistConn.ptr.prototype.waitForContinue = function(continueCh) {
var $ptr, continueCh, pc;
pc = this;
if (continueCh === $chanNil) {
return $throwNilPointerError;
}
return (function $b() {
var $ptr, _r, _selection, _tuple, ok, timer, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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);
timer = time.NewTimer(pc.t.ExpectContinueTimeout);
$deferred.push([$methodVal(timer, "Stop"), []]);
_r = $select([[continueCh], [timer.C], [pc.closech]]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_selection = _r;
if (_selection[0] === 0) {
_tuple = _selection[1];
ok = _tuple[1];
$s = -1; return ok;
} else if (_selection[0] === 1) {
$s = -1; return true;
} else if (_selection[0] === 2) {
$s = -1; return false;
}
$s = -1; return false;
/* */ } return; } } catch(err) { $err = err; $s = -1; return false; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f._selection = _selection; $f._tuple = _tuple; $f.ok = ok; $f.timer = timer; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
});
};
persistConn.prototype.waitForContinue = function(continueCh) { return this.$val.waitForContinue(continueCh); };
persistConn.ptr.prototype.writeLoop = function() {
var $ptr, _arg, _r, _r$1, _r$2, _selection, err, pc, startBytesWritten, wr, x$3, x$4, x$5, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _selection = $f._selection; err = $f.err; pc = $f.pc; startBytesWritten = $f.startBytesWritten; wr = $f.wr; x$3 = $f.x$3; 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);
pc = this;
$deferred.push([function(_arg) { $close(_arg); }, [pc.writeLoopDone]]);
/* while (true) { */ case 1:
_r = $select([[pc.writech], [pc.closech]]); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_selection = _r;
/* */ if (_selection[0] === 0) { $s = 4; continue; }
/* */ if (_selection[0] === 1) { $s = 5; continue; }
/* */ $s = 6; continue;
/* if (_selection[0] === 0) { */ case 4:
wr = $clone(_selection[1][0], writeRequest);
startBytesWritten = pc.nwrite;
_r$1 = wr.req.Request.write(pc.bw, pc.isProxy, wr.req.extra, pc.waitForContinue(wr.continueCh)); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
err = _r$1;
/* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 8:
_r$2 = pc.bw.Flush(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
err = _r$2;
/* } */ case 9:
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 11; continue; }
/* */ $s = 12; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 11:
$r = wr.req.Request.closeBody(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if ((x$3 = pc.nwrite, (x$3.$high === startBytesWritten.$high && x$3.$low === startBytesWritten.$low)) && (x$4 = wr.req.Request.outgoingLength(), (x$4.$high === 0 && x$4.$low === 0))) {
err = (x$5 = new nothingWrittenError.ptr(err), new x$5.constructor.elem(x$5));
}
/* } */ case 12:
$r = $send(pc.writeErrCh, err); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = $send(wr.ch, err); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 16; continue; }
/* */ $s = 17; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 16:
$r = pc.close(err); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* } */ case 17:
$s = 6; continue;
/* } else if (_selection[0] === 1) { */ case 5:
$s = -1; return;
/* } */ case 6:
/* } */ $s = 1; continue; case 2:
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.writeLoop }; } $f.$ptr = $ptr; $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._selection = _selection; $f.err = err; $f.pc = pc; $f.startBytesWritten = startBytesWritten; $f.wr = wr; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
persistConn.prototype.writeLoop = function() { return this.$val.writeLoop(); };
persistConn.ptr.prototype.wroteRequest = function() {
var $ptr, _r, _selection, _selection$1, err, err$1, pc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _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:
pc = this;
_selection = $select([[pc.writeErrCh], []]);
/* */ if (_selection[0] === 0) { $s = 1; continue; }
/* */ if (_selection[0] === 1) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (_selection[0] === 0) { */ case 1:
err = _selection[1][0];
$s = -1; return $interfaceIsEqual(err, $ifaceNil);
/* } else if (_selection[0] === 1) { */ case 2:
_r = $select([[pc.writeErrCh], [time.After(new time.Duration(0, 50000000))]]); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_selection$1 = _r;
if (_selection$1[0] === 0) {
err$1 = _selection$1[1][0];
$s = -1; return $interfaceIsEqual(err$1, $ifaceNil);
} else if (_selection$1[0] === 1) {
$s = -1; return false;
}
/* } */ case 3:
$s = -1; return false;
/* */ } return; } if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.wroteRequest }; } $f.$ptr = $ptr; $f._r = _r; $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;
};
persistConn.prototype.wroteRequest = function() { return this.$val.wroteRequest(); };
httpError.ptr.prototype.Error = function() {
var $ptr, e;
e = this;
return e.err;
};
httpError.prototype.Error = function() { return this.$val.Error(); };
httpError.ptr.prototype.Timeout = function() {
var $ptr, e;
e = this;
return e.timeout;
};
httpError.prototype.Timeout = function() { return this.$val.Timeout(); };
httpError.ptr.prototype.Temporary = function() {
var $ptr, e;
e = this;
return true;
};
httpError.prototype.Temporary = function() { return this.$val.Temporary(); };
nop = function() {
var $ptr;
};
persistConn.ptr.prototype.roundTrip = function(req) {
var $ptr, _arg, _arg$1, _arg$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _selection, _tmp, _tmp$1, _tmp$2, _tmp$3, cancelChan, cerr, continueCh, ctxDoneChan, d, err, err$1, gone, headerFn, pc, re, req, requestedGzip, resc, resp, respHeaderTimer, startBytesWritten, timer, writeErrCh, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; _selection = $f._selection; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; cancelChan = $f.cancelChan; cerr = $f.cerr; 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);
resp = ptrType$16.nil;
err = $ifaceNil;
pc = this;
$r = testHookEnterRoundTrip(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r = pc.t.replaceReqCanceler(req.Request, $methodVal(pc, "cancelRequest")); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
/* */ if (!_r) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!_r) { */ case 2:
$r = pc.t.putOrCloseIdleConn(pc); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_tmp = ptrType$16.nil;
_tmp$1 = errRequestCanceled;
resp = _tmp;
err = _tmp$1;
$s = -1; return [resp, err];
/* } */ case 3:
$r = pc.mu.Lock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
pc.numExpectedResponses = pc.numExpectedResponses + (1) >> 0;
headerFn = pc.mutateHeaderFunc;
$r = pc.mu.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* */ if (!(headerFn === $throwNilPointerError)) { $s = 8; continue; }
/* */ $s = 9; continue;
/* if (!(headerFn === $throwNilPointerError)) { */ case 8:
$r = headerFn(req.extraHeaders()); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 9:
requestedGzip = false;
if (!pc.t.DisableCompression && new Header(req.Request.Header).Get("Accept-Encoding") === "" && new Header(req.Request.Header).Get("Range") === "" && !(req.Request.Method === "HEAD")) {
requestedGzip = true;
new Header(req.extraHeaders()).Set("Accept-Encoding", "gzip");
}
continueCh = $chanNil;
if (req.Request.ProtoAtLeast(1, 1) && !($interfaceIsEqual(req.Request.Body, $ifaceNil)) && req.Request.expectsContinue()) {
continueCh = new $Chan(structType, 1);
}
if (pc.t.DisableKeepAlives) {
new Header(req.extraHeaders()).Set("Connection", "close");
}
gone = new $Chan(structType, 0);
$deferred.push([function(_arg) { $close(_arg); }, [gone]]);
startBytesWritten = pc.nwrite;
writeErrCh = new $Chan($error, 1);
$r = $send(pc.writech, $clone(new writeRequest.ptr(req, writeErrCh, continueCh), writeRequest)); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
resc = new $Chan(responseAndError, 0);
$r = $send(pc.reqch, $clone(new requestAndChan.ptr(req.Request, resc, requestedGzip, continueCh, gone), requestAndChan)); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
re = new responseAndError.ptr(ptrType$16.nil, $ifaceNil);
respHeaderTimer = $chanNil;
cancelChan = req.Request.Cancel;
_r$1 = req.Request.Context().Done(); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
ctxDoneChan = _r$1;
/* while (true) { */ case 14:
$r = testHookWaitResLoop(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_r$2 = $select([[writeErrCh], [pc.closech], [respHeaderTimer], [resc], [cancelChan], [ctxDoneChan]]); /* */ $s = 17; case 17: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
_selection = _r$2;
/* */ if (_selection[0] === 0) { $s = 18; continue; }
/* */ if (_selection[0] === 1) { $s = 19; continue; }
/* */ if (_selection[0] === 2) { $s = 20; continue; }
/* */ if (_selection[0] === 3) { $s = 21; continue; }
/* */ if (_selection[0] === 4) { $s = 22; continue; }
/* */ if (_selection[0] === 5) { $s = 23; continue; }
/* */ $s = 24; continue;
/* if (_selection[0] === 0) { */ case 18:
err$1 = _selection[1][0];
/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 25; continue; }
/* */ $s = 26; continue;
/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 25:
_r$3 = pc.canceled(); /* */ $s = 27; case 27: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
cerr = _r$3;
if (!($interfaceIsEqual(cerr, $ifaceNil))) {
err$1 = cerr;
}
responseAndError.copy(re, new responseAndError.ptr(ptrType$16.nil, err$1));
_r$4 = fmt.Errorf("write error: %v", new sliceType([err$1])); /* */ $s = 28; case 28: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
$r = pc.close(_r$4); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* break WaitResponse; */ $s = 15; continue s;
/* } */ case 26:
d = pc.t.ResponseHeaderTimeout;
if ((d.$high > 0 || (d.$high === 0 && d.$low > 0))) {
timer = time.NewTimer(d);
$deferred.push([$methodVal(timer, "Stop"), []]);
respHeaderTimer = timer.C;
}
$s = 24; continue;
/* } else if (_selection[0] === 1) { */ case 19:
_r$5 = pc.mapRoundTripErrorAfterClosed(req.Request, startBytesWritten); /* */ $s = 30; case 30: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
responseAndError.copy(re, new responseAndError.ptr(ptrType$16.nil, _r$5));
/* break WaitResponse; */ $s = 15; continue s;
$s = 24; continue;
/* } else if (_selection[0] === 2) { */ case 20:
$r = pc.close(errTimeout); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
responseAndError.copy(re, new responseAndError.ptr(ptrType$16.nil, errTimeout));
/* break WaitResponse; */ $s = 15; continue s;
$s = 24; continue;
/* } else if (_selection[0] === 3) { */ case 21:
responseAndError.copy(re, _selection[1][0]);
_r$6 = pc.mapRoundTripErrorFromReadLoop(req.Request, startBytesWritten, re.err); /* */ $s = 32; case 32: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
re.err = _r$6;
/* break WaitResponse; */ $s = 15; continue s;
$s = 24; continue;
/* } else if (_selection[0] === 4) { */ case 22:
$r = pc.t.CancelRequest(req.Request); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
cancelChan = $chanNil;
$s = 24; continue;
/* } else if (_selection[0] === 5) { */ case 23:
_arg$1 = req.Request;
_r$7 = req.Request.Context().Err(); /* */ $s = 34; case 34: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_arg$2 = _r$7;
$r = pc.t.cancelRequest(_arg$1, _arg$2); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
cancelChan = $chanNil;
ctxDoneChan = $chanNil;
/* } */ case 24:
/* } */ $s = 14; continue; case 15:
/* */ if (!($interfaceIsEqual(re.err, $ifaceNil))) { $s = 36; continue; }
/* */ $s = 37; continue;
/* if (!($interfaceIsEqual(re.err, $ifaceNil))) { */ case 36:
$r = pc.t.setReqCanceler(req.Request, $throwNilPointerError); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
/* } */ case 37:
if ((re.res === ptrType$16.nil) === ($interfaceIsEqual(re.err, $ifaceNil))) {
$panic(new $String("internal error: exactly one of res or err should be set"));
}
_tmp$2 = re.res;
_tmp$3 = re.err;
resp = _tmp$2;
err = _tmp$3;
$s = -1; return [resp, err];
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [resp, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.roundTrip }; } $f.$ptr = $ptr; $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._selection = _selection; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.cancelChan = cancelChan; $f.cerr = cerr; $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; } }
};
persistConn.prototype.roundTrip = function(req) { return this.$val.roundTrip(req); };
persistConn.ptr.prototype.markReused = function() {
var $ptr, pc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; pc = $f.pc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
pc = this;
$r = pc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
pc.reused = true;
$r = pc.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.markReused }; } $f.$ptr = $ptr; $f.pc = pc; $f.$s = $s; $f.$r = $r; return $f;
};
persistConn.prototype.markReused = function() { return this.$val.markReused(); };
persistConn.ptr.prototype.close = function(err) {
var $ptr, err, pc, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; 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);
pc = this;
$r = pc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(pc.mu, "Unlock"), []]);
$r = pc.closeLocked(err); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.close }; } $f.$ptr = $ptr; $f.err = err; $f.pc = pc; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
persistConn.prototype.close = function(err) { return this.$val.close(err); };
persistConn.ptr.prototype.closeLocked = function(err) {
var $ptr, _r, err, pc, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; err = $f.err; pc = $f.pc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
pc = this;
if ($interfaceIsEqual(err, $ifaceNil)) {
$panic(new $String("nil error"));
}
pc.broken = true;
/* */ if ($interfaceIsEqual(pc.closed, $ifaceNil)) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if ($interfaceIsEqual(pc.closed, $ifaceNil)) { */ case 1:
pc.closed = err;
/* */ if (!($interfaceIsEqual(pc.alt, $ifaceNil))) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if (!($interfaceIsEqual(pc.alt, $ifaceNil))) { */ case 3:
$s = 5; continue;
/* } else { */ case 4:
_r = pc.conn.Close(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
$close(pc.closech);
/* } */ case 5:
/* } */ case 2:
pc.mutateHeaderFunc = $throwNilPointerError;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.closeLocked }; } $f.$ptr = $ptr; $f._r = _r; $f.err = err; $f.pc = pc; $f.$s = $s; $f.$r = $r; return $f;
};
persistConn.prototype.closeLocked = function(err) { return this.$val.closeLocked(err); };
canonicalAddr = function(url$1) {
var $ptr, _entry, _r, _tuple, addr, err, port, url$1, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _r = $f._r; _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:
addr = url$1.Hostname();
_r = idnaASCII(addr); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
v = _tuple[0];
err = _tuple[1];
if ($interfaceIsEqual(err, $ifaceNil)) {
addr = v;
}
port = url$1.Port();
if (port === "") {
port = (_entry = portMap[$String.keyFor(url$1.Scheme)], _entry !== undefined ? _entry.v : "");
}
$s = -1; return net.JoinHostPort(addr, port);
/* */ } return; } if ($f === undefined) { $f = { $blk: canonicalAddr }; } $f.$ptr = $ptr; $f._entry = _entry; $f._r = _r; $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;
};
bodyEOFSignal.ptr.prototype.Read = function(p) {
var $ptr, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, closed, err, es, n, p, rerr, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; 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);
n = 0;
err = $ifaceNil;
es = this;
$r = es.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
_tmp = es.closed;
_tmp$1 = es.rerr;
closed = _tmp;
rerr = _tmp$1;
$r = es.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (closed) {
_tmp$2 = 0;
_tmp$3 = errReadOnClosedResBody;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
}
if (!($interfaceIsEqual(rerr, $ifaceNil))) {
_tmp$4 = 0;
_tmp$5 = rerr;
n = _tmp$4;
err = _tmp$5;
$s = -1; return [n, err];
}
_r = es.body.Read(p); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
n = _tuple[0];
err = _tuple[1];
/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
$r = es.mu.Lock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(es.mu, "Unlock"), []]);
if ($interfaceIsEqual(es.rerr, $ifaceNil)) {
es.rerr = err;
}
_r$1 = es.condfn(err); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
err = _r$1;
/* } */ case 5:
$s = -1; return [n, err];
/* */ } 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.$ptr = $ptr; $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.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; } }
};
bodyEOFSignal.prototype.Read = function(p) { return this.$val.Read(p); };
bodyEOFSignal.ptr.prototype.Close = function() {
var $ptr, _r, _r$1, _r$2, err, es, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; 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);
es = this;
$r = es.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$deferred.push([$methodVal(es.mu, "Unlock"), []]);
if (es.closed) {
$s = -1; return $ifaceNil;
}
es.closed = true;
/* */ if (!(es.earlyCloseFn === $throwNilPointerError) && !($interfaceIsEqual(es.rerr, io.EOF))) { $s = 2; continue; }
/* */ $s = 3; continue;
/* if (!(es.earlyCloseFn === $throwNilPointerError) && !($interfaceIsEqual(es.rerr, io.EOF))) { */ case 2:
_r = es.earlyCloseFn(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 3:
_r$1 = es.body.Close(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
err = _r$1;
_r$2 = es.condfn(err); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
$s = -1; return _r$2;
/* */ } 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.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.err = err; $f.es = es; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
bodyEOFSignal.prototype.Close = function() { return this.$val.Close(); };
bodyEOFSignal.ptr.prototype.condfn = function(err) {
var $ptr, _r, err, es, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; err = $f.err; es = $f.es; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
es = this;
if (es.fn === $throwNilPointerError) {
$s = -1; return err;
}
_r = es.fn(err); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
err = _r;
es.fn = $throwNilPointerError;
$s = -1; return err;
/* */ } return; } if ($f === undefined) { $f = { $blk: bodyEOFSignal.ptr.prototype.condfn }; } $f.$ptr = $ptr; $f._r = _r; $f.err = err; $f.es = es; $f.$s = $s; $f.$r = $r; return $f;
};
bodyEOFSignal.prototype.condfn = function(err) { return this.$val.condfn(err); };
gzipReader.ptr.prototype.Read = function(p) {
var $ptr, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, err, gz, n, p, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; gz = $f.gz; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
n = 0;
err = $ifaceNil;
gz = this;
/* */ if (gz.zr === ptrType$71.nil) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (gz.zr === ptrType$71.nil) { */ case 1:
/* */ if ($interfaceIsEqual(gz.zerr, $ifaceNil)) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if ($interfaceIsEqual(gz.zerr, $ifaceNil)) { */ case 3:
_r = gzip.NewReader(gz.body); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_tuple = _r;
gz.zr = _tuple[0];
gz.zerr = _tuple[1];
/* } */ case 4:
if (!($interfaceIsEqual(gz.zerr, $ifaceNil))) {
_tmp = 0;
_tmp$1 = gz.zerr;
n = _tmp;
err = _tmp$1;
$s = -1; return [n, err];
}
/* } */ case 2:
$r = gz.body.mu.Lock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (gz.body.closed) {
err = errReadOnClosedResBody;
}
$r = gz.body.mu.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
if (!($interfaceIsEqual(err, $ifaceNil))) {
_tmp$2 = 0;
_tmp$3 = err;
n = _tmp$2;
err = _tmp$3;
$s = -1; return [n, err];
}
_r$1 = gz.zr.Read(p); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_tuple$1 = _r$1;
n = _tuple$1[0];
err = _tuple$1[1];
$s = -1; return [n, err];
/* */ } return; } if ($f === undefined) { $f = { $blk: gzipReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $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.gz = gz; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
};
gzipReader.prototype.Read = function(p) { return this.$val.Read(p); };
gzipReader.ptr.prototype.Close = function() {
var $ptr, _r, gz, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; gz = $f.gz; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
gz = this;
_r = gz.body.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: gzipReader.ptr.prototype.Close }; } $f.$ptr = $ptr; $f._r = _r; $f.gz = gz; $f.$s = $s; $f.$r = $r; return $f;
};
gzipReader.prototype.Close = function() { return this.$val.Close(); };
tlsHandshakeTimeoutError.ptr.prototype.Timeout = function() {
var $ptr;
return true;
};
tlsHandshakeTimeoutError.prototype.Timeout = function() { return this.$val.Timeout(); };
tlsHandshakeTimeoutError.ptr.prototype.Temporary = function() {
var $ptr;
return true;
};
tlsHandshakeTimeoutError.prototype.Temporary = function() { return this.$val.Temporary(); };
tlsHandshakeTimeoutError.ptr.prototype.Error = function() {
var $ptr;
return "net/http: TLS handshake timeout";
};
tlsHandshakeTimeoutError.prototype.Error = function() { return this.$val.Error(); };
fakeLocker.ptr.prototype.Lock = function() {
var $ptr;
};
fakeLocker.prototype.Lock = function() { return this.$val.Lock(); };
fakeLocker.ptr.prototype.Unlock = function() {
var $ptr;
};
fakeLocker.prototype.Unlock = function() { return this.$val.Unlock(); };
cloneTLSConfig = function(cfg) {
var $ptr, _r, cfg, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; cfg = $f.cfg; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
if (cfg === ptrType$13.nil) {
$s = -1; return new tls.Config.ptr($ifaceNil, $throwNilPointerError, sliceType$10.nil, false, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, ptrType$30.nil, sliceType$1.nil, "", 0, ptrType$30.nil, false, sliceType$11.nil, false, false, arrayType$2.zero(), $ifaceNil, 0, 0, sliceType$12.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$13.nil, ptrType$13.nil);
}
_r = cfg.Clone(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* */ } return; } if ($f === undefined) { $f = { $blk: cloneTLSConfig }; } $f.$ptr = $ptr; $f._r = _r; $f.cfg = cfg; $f.$s = $s; $f.$r = $r; return $f;
};
connLRU.ptr.prototype.add = function(pc) {
var $ptr, _entry, _key, _tuple, cl, ele, ok, pc;
cl = this;
if (cl.ll === ptrType$12.nil) {
cl.ll = list.New();
cl.m = {};
}
ele = cl.ll.PushFront(pc);
_tuple = (_entry = cl.m[ptrType$98.keyFor(pc)], _entry !== undefined ? [_entry.v, true] : [ptrType$99.nil, false]);
ok = _tuple[1];
if (ok) {
$panic(new $String("persistConn was already in LRU"));
}
_key = pc; (cl.m || $throwRuntimeError("assignment to entry in nil map"))[ptrType$98.keyFor(_key)] = { k: _key, v: ele };
};
connLRU.prototype.add = function(pc) { return this.$val.add(pc); };
connLRU.ptr.prototype.removeOldest = function() {
var $ptr, cl, ele, pc;
cl = this;
ele = cl.ll.Back();
pc = $assertType(ele.Value, ptrType$98);
cl.ll.Remove(ele);
delete cl.m[ptrType$98.keyFor(pc)];
return pc;
};
connLRU.prototype.removeOldest = function() { return this.$val.removeOldest(); };
connLRU.ptr.prototype.remove = function(pc) {
var $ptr, _entry, _tuple, cl, ele, ok, pc;
cl = this;
_tuple = (_entry = cl.m[ptrType$98.keyFor(pc)], _entry !== undefined ? [_entry.v, true] : [ptrType$99.nil, false]);
ele = _tuple[0];
ok = _tuple[1];
if (ok) {
cl.ll.Remove(ele);
delete cl.m[ptrType$98.keyFor(pc)];
}
};
connLRU.prototype.remove = function(pc) { return this.$val.remove(pc); };
connLRU.ptr.prototype.len = function() {
var $ptr, cl;
cl = this;
return $keys(cl.m).length;
};
connLRU.prototype.len = function() { return this.$val.len(); };
validPort = function(p) {
var $ptr, _i, _ref, p, r;
_ref = (new sliceType$2($stringToBytes(p)));
_i = 0;
while (true) {
if (!(_i < _ref.$length)) { break; }
r = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
if (r < 48 || r > 57) {
return false;
}
_i++;
}
return true;
};
ptrType$101.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
ptrType$102.methods = [{prop: "RoundTrip", name: "RoundTrip", pkg: "", typ: $funcType([ptrType$7], [ptrType$16, $error], false)}];
noTransport.methods = [{prop: "RoundTrip", name: "RoundTrip", pkg: "", typ: $funcType([ptrType$7], [ptrType$16, $error], false)}];
ptrType$103.methods = [{prop: "RoundTrip", name: "RoundTrip", pkg: "", typ: $funcType([ptrType$7], [ptrType$16, $error], false)}, {prop: "CancelRequest", name: "CancelRequest", pkg: "", typ: $funcType([ptrType$7], [], false)}];
ptrType$104.methods = [{prop: "send", name: "send", pkg: "net/http", typ: $funcType([ptrType$7, time.Time], [ptrType$16, funcType$3, $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$16, $error], false)}, {prop: "checkRedirect", name: "checkRedirect", pkg: "net/http", typ: $funcType([ptrType$7, sliceType$6], [$error], false)}, {prop: "Do", name: "Do", pkg: "", typ: $funcType([ptrType$7], [ptrType$16, $error], false)}, {prop: "makeHeadersCopier", name: "makeHeadersCopier", pkg: "net/http", typ: $funcType([ptrType$7], [funcType$4], false)}, {prop: "Post", name: "Post", pkg: "", typ: $funcType([$String, $String, io.Reader], [ptrType$16, $error], false)}, {prop: "PostForm", name: "PostForm", pkg: "", typ: $funcType([$String, url.Values], [ptrType$16, $error], false)}, {prop: "Head", name: "Head", pkg: "", typ: $funcType([$String], [ptrType$16, $error], false)}];
ptrType$105.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
ptrType$24.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
ptrType$3.methods = [{prop: "GetClientConn", name: "GetClientConn", pkg: "", typ: $funcType([ptrType$7, $String], [ptrType$27, $error], false)}, {prop: "getClientConn", name: "getClientConn", pkg: "net/http", typ: $funcType([ptrType$7, $String, $Bool], [ptrType$27, $error], false)}, {prop: "getStartDialLocked", name: "getStartDialLocked", pkg: "net/http", typ: $funcType([$String], [ptrType$28], false)}, {prop: "addConnIfNeeded", name: "addConnIfNeeded", pkg: "net/http", typ: $funcType([$String, ptrType$14, ptrType$95], [$Bool, $error], false)}, {prop: "addConn", name: "addConn", pkg: "net/http", typ: $funcType([$String, ptrType$27], [], false)}, {prop: "addConnLocked", name: "addConnLocked", pkg: "net/http", typ: $funcType([$String, ptrType$27], [], false)}, {prop: "MarkDead", name: "MarkDead", pkg: "", typ: $funcType([ptrType$27], [], false)}, {prop: "closeIdleConnections", name: "closeIdleConnections", pkg: "net/http", typ: $funcType([], [], false)}];
ptrType$28.methods = [{prop: "dial", name: "dial", pkg: "net/http", typ: $funcType([$String], [], false)}];
ptrType$29.methods = [{prop: "run", name: "run", pkg: "net/http", typ: $funcType([ptrType$14, $String, ptrType$95], [], false)}];
http2noDialClientConnPool.methods = [{prop: "GetClientConn", name: "GetClientConn", pkg: "", typ: $funcType([ptrType$7, $String], [ptrType$27, $error], false)}];
http2noDialH2RoundTripper.methods = [{prop: "RoundTrip", name: "RoundTrip", pkg: "", typ: $funcType([ptrType$7], [ptrType$16, $error], false)}];
http2ErrCode.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
http2ConnectionError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
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)}];
http2goAwayFlowError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
http2connError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
http2pseudoHeaderError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
http2duplicatePseudoHeaderError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
http2headerFieldNameError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
http2headerFieldValueError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
ptrType$108.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}];
ptrType$31.methods = [{prop: "setConnFlow", name: "setConnFlow", pkg: "net/http", typ: $funcType([ptrType$31], [], 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)}];
http2FrameType.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
http2Flags.methods = [{prop: "Has", name: "Has", pkg: "", typ: $funcType([http2Flags], [$Bool], false)}];
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$34], [], false)}];
ptrType$109.methods = [{prop: "checkValid", name: "checkValid", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "invalidate", name: "invalidate", pkg: "net/http", typ: $funcType([], [], false)}];
ptrType$32.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$2], [], false)}, {prop: "writeUint16", name: "writeUint16", pkg: "net/http", typ: $funcType([$Uint16], [], false)}, {prop: "writeUint32", name: "writeUint32", pkg: "net/http", typ: $funcType([$Uint32], [], 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$2], [$error], false)}, {prop: "WriteDataPadded", name: "WriteDataPadded", pkg: "", typ: $funcType([$Uint32, $Bool, sliceType$2, sliceType$2], [$error], false)}, {prop: "WriteSettings", name: "WriteSettings", pkg: "", typ: $funcType([sliceType$17], [$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$2], [$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$2], [$error], false)}, {prop: "WritePushPromise", name: "WritePushPromise", pkg: "", typ: $funcType([http2PushPromiseParam], [$error], false)}, {prop: "WriteRawFrame", name: "WriteRawFrame", pkg: "", typ: $funcType([http2FrameType, http2Flags, $Uint32, sliceType$2], [$error], false)}, {prop: "maxHeaderStringLen", name: "maxHeaderStringLen", pkg: "net/http", typ: $funcType([], [$Int], false)}, {prop: "readMetaFrame", name: "readMetaFrame", pkg: "net/http", typ: $funcType([ptrType$35], [ptrType$36, $error], false)}];
ptrType$39.methods = [{prop: "StreamEnded", name: "StreamEnded", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Data", name: "Data", pkg: "", typ: $funcType([], [sliceType$2], false)}];
ptrType$38.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$8], [$error], false)}];
ptrType$41.methods = [{prop: "IsAck", name: "IsAck", pkg: "", typ: $funcType([], [$Bool], false)}];
ptrType$42.methods = [{prop: "DebugData", name: "DebugData", pkg: "", typ: $funcType([], [sliceType$2], false)}];
ptrType$110.methods = [{prop: "Payload", name: "Payload", pkg: "", typ: $funcType([], [sliceType$2], false)}];
ptrType$35.methods = [{prop: "HeaderBlockFragment", name: "HeaderBlockFragment", pkg: "", typ: $funcType([], [sliceType$2], 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)}];
http2PriorityParam.methods = [{prop: "IsZero", name: "IsZero", pkg: "", typ: $funcType([], [$Bool], false)}];
ptrType$37.methods = [{prop: "HeaderBlockFragment", name: "HeaderBlockFragment", pkg: "", typ: $funcType([], [sliceType$2], false)}, {prop: "HeadersEnded", name: "HeadersEnded", pkg: "", typ: $funcType([], [$Bool], false)}];
ptrType$62.methods = [{prop: "HeaderBlockFragment", name: "HeaderBlockFragment", pkg: "", typ: $funcType([], [sliceType$2], false)}, {prop: "HeadersEnded", name: "HeadersEnded", pkg: "", typ: $funcType([], [$Bool], false)}];
ptrType$36.methods = [{prop: "PseudoValue", name: "PseudoValue", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "RegularFields", name: "RegularFields", pkg: "", typ: $funcType([], [sliceType$14], false)}, {prop: "PseudoFields", name: "PseudoFields", pkg: "", typ: $funcType([], [sliceType$14], false)}, {prop: "checkPseudos", name: "checkPseudos", pkg: "net/http", typ: $funcType([], [$error], false)}];
http2goroutineLock.methods = [{prop: "check", name: "check", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "checkNotOn", name: "checkNotOn", pkg: "net/http", typ: $funcType([], [], false)}];
http2streamState.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
http2Setting.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Valid", name: "Valid", pkg: "", typ: $funcType([], [$error], false)}];
http2SettingID.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
http2gate.methods = [{prop: "Done", name: "Done", pkg: "", typ: $funcType([], [], false)}, {prop: "Wait", name: "Wait", pkg: "", typ: $funcType([], [], false)}];
http2closeWaiter.methods = [{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [], false)}, {prop: "Wait", name: "Wait", pkg: "", typ: $funcType([], [], false)}];
ptrType$64.methods = [{prop: "Init", name: "Init", pkg: "", typ: $funcType([], [], false)}];
ptrType$52.methods = [{prop: "Available", name: "Available", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Flush", name: "Flush", pkg: "", typ: $funcType([], [$error], false)}];
ptrType$111.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)}];
ptrType$66.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)}];
ptrType$63.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$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$48, $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)}];
ptrType$49.methods = [{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$50], [], false)}];
ptrType$50.methods = [{prop: "baseConfig", name: "baseConfig", pkg: "net/http", typ: $funcType([], [ptrType$44], false)}, {prop: "handler", name: "handler", pkg: "net/http", typ: $funcType([], [Handler], false)}];
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$32], 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$54, ptrType$34], 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: "readPreface", name: "readPreface", pkg: "net/http", typ: $funcType([], [$error], false)}, {prop: "writeDataFromHandler", name: "writeDataFromHandler", pkg: "net/http", typ: $funcType([ptrType$6, sliceType$2, $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: "goAway", name: "goAway", pkg: "net/http", typ: $funcType([http2ErrCode], [], false)}, {prop: "goAwayIn", name: "goAwayIn", pkg: "net/http", typ: $funcType([http2ErrCode, time.Duration], [], 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$41], [$error], false)}, {prop: "processWindowUpdate", name: "processWindowUpdate", pkg: "net/http", typ: $funcType([ptrType$40], [$error], false)}, {prop: "processResetStream", name: "processResetStream", pkg: "net/http", typ: $funcType([ptrType$43], [$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$38], [$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$39], [$error], false)}, {prop: "processGoAway", name: "processGoAway", pkg: "net/http", typ: $funcType([ptrType$42], [$error], false)}, {prop: "processHeaders", name: "processHeaders", pkg: "net/http", typ: $funcType([ptrType$36], [$error], false)}, {prop: "processPriority", name: "processPriority", pkg: "net/http", typ: $funcType([ptrType$61], [$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$36], [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$19], [], false)}, {prop: "writeHeaders", name: "writeHeaders", pkg: "net/http", typ: $funcType([ptrType$6, ptrType$59], [$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([http2startPushRequest], [], false)}];
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: "processTrailerHeaders", name: "processTrailerHeaders", pkg: "net/http", typ: $funcType([ptrType$36], [$error], false)}];
ptrType$8.methods = [{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}];
ptrType$5.methods = [{prop: "Push", name: "Push", pkg: "", typ: $funcType([$String, ptrType$47], [$error], false)}, {prop: "Flush", name: "Flush", pkg: "", typ: $funcType([], [], false)}, {prop: "CloseNotify", name: "CloseNotify", pkg: "", typ: $funcType([], [chanType$11], 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$2], [$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$2, $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)}];
ptrType$65.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$2], [$Int, $error], false)}, {prop: "promoteUndeclaredTrailers", name: "promoteUndeclaredTrailers", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "writeHeader", name: "writeHeader", pkg: "net/http", typ: $funcType([$Int], [], false)}];
http2chunkWriter.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}];
ptrType$14.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$16, $error], false)}, {prop: "RoundTripOpt", name: "RoundTripOpt", pkg: "", typ: $funcType([ptrType$7, http2RoundTripOpt], [ptrType$16, $error], false)}, {prop: "CloseIdleConnections", name: "CloseIdleConnections", pkg: "", typ: $funcType([], [], false)}, {prop: "dialClientConn", name: "dialClientConn", pkg: "net/http", typ: $funcType([$String, $Bool], [ptrType$27, $error], false)}, {prop: "newTLSConfig", name: "newTLSConfig", pkg: "net/http", typ: $funcType([$String], [ptrType$13], 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$13], [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$27, $error], false)}, {prop: "newClientConn", name: "newClientConn", pkg: "net/http", typ: $funcType([net.Conn, $Bool], [ptrType$27, $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$70, io.Reader], [http2bodyWriterState], false)}];
ptrType$27.methods = [{prop: "Ping", name: "Ping", pkg: "", typ: $funcType([context.Context], [$error], false)}, {prop: "setGoAway", name: "setGoAway", pkg: "net/http", typ: $funcType([ptrType$42], [], 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$2], false)}, {prop: "putFrameScratchBuffer", name: "putFrameScratchBuffer", pkg: "net/http", typ: $funcType([sliceType$2], [], false)}, {prop: "responseHeaderTimeout", name: "responseHeaderTimeout", pkg: "net/http", typ: $funcType([], [time.Duration], false)}, {prop: "RoundTrip", name: "RoundTrip", pkg: "", typ: $funcType([ptrType$7], [ptrType$16, $error], false)}, {prop: "writeHeaders", name: "writeHeaders", pkg: "net/http", typ: $funcType([$Uint32, $Bool, sliceType$2], [$error], false)}, {prop: "encodeHeaders", name: "encodeHeaders", pkg: "net/http", typ: $funcType([ptrType$7, $Bool, $String, $Int64], [sliceType$2, $error], false)}, {prop: "encodeTrailers", name: "encodeTrailers", pkg: "net/http", typ: $funcType([ptrType$7], [sliceType$2], false)}, {prop: "writeHeader", name: "writeHeader", pkg: "net/http", typ: $funcType([$String, $String], [], false)}, {prop: "newStream", name: "newStream", pkg: "net/http", typ: $funcType([], [ptrType$70], false)}, {prop: "forgetStreamID", name: "forgetStreamID", pkg: "net/http", typ: $funcType([$Uint32], [], false)}, {prop: "streamByID", name: "streamByID", pkg: "net/http", typ: $funcType([$Uint32, $Bool], [ptrType$70], 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)}];
ptrType$70.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: "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)}];
http2stickyErrWriter.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}];
ptrType$112.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
ptrType$113.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$36], [$error], false)}, {prop: "handleResponse", name: "handleResponse", pkg: "net/http", typ: $funcType([ptrType$70, ptrType$36], [ptrType$16, $error], false)}, {prop: "processTrailers", name: "processTrailers", pkg: "net/http", typ: $funcType([ptrType$70, ptrType$36], [$error], false)}, {prop: "processData", name: "processData", pkg: "net/http", typ: $funcType([ptrType$39], [$error], false)}, {prop: "endStream", name: "endStream", pkg: "net/http", typ: $funcType([ptrType$70], [], false)}, {prop: "endStreamError", name: "endStreamError", pkg: "net/http", typ: $funcType([ptrType$70, $error], [], false)}, {prop: "processGoAway", name: "processGoAway", pkg: "net/http", typ: $funcType([ptrType$42], [$error], false)}, {prop: "processSettings", name: "processSettings", pkg: "net/http", typ: $funcType([ptrType$38], [$error], false)}, {prop: "processWindowUpdate", name: "processWindowUpdate", pkg: "net/http", typ: $funcType([ptrType$40], [$error], false)}, {prop: "processResetStream", name: "processResetStream", pkg: "net/http", typ: $funcType([ptrType$43], [$error], false)}, {prop: "processPing", name: "processPing", pkg: "net/http", typ: $funcType([ptrType$41], [$error], false)}, {prop: "processPushPromise", name: "processPushPromise", pkg: "net/http", typ: $funcType([ptrType$62], [$error], false)}];
http2GoAwayError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
http2transportResponseBody.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
http2erringRoundTripper.methods = [{prop: "RoundTrip", name: "RoundTrip", pkg: "", typ: $funcType([ptrType$7], [ptrType$16, $error], false)}];
ptrType$114.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
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)}];
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)}];
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)}];
ptrType$115.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)}];
ptrType$58.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)}];
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)}];
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)}];
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)}];
ptrType$59.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$2, $Bool, $Bool], [$error], false)}];
ptrType$60.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$2, $Bool, $Bool], [$error], false)}];
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)}];
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)}];
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)}];
ptrType$116.methods = [{prop: "replyToWriter", name: "replyToWriter", pkg: "net/http", typ: $funcType([$error], [], false)}];
ptrType$73.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)}];
ptrType$76.methods = [{prop: "put", name: "put", pkg: "net/http", typ: $funcType([ptrType$73], [], false)}, {prop: "get", name: "get", pkg: "net/http", typ: $funcType([], [ptrType$73], false)}];
ptrType$118.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)}];
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$13], [sliceType$3, ptrType$78], false)}, {prop: "WriteSubset", name: "WriteSubset", pkg: "", typ: $funcType([io.Writer, mapType$13], [$error], false)}];
stringWriter.methods = [{prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}];
ptrType$78.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)}];
ptrType$119.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
noBody.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([io.Writer], [$Int64, $error], false)}];
ptrType$120.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
ptrType$121.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
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: "protoAtLeastOutgoing", name: "protoAtLeastOutgoing", pkg: "net/http", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "UserAgent", name: "UserAgent", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Cookies", name: "Cookies", pkg: "", typ: $funcType([], [sliceType$7], false)}, {prop: "Cookie", name: "Cookie", pkg: "", typ: $funcType([$String], [ptrType$24, $error], false)}, {prop: "AddCookie", name: "AddCookie", pkg: "", typ: $funcType([ptrType$24], [], false)}, {prop: "Referer", name: "Referer", pkg: "", typ: $funcType([], [$String], false)}, {prop: "MultipartReader", name: "MultipartReader", pkg: "", typ: $funcType([], [ptrType$79, $error], false)}, {prop: "multipartReader", name: "multipartReader", pkg: "net/http", typ: $funcType([], [ptrType$79, $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$3], [$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$84, $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)}];
ptrType$83.methods = [{prop: "tooLarge", name: "tooLarge", pkg: "net/http", typ: $funcType([], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
ptrType$16.methods = [{prop: "Cookies", name: "Cookies", pkg: "", typ: $funcType([], [sliceType$7], false)}, {prop: "Location", name: "Location", pkg: "", typ: $funcType([], [ptrType$19, $error], false)}, {prop: "ProtoAtLeast", name: "ProtoAtLeast", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([io.Writer], [$error], false)}];
ptrType$93.methods = [{prop: "hijacked", name: "hijacked", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "hijackLocked", name: "hijackLocked", pkg: "net/http", typ: $funcType([], [net.Conn, ptrType$85, $error], false)}, {prop: "readRequest", name: "readRequest", pkg: "net/http", typ: $funcType([context.Context], [ptrType$90, $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)}];
ptrType$122.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$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$2], [], false)}];
ptrType$90.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$2], [$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$2, $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$85, $error], false)}, {prop: "CloseNotify", name: "CloseNotify", pkg: "", typ: $funcType([], [chanType$11], false)}];
ptrType$22.methods = [{prop: "isSet", name: "isSet", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "setTrue", name: "setTrue", pkg: "net/http", typ: $funcType([], [], false)}];
ptrType$89.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$2], [$Int, $error], false)}];
ptrType$94.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
extraHeader.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([ptrType$10], [], false)}];
badRequestError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
HandlerFunc.methods = [{prop: "ServeHTTP", name: "ServeHTTP", pkg: "", typ: $funcType([ResponseWriter, ptrType$7], [], false)}];
ptrType$123.methods = [{prop: "ServeHTTP", name: "ServeHTTP", pkg: "", typ: $funcType([ResponseWriter, ptrType$7], [], false)}];
ptrType$124.methods = [{prop: "match", name: "match", pkg: "net/http", typ: $funcType([$String], [Handler, $String], 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$19], [], false)}];
ptrType$44.methods = [{prop: "newConn", name: "newConn", pkg: "net/http", typ: $funcType([net.Conn], [ptrType$93], 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: "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: "trackListener", name: "trackListener", pkg: "net/http", typ: $funcType([net.Listener, $Bool], [], false)}, {prop: "trackConn", name: "trackConn", pkg: "net/http", typ: $funcType([ptrType$93, $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_ListenAndServeTLS", name: "setupHTTP2_ListenAndServeTLS", 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)}];
ConnState.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
serverHandler.methods = [{prop: "ServeHTTP", name: "ServeHTTP", pkg: "", typ: $funcType([ResponseWriter, ptrType$7], [], false)}];
tcpKeepAliveListener.methods = [{prop: "Accept", name: "Accept", pkg: "", typ: $funcType([], [net.Conn, $error], false)}];
globalOptionsHandler.methods = [{prop: "ServeHTTP", name: "ServeHTTP", pkg: "", typ: $funcType([ResponseWriter, ptrType$7], [], false)}];
initNPNRequest.methods = [{prop: "ServeHTTP", name: "ServeHTTP", pkg: "", typ: $funcType([ResponseWriter, ptrType$7], [], false)}];
ptrType$127.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
checkConnErrorWriter.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}];
ptrType$128.methods = [{prop: "match", name: "match", pkg: "net/http", typ: $funcType([sliceType$2, $Int], [$String], false)}];
ptrType$129.methods = [{prop: "match", name: "match", pkg: "net/http", typ: $funcType([sliceType$2, $Int], [$String], false)}];
htmlSig.methods = [{prop: "match", name: "match", pkg: "net/http", typ: $funcType([sliceType$2, $Int], [$String], false)}];
mp4Sig.methods = [{prop: "match", name: "match", pkg: "net/http", typ: $funcType([sliceType$2, $Int], [$String], false)}];
textSig.methods = [{prop: "match", name: "match", pkg: "net/http", typ: $funcType([sliceType$2, $Int], [$String], false)}];
errorReader.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}];
ptrType$130.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}];
ptrType$97.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)}];
ptrType$131.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)}];
ptrType$92.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "readLocked", name: "readLocked", pkg: "net/http", typ: $funcType([sliceType$2], [$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)}];
bodyLocked.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}];
finishAsyncByteRead.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}];
ptrType$21.methods = [{prop: "onceSetNextProtoDefaults", name: "onceSetNextProtoDefaults", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "RoundTrip", name: "RoundTrip", pkg: "", typ: $funcType([ptrType$7], [ptrType$16, $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$132], [connectMethod, $error], false)}, {prop: "putOrCloseIdleConn", name: "putOrCloseIdleConn", pkg: "net/http", typ: $funcType([ptrType$98], [], false)}, {prop: "maxIdleConnsPerHost", name: "maxIdleConnsPerHost", pkg: "net/http", typ: $funcType([], [$Int], false)}, {prop: "tryPutIdleConn", name: "tryPutIdleConn", pkg: "net/http", typ: $funcType([ptrType$98], [$error], false)}, {prop: "getIdleConnCh", name: "getIdleConnCh", pkg: "net/http", typ: $funcType([connectMethod], [chanType$15], false)}, {prop: "getIdleConn", name: "getIdleConn", pkg: "net/http", typ: $funcType([connectMethod], [ptrType$98, time.Time], false)}, {prop: "removeIdleConn", name: "removeIdleConn", pkg: "net/http", typ: $funcType([ptrType$98], [], false)}, {prop: "removeIdleConnLocked", name: "removeIdleConnLocked", pkg: "net/http", typ: $funcType([ptrType$98], [], false)}, {prop: "setReqCanceler", name: "setReqCanceler", pkg: "net/http", typ: $funcType([ptrType$7, funcType$11], [], false)}, {prop: "replaceReqCanceler", name: "replaceReqCanceler", pkg: "net/http", typ: $funcType([ptrType$7, funcType$11], [$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$132, connectMethod], [ptrType$98, $error], false)}, {prop: "dialConn", name: "dialConn", pkg: "net/http", typ: $funcType([context.Context, connectMethod], [ptrType$98, $error], false)}];
ptrType$132.methods = [{prop: "extraHeaders", name: "extraHeaders", pkg: "net/http", typ: $funcType([], [Header], false)}];
transportReadFromServerError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
persistConnWriter.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}];
ptrType$134.methods = [{prop: "proxyAuth", name: "proxyAuth", pkg: "net/http", typ: $funcType([], [$String], false)}, {prop: "key", name: "key", pkg: "net/http", typ: $funcType([], [connectMethodKey], false)}, {prop: "addr", name: "addr", pkg: "net/http", typ: $funcType([], [$String], false)}, {prop: "tlsHost", name: "tlsHost", pkg: "net/http", typ: $funcType([], [$String], false)}];
connectMethodKey.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
ptrType$98.methods = [{prop: "shouldRetryRequest", name: "shouldRetryRequest", pkg: "net/http", typ: $funcType([ptrType$7, $error], [$Bool], false)}, {prop: "maxHeaderResponseSize", name: "maxHeaderResponseSize", pkg: "net/http", typ: $funcType([], [$Int64], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$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: "mapRoundTripErrorFromReadLoop", name: "mapRoundTripErrorFromReadLoop", pkg: "net/http", typ: $funcType([ptrType$7, $Int64, $error], [$error], false)}, {prop: "mapRoundTripErrorAfterClosed", name: "mapRoundTripErrorAfterClosed", pkg: "net/http", typ: $funcType([ptrType$7, $Int64], [$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$45], [ptrType$16, $error], false)}, {prop: "waitForContinue", name: "waitForContinue", pkg: "net/http", typ: $funcType([chanType$3], [funcType$3], 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$132], [ptrType$16, $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)}];
ptrType$135.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)}];
ptrType$100.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "condfn", name: "condfn", pkg: "net/http", typ: $funcType([$error], [$error], false)}];
ptrType$136.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
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)}];
fakeLocker.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}];
ptrType$137.methods = [{prop: "add", name: "add", pkg: "net/http", typ: $funcType([ptrType$98], [], false)}, {prop: "removeOldest", name: "removeOldest", pkg: "net/http", typ: $funcType([], [ptrType$98], false)}, {prop: "remove", name: "remove", pkg: "net/http", typ: $funcType([ptrType$98], [], false)}, {prop: "len", name: "len", pkg: "net/http", typ: $funcType([], [$Int], false)}];
streamReader.init("net/http", [{prop: "pending", name: "pending", exported: false, typ: sliceType$2, tag: ""}, {prop: "stream", name: "stream", exported: false, typ: ptrType$15, tag: ""}]);
fetchTransport.init("", []);
noTransport.init("", []);
XHRTransport.init("net/http", [{prop: "inflight", name: "inflight", exported: false, typ: mapType$2, tag: ""}]);
Client.init("", [{prop: "Transport", name: "Transport", exported: true, typ: RoundTripper, tag: ""}, {prop: "CheckRedirect", name: "CheckRedirect", exported: true, typ: funcType$5, tag: ""}, {prop: "Jar", name: "Jar", exported: true, typ: CookieJar, tag: ""}, {prop: "Timeout", name: "Timeout", exported: true, typ: time.Duration, tag: ""}]);
RoundTripper.init([{prop: "RoundTrip", name: "RoundTrip", pkg: "", typ: $funcType([ptrType$7], [ptrType$16, $error], false)}]);
cancelTimerBody.init("net/http", [{prop: "stop", name: "stop", exported: false, typ: funcType$2, tag: ""}, {prop: "rc", name: "rc", exported: false, typ: io.ReadCloser, tag: ""}, {prop: "reqDidTimeout", name: "reqDidTimeout", exported: false, typ: funcType$3, tag: ""}]);
Cookie.init("", [{prop: "Name", name: "Name", exported: true, typ: $String, tag: ""}, {prop: "Value", name: "Value", exported: true, typ: $String, tag: ""}, {prop: "Path", name: "Path", exported: true, typ: $String, tag: ""}, {prop: "Domain", name: "Domain", exported: true, typ: $String, tag: ""}, {prop: "Expires", name: "Expires", exported: true, typ: time.Time, tag: ""}, {prop: "RawExpires", name: "RawExpires", exported: true, typ: $String, tag: ""}, {prop: "MaxAge", name: "MaxAge", exported: true, typ: $Int, tag: ""}, {prop: "Secure", name: "Secure", exported: true, typ: $Bool, tag: ""}, {prop: "HttpOnly", name: "HttpOnly", exported: true, typ: $Bool, tag: ""}, {prop: "Raw", name: "Raw", exported: true, typ: $String, tag: ""}, {prop: "Unparsed", name: "Unparsed", exported: true, typ: sliceType$1, tag: ""}]);
http2ClientConnPool.init([{prop: "GetClientConn", name: "GetClientConn", pkg: "", typ: $funcType([ptrType$7, $String], [ptrType$27, $error], false)}, {prop: "MarkDead", name: "MarkDead", pkg: "", typ: $funcType([ptrType$27], [], false)}]);
http2clientConnPoolIdleCloser.init([{prop: "GetClientConn", name: "GetClientConn", pkg: "", typ: $funcType([ptrType$7, $String], [ptrType$27, $error], false)}, {prop: "MarkDead", name: "MarkDead", pkg: "", typ: $funcType([ptrType$27], [], false)}, {prop: "closeIdleConnections", name: "closeIdleConnections", pkg: "net/http", typ: $funcType([], [], false)}]);
http2clientConnPool.init("net/http", [{prop: "t", name: "t", exported: false, typ: ptrType$14, tag: ""}, {prop: "mu", name: "mu", exported: false, typ: sync.Mutex, tag: ""}, {prop: "conns", name: "conns", exported: false, typ: mapType$3, tag: ""}, {prop: "dialing", name: "dialing", exported: false, typ: mapType$4, tag: ""}, {prop: "keys", name: "keys", exported: false, typ: mapType$5, tag: ""}, {prop: "addConnCalls", name: "addConnCalls", exported: false, typ: mapType$6, tag: ""}]);
http2dialCall.init("net/http", [{prop: "p", name: "p", exported: false, typ: ptrType$3, tag: ""}, {prop: "done", name: "done", exported: false, typ: chanType$2, tag: ""}, {prop: "res", name: "res", exported: false, typ: ptrType$27, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}]);
http2addConnCall.init("net/http", [{prop: "p", name: "p", exported: false, typ: ptrType$3, tag: ""}, {prop: "done", name: "done", exported: false, typ: chanType$2, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}]);
http2noDialClientConnPool.init("net/http", [{prop: "http2clientConnPool", name: "", exported: false, typ: ptrType$3, tag: ""}]);
http2noDialH2RoundTripper.init("net/http", [{prop: "t", name: "t", exported: false, typ: ptrType$14, tag: ""}]);
http2StreamError.init("", [{prop: "StreamID", name: "StreamID", exported: true, typ: $Uint32, tag: ""}, {prop: "Code", name: "Code", exported: true, typ: http2ErrCode, tag: ""}, {prop: "Cause", name: "Cause", exported: true, typ: $error, tag: ""}]);
http2goAwayFlowError.init("", []);
http2connError.init("", [{prop: "Code", name: "Code", exported: true, typ: http2ErrCode, tag: ""}, {prop: "Reason", name: "Reason", exported: true, typ: $String, tag: ""}]);
http2fixedBuffer.init("net/http", [{prop: "buf", name: "buf", exported: false, typ: sliceType$2, tag: ""}, {prop: "r", name: "r", exported: false, typ: $Int, tag: ""}, {prop: "w", name: "w", exported: false, typ: $Int, tag: ""}]);
http2flow.init("net/http", [{prop: "n", name: "n", exported: false, typ: $Int32, tag: ""}, {prop: "conn", name: "conn", exported: false, typ: ptrType$31, tag: ""}]);
http2FrameHeader.init("net/http", [{prop: "valid", name: "valid", exported: false, typ: $Bool, tag: ""}, {prop: "Type", name: "Type", exported: true, typ: http2FrameType, tag: ""}, {prop: "Flags", name: "Flags", exported: true, typ: http2Flags, tag: ""}, {prop: "Length", name: "Length", exported: true, typ: $Uint32, tag: ""}, {prop: "StreamID", name: "StreamID", exported: true, typ: $Uint32, tag: ""}]);
http2Frame.init([{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [http2FrameHeader], false)}, {prop: "invalidate", name: "invalidate", pkg: "net/http", typ: $funcType([], [], false)}]);
http2Framer.init("net/http", [{prop: "r", name: "r", exported: false, typ: io.Reader, tag: ""}, {prop: "lastFrame", name: "lastFrame", exported: false, typ: http2Frame, tag: ""}, {prop: "errDetail", name: "errDetail", exported: false, typ: $error, tag: ""}, {prop: "lastHeaderStream", name: "lastHeaderStream", exported: false, typ: $Uint32, tag: ""}, {prop: "maxReadSize", name: "maxReadSize", exported: false, typ: $Uint32, tag: ""}, {prop: "headerBuf", name: "headerBuf", exported: false, typ: arrayType$3, tag: ""}, {prop: "getReadBuf", name: "getReadBuf", exported: false, typ: funcType$6, tag: ""}, {prop: "readBuf", name: "readBuf", exported: false, typ: sliceType$2, tag: ""}, {prop: "maxWriteSize", name: "maxWriteSize", exported: false, typ: $Uint32, tag: ""}, {prop: "w", name: "w", exported: false, typ: io.Writer, tag: ""}, {prop: "wbuf", name: "wbuf", exported: false, typ: sliceType$2, tag: ""}, {prop: "AllowIllegalWrites", name: "AllowIllegalWrites", exported: true, typ: $Bool, tag: ""}, {prop: "AllowIllegalReads", name: "AllowIllegalReads", exported: true, typ: $Bool, tag: ""}, {prop: "ReadMetaHeaders", name: "ReadMetaHeaders", exported: true, typ: ptrType$33, tag: ""}, {prop: "MaxHeaderListSize", name: "MaxHeaderListSize", exported: true, typ: $Uint32, tag: ""}, {prop: "logReads", name: "logReads", exported: false, typ: $Bool, tag: ""}, {prop: "logWrites", name: "logWrites", exported: false, typ: $Bool, tag: ""}, {prop: "debugFramer", name: "debugFramer", exported: false, typ: ptrType$32, tag: ""}, {prop: "debugFramerBuf", name: "debugFramerBuf", exported: false, typ: ptrType$34, tag: ""}, {prop: "debugReadLoggerf", name: "debugReadLoggerf", exported: false, typ: funcType$7, tag: ""}, {prop: "debugWriteLoggerf", name: "debugWriteLoggerf", exported: false, typ: funcType$7, tag: ""}]);
http2DataFrame.init("net/http", [{prop: "http2FrameHeader", name: "", exported: false, typ: http2FrameHeader, tag: ""}, {prop: "data", name: "data", exported: false, typ: sliceType$2, tag: ""}]);
http2SettingsFrame.init("net/http", [{prop: "http2FrameHeader", name: "", exported: false, typ: http2FrameHeader, tag: ""}, {prop: "p", name: "p", exported: false, typ: sliceType$2, tag: ""}]);
http2PingFrame.init("net/http", [{prop: "http2FrameHeader", name: "", exported: false, typ: http2FrameHeader, tag: ""}, {prop: "Data", name: "Data", exported: true, typ: arrayType$4, tag: ""}]);
http2GoAwayFrame.init("net/http", [{prop: "http2FrameHeader", name: "", exported: false, typ: http2FrameHeader, tag: ""}, {prop: "LastStreamID", name: "LastStreamID", exported: true, typ: $Uint32, tag: ""}, {prop: "ErrCode", name: "ErrCode", exported: true, typ: http2ErrCode, tag: ""}, {prop: "debugData", name: "debugData", exported: false, typ: sliceType$2, tag: ""}]);
http2UnknownFrame.init("net/http", [{prop: "http2FrameHeader", name: "", exported: false, typ: http2FrameHeader, tag: ""}, {prop: "p", name: "p", exported: false, typ: sliceType$2, tag: ""}]);
http2WindowUpdateFrame.init("net/http", [{prop: "http2FrameHeader", name: "", exported: false, typ: http2FrameHeader, tag: ""}, {prop: "Increment", name: "Increment", exported: true, typ: $Uint32, tag: ""}]);
http2HeadersFrame.init("net/http", [{prop: "http2FrameHeader", name: "", exported: false, typ: http2FrameHeader, tag: ""}, {prop: "Priority", name: "Priority", exported: true, typ: http2PriorityParam, tag: ""}, {prop: "headerFragBuf", name: "headerFragBuf", exported: false, typ: sliceType$2, tag: ""}]);
http2HeadersFrameParam.init("", [{prop: "StreamID", name: "StreamID", exported: true, typ: $Uint32, tag: ""}, {prop: "BlockFragment", name: "BlockFragment", exported: true, typ: sliceType$2, tag: ""}, {prop: "EndStream", name: "EndStream", exported: true, typ: $Bool, tag: ""}, {prop: "EndHeaders", name: "EndHeaders", exported: true, typ: $Bool, tag: ""}, {prop: "PadLength", name: "PadLength", exported: true, typ: $Uint8, tag: ""}, {prop: "Priority", name: "Priority", exported: true, typ: http2PriorityParam, tag: ""}]);
http2PriorityFrame.init("net/http", [{prop: "http2FrameHeader", name: "", exported: false, typ: http2FrameHeader, tag: ""}, {prop: "http2PriorityParam", name: "", exported: false, typ: http2PriorityParam, tag: ""}]);
http2PriorityParam.init("", [{prop: "StreamDep", name: "StreamDep", exported: true, typ: $Uint32, tag: ""}, {prop: "Exclusive", name: "Exclusive", exported: true, typ: $Bool, tag: ""}, {prop: "Weight", name: "Weight", exported: true, typ: $Uint8, tag: ""}]);
http2RSTStreamFrame.init("net/http", [{prop: "http2FrameHeader", name: "", exported: false, typ: http2FrameHeader, tag: ""}, {prop: "ErrCode", name: "ErrCode", exported: true, typ: http2ErrCode, tag: ""}]);
http2ContinuationFrame.init("net/http", [{prop: "http2FrameHeader", name: "", exported: false, typ: http2FrameHeader, tag: ""}, {prop: "headerFragBuf", name: "headerFragBuf", exported: false, typ: sliceType$2, tag: ""}]);
http2PushPromiseFrame.init("net/http", [{prop: "http2FrameHeader", name: "", exported: false, typ: http2FrameHeader, tag: ""}, {prop: "PromiseID", name: "PromiseID", exported: true, typ: $Uint32, tag: ""}, {prop: "headerFragBuf", name: "headerFragBuf", exported: false, typ: sliceType$2, tag: ""}]);
http2PushPromiseParam.init("", [{prop: "StreamID", name: "StreamID", exported: true, typ: $Uint32, tag: ""}, {prop: "PromiseID", name: "PromiseID", exported: true, typ: $Uint32, tag: ""}, {prop: "BlockFragment", name: "BlockFragment", exported: true, typ: sliceType$2, tag: ""}, {prop: "EndHeaders", name: "EndHeaders", exported: true, typ: $Bool, tag: ""}, {prop: "PadLength", name: "PadLength", exported: true, typ: $Uint8, tag: ""}]);
http2MetaHeadersFrame.init("net/http", [{prop: "http2HeadersFrame", name: "", exported: false, typ: ptrType$35, tag: ""}, {prop: "Fields", name: "Fields", exported: true, typ: sliceType$14, tag: ""}, {prop: "Truncated", name: "Truncated", exported: true, typ: $Bool, tag: ""}]);
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)}]);
http2clientTrace.init("", [{prop: "GetConn", name: "GetConn", exported: true, typ: funcType$9, tag: ""}, {prop: "GotConn", name: "GotConn", exported: true, typ: funcType$10, tag: ""}, {prop: "PutIdleConn", name: "PutIdleConn", exported: true, typ: funcType$11, tag: ""}, {prop: "GotFirstResponseByte", name: "GotFirstResponseByte", exported: true, typ: funcType$2, tag: ""}, {prop: "Got100Continue", name: "Got100Continue", exported: true, typ: funcType$2, tag: ""}, {prop: "DNSStart", name: "DNSStart", exported: true, typ: funcType$12, tag: ""}, {prop: "DNSDone", name: "DNSDone", exported: true, typ: funcType$13, tag: ""}, {prop: "ConnectStart", name: "ConnectStart", exported: true, typ: funcType$14, tag: ""}, {prop: "ConnectDone", name: "ConnectDone", exported: true, typ: funcType$15, tag: ""}, {prop: "TLSHandshakeStart", name: "TLSHandshakeStart", exported: true, typ: funcType$2, tag: ""}, {prop: "TLSHandshakeDone", name: "TLSHandshakeDone", exported: true, typ: funcType$16, tag: ""}, {prop: "WroteHeaders", name: "WroteHeaders", exported: true, typ: funcType$2, tag: ""}, {prop: "Wait100Continue", name: "Wait100Continue", exported: true, typ: funcType$2, tag: ""}, {prop: "WroteRequest", name: "WroteRequest", exported: true, typ: funcType$17, tag: ""}]);
http2Setting.init("", [{prop: "ID", name: "ID", exported: true, typ: http2SettingID, tag: ""}, {prop: "Val", name: "Val", exported: true, typ: $Uint32, tag: ""}]);
http2gate.init(structType, false, false);
http2closeWaiter.init(structType, false, false);
http2bufferedWriter.init("net/http", [{prop: "w", name: "w", exported: false, typ: io.Writer, tag: ""}, {prop: "bw", name: "bw", exported: false, typ: ptrType$10, tag: ""}]);
http2httpError.init("net/http", [{prop: "msg", name: "msg", exported: false, typ: $String, tag: ""}, {prop: "timeout", name: "timeout", exported: false, typ: $Bool, tag: ""}]);
http2connectionStater.init([{prop: "ConnectionState", name: "ConnectionState", pkg: "", typ: $funcType([], [tls.ConnectionState], false)}]);
http2sorter.init("net/http", [{prop: "v", name: "v", exported: false, typ: sliceType$1, tag: ""}]);
http2pipe.init("net/http", [{prop: "mu", name: "mu", exported: false, typ: sync.Mutex, tag: ""}, {prop: "c", name: "c", exported: false, typ: sync.Cond, tag: ""}, {prop: "b", name: "b", exported: false, typ: http2pipeBuffer, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}, {prop: "breakErr", name: "breakErr", exported: false, typ: $error, tag: ""}, {prop: "donec", name: "donec", exported: false, typ: chanType$2, tag: ""}, {prop: "readFn", name: "readFn", exported: false, typ: funcType$2, tag: ""}]);
http2pipeBuffer.init([{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}]);
http2Server.init("", [{prop: "MaxHandlers", name: "MaxHandlers", exported: true, typ: $Int, tag: ""}, {prop: "MaxConcurrentStreams", name: "MaxConcurrentStreams", exported: true, typ: $Uint32, tag: ""}, {prop: "MaxReadFrameSize", name: "MaxReadFrameSize", exported: true, typ: $Uint32, tag: ""}, {prop: "PermitProhibitedCipherSuites", name: "PermitProhibitedCipherSuites", exported: true, typ: $Bool, tag: ""}, {prop: "IdleTimeout", name: "IdleTimeout", exported: true, typ: time.Duration, tag: ""}, {prop: "NewWriteScheduler", name: "NewWriteScheduler", exported: true, typ: funcType$18, tag: ""}]);
http2ServeConnOpts.init("", [{prop: "BaseConfig", name: "BaseConfig", exported: true, typ: ptrType$44, tag: ""}, {prop: "Handler", name: "Handler", exported: true, typ: Handler, tag: ""}]);
http2serverConn.init("net/http", [{prop: "srv", name: "srv", exported: false, typ: ptrType$49, tag: ""}, {prop: "hs", name: "hs", exported: false, typ: ptrType$44, tag: ""}, {prop: "conn", name: "conn", exported: false, typ: net.Conn, tag: ""}, {prop: "bw", name: "bw", exported: false, typ: ptrType$52, tag: ""}, {prop: "handler", name: "handler", exported: false, typ: Handler, tag: ""}, {prop: "baseCtx", name: "baseCtx", exported: false, typ: http2contextContext, tag: ""}, {prop: "framer", name: "framer", exported: false, typ: ptrType$32, tag: ""}, {prop: "doneServing", name: "doneServing", exported: false, typ: chanType$2, tag: ""}, {prop: "readFrameCh", name: "readFrameCh", exported: false, typ: chanType$4, tag: ""}, {prop: "wantWriteFrameCh", name: "wantWriteFrameCh", exported: false, typ: chanType$5, tag: ""}, {prop: "wantStartPushCh", name: "wantStartPushCh", exported: false, typ: chanType$6, tag: ""}, {prop: "wroteFrameCh", name: "wroteFrameCh", exported: false, typ: chanType$7, tag: ""}, {prop: "bodyReadCh", name: "bodyReadCh", exported: false, typ: chanType$8, tag: ""}, {prop: "testHookCh", name: "testHookCh", exported: false, typ: chanType$9, tag: ""}, {prop: "flow", name: "flow", exported: false, typ: http2flow, tag: ""}, {prop: "inflow", name: "inflow", exported: false, typ: http2flow, tag: ""}, {prop: "tlsState", name: "tlsState", exported: false, typ: ptrType$17, tag: ""}, {prop: "remoteAddrStr", name: "remoteAddrStr", exported: false, typ: $String, tag: ""}, {prop: "writeSched", name: "writeSched", exported: false, typ: http2WriteScheduler, tag: ""}, {prop: "serveG", name: "serveG", exported: false, typ: http2goroutineLock, tag: ""}, {prop: "pushEnabled", name: "pushEnabled", exported: false, typ: $Bool, tag: ""}, {prop: "sawFirstSettings", name: "sawFirstSettings", exported: false, typ: $Bool, tag: ""}, {prop: "needToSendSettingsAck", name: "needToSendSettingsAck", exported: false, typ: $Bool, tag: ""}, {prop: "unackedSettings", name: "unackedSettings", exported: false, typ: $Int, tag: ""}, {prop: "clientMaxStreams", name: "clientMaxStreams", exported: false, typ: $Uint32, tag: ""}, {prop: "advMaxStreams", name: "advMaxStreams", exported: false, typ: $Uint32, tag: ""}, {prop: "curClientStreams", name: "curClientStreams", exported: false, typ: $Uint32, tag: ""}, {prop: "curPushedStreams", name: "curPushedStreams", exported: false, typ: $Uint32, tag: ""}, {prop: "maxClientStreamID", name: "maxClientStreamID", exported: false, typ: $Uint32, tag: ""}, {prop: "maxPushPromiseID", name: "maxPushPromiseID", exported: false, typ: $Uint32, tag: ""}, {prop: "streams", name: "streams", exported: false, typ: mapType$7, tag: ""}, {prop: "initialWindowSize", name: "initialWindowSize", exported: false, typ: $Int32, tag: ""}, {prop: "maxFrameSize", name: "maxFrameSize", exported: false, typ: $Int32, tag: ""}, {prop: "headerTableSize", name: "headerTableSize", exported: false, typ: $Uint32, tag: ""}, {prop: "peerMaxHeaderListSize", name: "peerMaxHeaderListSize", exported: false, typ: $Uint32, tag: ""}, {prop: "canonHeader", name: "canonHeader", exported: false, typ: mapType$8, tag: ""}, {prop: "writingFrame", name: "writingFrame", exported: false, typ: $Bool, tag: ""}, {prop: "writingFrameAsync", name: "writingFrameAsync", exported: false, typ: $Bool, tag: ""}, {prop: "needsFrameFlush", name: "needsFrameFlush", exported: false, typ: $Bool, tag: ""}, {prop: "inGoAway", name: "inGoAway", exported: false, typ: $Bool, tag: ""}, {prop: "inFrameScheduleLoop", name: "inFrameScheduleLoop", exported: false, typ: $Bool, tag: ""}, {prop: "needToSendGoAway", name: "needToSendGoAway", exported: false, typ: $Bool, tag: ""}, {prop: "goAwayCode", name: "goAwayCode", exported: false, typ: http2ErrCode, tag: ""}, {prop: "shutdownTimerCh", name: "shutdownTimerCh", exported: false, typ: chanType$10, tag: ""}, {prop: "shutdownTimer", name: "shutdownTimer", exported: false, typ: ptrType$53, tag: ""}, {prop: "idleTimer", name: "idleTimer", exported: false, typ: ptrType$53, tag: ""}, {prop: "idleTimerCh", name: "idleTimerCh", exported: false, typ: chanType$10, tag: ""}, {prop: "headerWriteBuf", name: "headerWriteBuf", exported: false, typ: bytes.Buffer, tag: ""}, {prop: "hpackEncoder", name: "hpackEncoder", exported: false, typ: ptrType$54, tag: ""}]);
http2stream.init("net/http", [{prop: "sc", name: "sc", exported: false, typ: ptrType$9, tag: ""}, {prop: "id", name: "id", exported: false, typ: $Uint32, tag: ""}, {prop: "body", name: "body", exported: false, typ: ptrType$63, tag: ""}, {prop: "cw", name: "cw", exported: false, typ: http2closeWaiter, tag: ""}, {prop: "ctx", name: "ctx", exported: false, typ: http2contextContext, tag: ""}, {prop: "cancelCtx", name: "cancelCtx", exported: false, typ: funcType$2, tag: ""}, {prop: "bodyBytes", name: "bodyBytes", exported: false, typ: $Int64, tag: ""}, {prop: "declBodyBytes", name: "declBodyBytes", exported: false, typ: $Int64, tag: ""}, {prop: "flow", name: "flow", exported: false, typ: http2flow, tag: ""}, {prop: "inflow", name: "inflow", exported: false, typ: http2flow, tag: ""}, {prop: "parent", name: "parent", exported: false, typ: ptrType$6, tag: ""}, {prop: "numTrailerValues", name: "numTrailerValues", exported: false, typ: $Int64, tag: ""}, {prop: "weight", name: "weight", exported: false, typ: $Uint8, tag: ""}, {prop: "state", name: "state", exported: false, typ: http2streamState, tag: ""}, {prop: "resetQueued", name: "resetQueued", exported: false, typ: $Bool, tag: ""}, {prop: "gotTrailerHeader", name: "gotTrailerHeader", exported: false, typ: $Bool, tag: ""}, {prop: "wroteHeaders", name: "wroteHeaders", exported: false, typ: $Bool, tag: ""}, {prop: "reqBuf", name: "reqBuf", exported: false, typ: sliceType$2, tag: ""}, {prop: "trailer", name: "trailer", exported: false, typ: Header, tag: ""}, {prop: "reqTrailer", name: "reqTrailer", exported: false, typ: Header, tag: ""}]);
http2readFrameResult.init("net/http", [{prop: "f", name: "f", exported: false, typ: http2Frame, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}, {prop: "readMore", name: "readMore", exported: false, typ: funcType$2, tag: ""}]);
http2frameWriteResult.init("net/http", [{prop: "wr", name: "wr", exported: false, typ: http2FrameWriteRequest, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}]);
http2requestParam.init("net/http", [{prop: "method", name: "method", exported: false, typ: $String, tag: ""}, {prop: "scheme", name: "scheme", exported: false, typ: $String, tag: ""}, {prop: "authority", name: "authority", exported: false, typ: $String, tag: ""}, {prop: "path", name: "path", exported: false, typ: $String, tag: ""}, {prop: "header", name: "header", exported: false, typ: Header, tag: ""}]);
http2bodyReadMsg.init("net/http", [{prop: "st", name: "st", exported: false, typ: ptrType$6, tag: ""}, {prop: "n", name: "n", exported: false, typ: $Int, tag: ""}]);
http2requestBody.init("net/http", [{prop: "stream", name: "stream", exported: false, typ: ptrType$6, tag: ""}, {prop: "conn", name: "conn", exported: false, typ: ptrType$9, tag: ""}, {prop: "closed", name: "closed", exported: false, typ: $Bool, tag: ""}, {prop: "sawEOF", name: "sawEOF", exported: false, typ: $Bool, tag: ""}, {prop: "pipe", name: "pipe", exported: false, typ: ptrType$63, tag: ""}, {prop: "needsContinue", name: "needsContinue", exported: false, typ: $Bool, tag: ""}]);
http2responseWriter.init("net/http", [{prop: "rws", name: "rws", exported: false, typ: ptrType$65, tag: ""}]);
http2responseWriterState.init("net/http", [{prop: "stream", name: "stream", exported: false, typ: ptrType$6, tag: ""}, {prop: "req", name: "req", exported: false, typ: ptrType$7, tag: ""}, {prop: "body", name: "body", exported: false, typ: ptrType$8, tag: ""}, {prop: "conn", name: "conn", exported: false, typ: ptrType$9, tag: ""}, {prop: "bw", name: "bw", exported: false, typ: ptrType$10, tag: ""}, {prop: "handlerHeader", name: "handlerHeader", exported: false, typ: Header, tag: ""}, {prop: "snapHeader", name: "snapHeader", exported: false, typ: Header, tag: ""}, {prop: "trailers", name: "trailers", exported: false, typ: sliceType$1, tag: ""}, {prop: "status", name: "status", exported: false, typ: $Int, tag: ""}, {prop: "wroteHeader", name: "wroteHeader", exported: false, typ: $Bool, tag: ""}, {prop: "sentHeader", name: "sentHeader", exported: false, typ: $Bool, tag: ""}, {prop: "handlerDone", name: "handlerDone", exported: false, typ: $Bool, tag: ""}, {prop: "sentContentLen", name: "sentContentLen", exported: false, typ: $Int64, tag: ""}, {prop: "wroteBytes", name: "wroteBytes", exported: false, typ: $Int64, tag: ""}, {prop: "closeNotifierMu", name: "closeNotifierMu", exported: false, typ: sync.Mutex, tag: ""}, {prop: "closeNotifierCh", name: "closeNotifierCh", exported: false, typ: chanType$12, tag: ""}]);
http2chunkWriter.init("net/http", [{prop: "rws", name: "rws", exported: false, typ: ptrType$65, tag: ""}]);
http2pushOptions.init("", [{prop: "Method", name: "Method", exported: true, typ: $String, tag: ""}, {prop: "Header", name: "Header", exported: true, typ: Header, tag: ""}]);
http2startPushRequest.init("net/http", [{prop: "parent", name: "parent", exported: false, typ: ptrType$6, tag: ""}, {prop: "method", name: "method", exported: false, typ: $String, tag: ""}, {prop: "url", name: "url", exported: false, typ: ptrType$19, tag: ""}, {prop: "header", name: "header", exported: false, typ: Header, tag: ""}, {prop: "done", name: "done", exported: false, typ: chanType, tag: ""}]);
http2Transport.init("net/http", [{prop: "DialTLS", name: "DialTLS", exported: true, typ: funcType$21, tag: ""}, {prop: "TLSClientConfig", name: "TLSClientConfig", exported: true, typ: ptrType$13, tag: ""}, {prop: "ConnPool", name: "ConnPool", exported: true, typ: http2ClientConnPool, tag: ""}, {prop: "DisableCompression", name: "DisableCompression", exported: true, typ: $Bool, tag: ""}, {prop: "AllowHTTP", name: "AllowHTTP", exported: true, typ: $Bool, tag: ""}, {prop: "MaxHeaderListSize", name: "MaxHeaderListSize", exported: true, typ: $Uint32, tag: ""}, {prop: "t1", name: "t1", exported: false, typ: ptrType$21, tag: ""}, {prop: "connPoolOnce", name: "connPoolOnce", exported: false, typ: sync.Once, tag: ""}, {prop: "connPoolOrDef", name: "connPoolOrDef", exported: false, typ: http2ClientConnPool, tag: ""}]);
http2ClientConn.init("net/http", [{prop: "t", name: "t", exported: false, typ: ptrType$14, tag: ""}, {prop: "tconn", name: "tconn", exported: false, typ: net.Conn, tag: ""}, {prop: "tlsState", name: "tlsState", exported: false, typ: ptrType$17, tag: ""}, {prop: "singleUse", name: "singleUse", exported: false, typ: $Bool, tag: ""}, {prop: "readerDone", name: "readerDone", exported: false, typ: chanType$2, tag: ""}, {prop: "readerErr", name: "readerErr", exported: false, typ: $error, tag: ""}, {prop: "idleTimeout", name: "idleTimeout", exported: false, typ: time.Duration, tag: ""}, {prop: "idleTimer", name: "idleTimer", exported: false, typ: ptrType$53, tag: ""}, {prop: "mu", name: "mu", exported: false, typ: sync.Mutex, tag: ""}, {prop: "cond", name: "cond", exported: false, typ: ptrType$67, tag: ""}, {prop: "flow", name: "flow", exported: false, typ: http2flow, tag: ""}, {prop: "inflow", name: "inflow", exported: false, typ: http2flow, tag: ""}, {prop: "closed", name: "closed", exported: false, typ: $Bool, tag: ""}, {prop: "wantSettingsAck", name: "wantSettingsAck", exported: false, typ: $Bool, tag: ""}, {prop: "goAway", name: "goAway", exported: false, typ: ptrType$42, tag: ""}, {prop: "goAwayDebug", name: "goAwayDebug", exported: false, typ: $String, tag: ""}, {prop: "streams", name: "streams", exported: false, typ: mapType$9, tag: ""}, {prop: "nextStreamID", name: "nextStreamID", exported: false, typ: $Uint32, tag: ""}, {prop: "pings", name: "pings", exported: false, typ: mapType$10, tag: ""}, {prop: "bw", name: "bw", exported: false, typ: ptrType$10, tag: ""}, {prop: "br", name: "br", exported: false, typ: ptrType$68, tag: ""}, {prop: "fr", name: "fr", exported: false, typ: ptrType$32, tag: ""}, {prop: "lastActive", name: "lastActive", exported: false, typ: time.Time, tag: ""}, {prop: "maxFrameSize", name: "maxFrameSize", exported: false, typ: $Uint32, tag: ""}, {prop: "maxConcurrentStreams", name: "maxConcurrentStreams", exported: false, typ: $Uint32, tag: ""}, {prop: "initialWindowSize", name: "initialWindowSize", exported: false, typ: $Uint32, tag: ""}, {prop: "hbuf", name: "hbuf", exported: false, typ: bytes.Buffer, tag: ""}, {prop: "henc", name: "henc", exported: false, typ: ptrType$54, tag: ""}, {prop: "freeBuf", name: "freeBuf", exported: false, typ: sliceType$4, tag: ""}, {prop: "wmu", name: "wmu", exported: false, typ: sync.Mutex, tag: ""}, {prop: "werr", name: "werr", exported: false, typ: $error, tag: ""}]);
http2clientStream.init("net/http", [{prop: "cc", name: "cc", exported: false, typ: ptrType$27, tag: ""}, {prop: "req", name: "req", exported: false, typ: ptrType$7, tag: ""}, {prop: "trace", name: "trace", exported: false, typ: ptrType$46, tag: ""}, {prop: "ID", name: "ID", exported: true, typ: $Uint32, tag: ""}, {prop: "resc", name: "resc", exported: false, typ: chanType$13, tag: ""}, {prop: "bufPipe", name: "bufPipe", exported: false, typ: http2pipe, tag: ""}, {prop: "startedWrite", name: "startedWrite", exported: false, typ: $Bool, tag: ""}, {prop: "requestedGzip", name: "requestedGzip", exported: false, typ: $Bool, tag: ""}, {prop: "on100", name: "on100", exported: false, typ: funcType$2, tag: ""}, {prop: "flow", name: "flow", exported: false, typ: http2flow, tag: ""}, {prop: "inflow", name: "inflow", exported: false, typ: http2flow, tag: ""}, {prop: "bytesRemain", name: "bytesRemain", exported: false, typ: $Int64, tag: ""}, {prop: "readErr", name: "readErr", exported: false, typ: $error, tag: ""}, {prop: "stopReqBody", name: "stopReqBody", exported: false, typ: $error, tag: ""}, {prop: "didReset", name: "didReset", exported: false, typ: $Bool, tag: ""}, {prop: "peerReset", name: "peerReset", exported: false, typ: chanType$2, tag: ""}, {prop: "resetErr", name: "resetErr", exported: false, typ: $error, tag: ""}, {prop: "done", name: "done", exported: false, typ: chanType$2, tag: ""}, {prop: "firstByte", name: "firstByte", exported: false, typ: $Bool, tag: ""}, {prop: "pastHeaders", name: "pastHeaders", exported: false, typ: $Bool, tag: ""}, {prop: "pastTrailers", name: "pastTrailers", exported: false, typ: $Bool, tag: ""}, {prop: "trailer", name: "trailer", exported: false, typ: Header, tag: ""}, {prop: "resTrailer", name: "resTrailer", exported: false, typ: ptrType$69, tag: ""}]);
http2stickyErrWriter.init("net/http", [{prop: "w", name: "w", exported: false, typ: io.Writer, tag: ""}, {prop: "err", name: "err", exported: false, typ: ptrType$48, tag: ""}]);
http2RoundTripOpt.init("", [{prop: "OnlyCachedConn", name: "OnlyCachedConn", exported: true, typ: $Bool, tag: ""}]);
http2badStringError.init("net/http", [{prop: "what", name: "what", exported: false, typ: $String, tag: ""}, {prop: "str", name: "str", exported: false, typ: $String, tag: ""}]);
http2resAndError.init("net/http", [{prop: "res", name: "res", exported: false, typ: ptrType$16, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}]);
http2clientConnReadLoop.init("net/http", [{prop: "cc", name: "cc", exported: false, typ: ptrType$27, tag: ""}, {prop: "activeRes", name: "activeRes", exported: false, typ: mapType$9, tag: ""}, {prop: "closeWhenIdle", name: "closeWhenIdle", exported: false, typ: $Bool, tag: ""}]);
http2GoAwayError.init("", [{prop: "LastStreamID", name: "LastStreamID", exported: true, typ: $Uint32, tag: ""}, {prop: "ErrCode", name: "ErrCode", exported: true, typ: http2ErrCode, tag: ""}, {prop: "DebugData", name: "DebugData", exported: true, typ: $String, tag: ""}]);
http2transportResponseBody.init("net/http", [{prop: "cs", name: "cs", exported: false, typ: ptrType$70, tag: ""}]);
http2erringRoundTripper.init("net/http", [{prop: "err", name: "err", exported: false, typ: $error, tag: ""}]);
http2gzipReader.init("net/http", [{prop: "body", name: "body", exported: false, typ: io.ReadCloser, tag: ""}, {prop: "zr", name: "zr", exported: false, typ: ptrType$71, tag: ""}, {prop: "zerr", name: "zerr", exported: false, typ: $error, tag: ""}]);
http2bodyWriterState.init("net/http", [{prop: "cs", name: "cs", exported: false, typ: ptrType$70, tag: ""}, {prop: "timer", name: "timer", exported: false, typ: ptrType$53, tag: ""}, {prop: "fnonce", name: "fnonce", exported: false, typ: ptrType$72, tag: ""}, {prop: "fn", name: "fn", exported: false, typ: funcType$2, tag: ""}, {prop: "resc", name: "resc", exported: false, typ: chanType, tag: ""}, {prop: "delay", name: "delay", exported: false, typ: time.Duration, tag: ""}]);
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)}]);
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$32], false)}, {prop: "HeaderEncoder", name: "HeaderEncoder", pkg: "", typ: $funcType([], [ptrType$54, ptrType$34], false)}]);
http2flushFrameWriter.init("", []);
http2writeSettings.init(http2Setting);
http2writeGoAway.init("net/http", [{prop: "maxStreamID", name: "maxStreamID", exported: false, typ: $Uint32, tag: ""}, {prop: "code", name: "code", exported: false, typ: http2ErrCode, tag: ""}]);
http2writeData.init("net/http", [{prop: "streamID", name: "streamID", exported: false, typ: $Uint32, tag: ""}, {prop: "p", name: "p", exported: false, typ: sliceType$2, tag: ""}, {prop: "endStream", name: "endStream", exported: false, typ: $Bool, tag: ""}]);
http2handlerPanicRST.init("", [{prop: "StreamID", name: "StreamID", exported: true, typ: $Uint32, tag: ""}]);
http2writePingAck.init("net/http", [{prop: "pf", name: "pf", exported: false, typ: ptrType$41, tag: ""}]);
http2writeSettingsAck.init("", []);
http2writeResHeaders.init("net/http", [{prop: "streamID", name: "streamID", exported: false, typ: $Uint32, tag: ""}, {prop: "httpResCode", name: "httpResCode", exported: false, typ: $Int, tag: ""}, {prop: "h", name: "h", exported: false, typ: Header, tag: ""}, {prop: "trailers", name: "trailers", exported: false, typ: sliceType$1, tag: ""}, {prop: "endStream", name: "endStream", exported: false, typ: $Bool, tag: ""}, {prop: "date", name: "date", exported: false, typ: $String, tag: ""}, {prop: "contentType", name: "contentType", exported: false, typ: $String, tag: ""}, {prop: "contentLength", name: "contentLength", exported: false, typ: $String, tag: ""}]);
http2writePushPromise.init("net/http", [{prop: "streamID", name: "streamID", exported: false, typ: $Uint32, tag: ""}, {prop: "method", name: "method", exported: false, typ: $String, tag: ""}, {prop: "url", name: "url", exported: false, typ: ptrType$19, tag: ""}, {prop: "h", name: "h", exported: false, typ: Header, tag: ""}, {prop: "allocatePromisedID", name: "allocatePromisedID", exported: false, typ: funcType$22, tag: ""}, {prop: "promisedID", name: "promisedID", exported: false, typ: $Uint32, tag: ""}]);
http2write100ContinueHeadersFrame.init("net/http", [{prop: "streamID", name: "streamID", exported: false, typ: $Uint32, tag: ""}]);
http2writeWindowUpdate.init("net/http", [{prop: "streamID", name: "streamID", exported: false, typ: $Uint32, tag: ""}, {prop: "n", name: "n", exported: false, typ: $Uint32, tag: ""}]);
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)}]);
http2OpenStreamOptions.init("", [{prop: "PusherID", name: "PusherID", exported: true, typ: $Uint32, tag: ""}]);
http2FrameWriteRequest.init("net/http", [{prop: "write", name: "write", exported: false, typ: http2writeFramer, tag: ""}, {prop: "stream", name: "stream", exported: false, typ: ptrType$6, tag: ""}, {prop: "done", name: "done", exported: false, typ: chanType, tag: ""}]);
http2writeQueue.init("net/http", [{prop: "s", name: "s", exported: false, typ: sliceType$18, tag: ""}]);
http2writeQueuePool.init(ptrType$73);
http2randomWriteScheduler.init("net/http", [{prop: "zero", name: "zero", exported: false, typ: http2writeQueue, tag: ""}, {prop: "sq", name: "sq", exported: false, typ: mapType$12, tag: ""}, {prop: "queuePool", name: "queuePool", exported: false, typ: http2writeQueuePool, tag: ""}]);
Header.init($String, sliceType$1);
writeStringer.init([{prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}]);
stringWriter.init("net/http", [{prop: "w", name: "w", exported: false, typ: io.Writer, tag: ""}]);
keyValues.init("net/http", [{prop: "key", name: "key", exported: false, typ: $String, tag: ""}, {prop: "values", name: "values", exported: false, typ: sliceType$1, tag: ""}]);
headerSorter.init("net/http", [{prop: "kvs", name: "kvs", exported: false, typ: sliceType$3, tag: ""}]);
contextKey.init("net/http", [{prop: "name", name: "name", exported: false, typ: $String, tag: ""}]);
noBody.init("", []);
PushOptions.init("", [{prop: "Method", name: "Method", exported: true, typ: $String, tag: ""}, {prop: "Header", name: "Header", exported: true, typ: Header, tag: ""}]);
CookieJar.init([{prop: "Cookies", name: "Cookies", pkg: "", typ: $funcType([ptrType$19], [sliceType$7], false)}, {prop: "SetCookies", name: "SetCookies", pkg: "", typ: $funcType([ptrType$19, sliceType$7], [], false)}]);
ProtocolError.init("", [{prop: "ErrorString", name: "ErrorString", exported: true, typ: $String, tag: ""}]);
badStringError.init("net/http", [{prop: "what", name: "what", exported: false, typ: $String, tag: ""}, {prop: "str", name: "str", exported: false, typ: $String, tag: ""}]);
Request.init("net/http", [{prop: "Method", name: "Method", exported: true, typ: $String, tag: ""}, {prop: "URL", name: "URL", exported: true, typ: ptrType$19, tag: ""}, {prop: "Proto", name: "Proto", exported: true, typ: $String, tag: ""}, {prop: "ProtoMajor", name: "ProtoMajor", exported: true, typ: $Int, tag: ""}, {prop: "ProtoMinor", name: "ProtoMinor", exported: true, typ: $Int, tag: ""}, {prop: "Header", name: "Header", exported: true, typ: Header, tag: ""}, {prop: "Body", name: "Body", exported: true, typ: io.ReadCloser, tag: ""}, {prop: "GetBody", name: "GetBody", exported: true, typ: funcType$24, tag: ""}, {prop: "ContentLength", name: "ContentLength", exported: true, typ: $Int64, tag: ""}, {prop: "TransferEncoding", name: "TransferEncoding", exported: true, typ: sliceType$1, tag: ""}, {prop: "Close", name: "Close", exported: true, typ: $Bool, tag: ""}, {prop: "Host", name: "Host", exported: true, typ: $String, tag: ""}, {prop: "Form", name: "Form", exported: true, typ: url.Values, tag: ""}, {prop: "PostForm", name: "PostForm", exported: true, typ: url.Values, tag: ""}, {prop: "MultipartForm", name: "MultipartForm", exported: true, typ: ptrType$20, tag: ""}, {prop: "Trailer", name: "Trailer", exported: true, typ: Header, tag: ""}, {prop: "RemoteAddr", name: "RemoteAddr", exported: true, typ: $String, tag: ""}, {prop: "RequestURI", name: "RequestURI", exported: true, typ: $String, tag: ""}, {prop: "TLS", name: "TLS", exported: true, typ: ptrType$17, tag: ""}, {prop: "Cancel", name: "Cancel", exported: true, typ: chanType$3, tag: ""}, {prop: "Response", name: "Response", exported: true, typ: ptrType$16, tag: ""}, {prop: "ctx", name: "ctx", exported: false, typ: context.Context, tag: ""}]);
maxBytesReader.init("net/http", [{prop: "w", name: "w", exported: false, typ: ResponseWriter, tag: ""}, {prop: "r", name: "r", exported: false, typ: io.ReadCloser, tag: ""}, {prop: "n", name: "n", exported: false, typ: $Int64, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}]);
Response.init("", [{prop: "Status", name: "Status", exported: true, typ: $String, tag: ""}, {prop: "StatusCode", name: "StatusCode", exported: true, typ: $Int, tag: ""}, {prop: "Proto", name: "Proto", exported: true, typ: $String, tag: ""}, {prop: "ProtoMajor", name: "ProtoMajor", exported: true, typ: $Int, tag: ""}, {prop: "ProtoMinor", name: "ProtoMinor", exported: true, typ: $Int, tag: ""}, {prop: "Header", name: "Header", exported: true, typ: Header, tag: ""}, {prop: "Body", name: "Body", exported: true, typ: io.ReadCloser, tag: ""}, {prop: "ContentLength", name: "ContentLength", exported: true, typ: $Int64, tag: ""}, {prop: "TransferEncoding", name: "TransferEncoding", exported: true, typ: sliceType$1, tag: ""}, {prop: "Close", name: "Close", exported: true, typ: $Bool, tag: ""}, {prop: "Uncompressed", name: "Uncompressed", exported: true, typ: $Bool, tag: ""}, {prop: "Trailer", name: "Trailer", exported: true, typ: Header, tag: ""}, {prop: "Request", name: "Request", exported: true, typ: ptrType$7, tag: ""}, {prop: "TLS", name: "TLS", exported: true, typ: ptrType$17, tag: ""}]);
Handler.init([{prop: "ServeHTTP", name: "ServeHTTP", pkg: "", typ: $funcType([ResponseWriter, ptrType$7], [], false)}]);
ResponseWriter.init([{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [Header], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "WriteHeader", name: "WriteHeader", pkg: "", typ: $funcType([$Int], [], false)}]);
conn.init("net/http", [{prop: "server", name: "server", exported: false, typ: ptrType$44, tag: ""}, {prop: "cancelCtx", name: "cancelCtx", exported: false, typ: context.CancelFunc, tag: ""}, {prop: "rwc", name: "rwc", exported: false, typ: net.Conn, tag: ""}, {prop: "remoteAddr", name: "remoteAddr", exported: false, typ: $String, tag: ""}, {prop: "tlsState", name: "tlsState", exported: false, typ: ptrType$17, tag: ""}, {prop: "werr", name: "werr", exported: false, typ: $error, tag: ""}, {prop: "r", name: "r", exported: false, typ: ptrType$89, tag: ""}, {prop: "bufr", name: "bufr", exported: false, typ: ptrType$68, tag: ""}, {prop: "bufw", name: "bufw", exported: false, typ: ptrType$10, tag: ""}, {prop: "lastMethod", name: "lastMethod", exported: false, typ: $String, tag: ""}, {prop: "curReq", name: "curReq", exported: false, typ: atomic.Value, tag: ""}, {prop: "curState", name: "curState", exported: false, typ: atomic.Value, tag: ""}, {prop: "mu", name: "mu", exported: false, typ: sync.Mutex, tag: ""}, {prop: "hijackedv", name: "hijackedv", exported: false, typ: $Bool, tag: ""}]);
chunkWriter.init("net/http", [{prop: "res", name: "res", exported: false, typ: ptrType$90, tag: ""}, {prop: "header", name: "header", exported: false, typ: Header, tag: ""}, {prop: "wroteHeader", name: "wroteHeader", exported: false, typ: $Bool, tag: ""}, {prop: "chunking", name: "chunking", exported: false, typ: $Bool, tag: ""}]);
response.init("net/http", [{prop: "conn", name: "conn", exported: false, typ: ptrType$93, tag: ""}, {prop: "req", name: "req", exported: false, typ: ptrType$7, tag: ""}, {prop: "reqBody", name: "reqBody", exported: false, typ: io.ReadCloser, tag: ""}, {prop: "cancelCtx", name: "cancelCtx", exported: false, typ: context.CancelFunc, tag: ""}, {prop: "wroteHeader", name: "wroteHeader", exported: false, typ: $Bool, tag: ""}, {prop: "wroteContinue", name: "wroteContinue", exported: false, typ: $Bool, tag: ""}, {prop: "wants10KeepAlive", name: "wants10KeepAlive", exported: false, typ: $Bool, tag: ""}, {prop: "wantsClose", name: "wantsClose", exported: false, typ: $Bool, tag: ""}, {prop: "w", name: "w", exported: false, typ: ptrType$10, tag: ""}, {prop: "cw", name: "cw", exported: false, typ: chunkWriter, tag: ""}, {prop: "handlerHeader", name: "handlerHeader", exported: false, typ: Header, tag: ""}, {prop: "calledHeader", name: "calledHeader", exported: false, typ: $Bool, tag: ""}, {prop: "written", name: "written", exported: false, typ: $Int64, tag: ""}, {prop: "contentLength", name: "contentLength", exported: false, typ: $Int64, tag: ""}, {prop: "status", name: "status", exported: false, typ: $Int, tag: ""}, {prop: "closeAfterReply", name: "closeAfterReply", exported: false, typ: $Bool, tag: ""}, {prop: "requestBodyLimitHit", name: "requestBodyLimitHit", exported: false, typ: $Bool, tag: ""}, {prop: "trailers", name: "trailers", exported: false, typ: sliceType$1, tag: ""}, {prop: "handlerDone", name: "handlerDone", exported: false, typ: atomicBool, tag: ""}, {prop: "dateBuf", name: "dateBuf", exported: false, typ: arrayType$6, tag: ""}, {prop: "clenBuf", name: "clenBuf", exported: false, typ: arrayType$7, tag: ""}, {prop: "closeNotifyCh", name: "closeNotifyCh", exported: false, typ: chanType$12, tag: ""}, {prop: "didCloseNotify", name: "didCloseNotify", exported: false, typ: $Int32, tag: ""}]);
writerOnly.init("", [{prop: "Writer", name: "", exported: true, typ: io.Writer, tag: ""}]);
readResult.init("net/http", [{prop: "n", name: "n", exported: false, typ: $Int, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}, {prop: "b", name: "b", exported: false, typ: $Uint8, tag: ""}]);
connReader.init("net/http", [{prop: "conn", name: "conn", exported: false, typ: ptrType$93, tag: ""}, {prop: "mu", name: "mu", exported: false, typ: sync.Mutex, tag: ""}, {prop: "hasByte", name: "hasByte", exported: false, typ: $Bool, tag: ""}, {prop: "byteBuf", name: "byteBuf", exported: false, typ: arrayType$5, tag: ""}, {prop: "bgErr", name: "bgErr", exported: false, typ: $error, tag: ""}, {prop: "cond", name: "cond", exported: false, typ: ptrType$67, tag: ""}, {prop: "inRead", name: "inRead", exported: false, typ: $Bool, tag: ""}, {prop: "aborted", name: "aborted", exported: false, typ: $Bool, tag: ""}, {prop: "remain", name: "remain", exported: false, typ: $Int64, tag: ""}]);
expectContinueReader.init("net/http", [{prop: "resp", name: "resp", exported: false, typ: ptrType$90, tag: ""}, {prop: "readCloser", name: "readCloser", exported: false, typ: io.ReadCloser, tag: ""}, {prop: "closed", name: "closed", exported: false, typ: $Bool, tag: ""}, {prop: "sawEOF", name: "sawEOF", exported: false, typ: $Bool, tag: ""}]);
extraHeader.init("net/http", [{prop: "contentType", name: "contentType", exported: false, typ: $String, tag: ""}, {prop: "connection", name: "connection", exported: false, typ: $String, tag: ""}, {prop: "transferEncoding", name: "transferEncoding", exported: false, typ: $String, tag: ""}, {prop: "date", name: "date", exported: false, typ: sliceType$2, tag: ""}, {prop: "contentLength", name: "contentLength", exported: false, typ: sliceType$2, tag: ""}]);
closeWriter.init([{prop: "CloseWrite", name: "CloseWrite", pkg: "", typ: $funcType([], [$error], false)}]);
HandlerFunc.init([ResponseWriter, ptrType$7], [], false);
redirectHandler.init("net/http", [{prop: "url", name: "url", exported: false, typ: $String, tag: ""}, {prop: "code", name: "code", exported: false, typ: $Int, tag: ""}]);
ServeMux.init("net/http", [{prop: "mu", name: "mu", exported: false, typ: sync.RWMutex, tag: ""}, {prop: "m", name: "m", exported: false, typ: mapType$14, tag: ""}, {prop: "hosts", name: "hosts", exported: false, typ: $Bool, tag: ""}]);
muxEntry.init("net/http", [{prop: "explicit", name: "explicit", exported: false, typ: $Bool, tag: ""}, {prop: "h", name: "h", exported: false, typ: Handler, tag: ""}, {prop: "pattern", name: "pattern", exported: false, typ: $String, tag: ""}]);
Server.init("net/http", [{prop: "Addr", name: "Addr", exported: true, typ: $String, tag: ""}, {prop: "Handler", name: "Handler", exported: true, typ: Handler, tag: ""}, {prop: "TLSConfig", name: "TLSConfig", exported: true, typ: ptrType$13, tag: ""}, {prop: "ReadTimeout", name: "ReadTimeout", exported: true, typ: time.Duration, tag: ""}, {prop: "ReadHeaderTimeout", name: "ReadHeaderTimeout", exported: true, typ: time.Duration, tag: ""}, {prop: "WriteTimeout", name: "WriteTimeout", exported: true, typ: time.Duration, tag: ""}, {prop: "IdleTimeout", name: "IdleTimeout", exported: true, typ: time.Duration, tag: ""}, {prop: "MaxHeaderBytes", name: "MaxHeaderBytes", exported: true, typ: $Int, tag: ""}, {prop: "TLSNextProto", name: "TLSNextProto", exported: true, typ: mapType$15, tag: ""}, {prop: "ConnState", name: "ConnState", exported: true, typ: funcType$26, tag: ""}, {prop: "ErrorLog", name: "ErrorLog", exported: true, typ: ptrType$51, tag: ""}, {prop: "disableKeepAlives", name: "disableKeepAlives", exported: false, typ: $Int32, tag: ""}, {prop: "inShutdown", name: "inShutdown", exported: false, typ: $Int32, tag: ""}, {prop: "nextProtoOnce", name: "nextProtoOnce", exported: false, typ: sync.Once, tag: ""}, {prop: "nextProtoErr", name: "nextProtoErr", exported: false, typ: $error, tag: ""}, {prop: "mu", name: "mu", exported: false, typ: sync.Mutex, tag: ""}, {prop: "listeners", name: "listeners", exported: false, typ: mapType$16, tag: ""}, {prop: "activeConn", name: "activeConn", exported: false, typ: mapType$17, tag: ""}, {prop: "doneChan", name: "doneChan", exported: false, typ: chanType$2, tag: ""}]);
serverHandler.init("net/http", [{prop: "srv", name: "srv", exported: false, typ: ptrType$44, tag: ""}]);
tcpKeepAliveListener.init("", [{prop: "TCPListener", name: "", exported: true, typ: ptrType$96, tag: ""}]);
globalOptionsHandler.init("", []);
initNPNRequest.init("net/http", [{prop: "c", name: "c", exported: false, typ: ptrType$95, tag: ""}, {prop: "h", name: "h", exported: false, typ: serverHandler, tag: ""}]);
loggingConn.init("net/http", [{prop: "name", name: "name", exported: false, typ: $String, tag: ""}, {prop: "Conn", name: "", exported: true, typ: net.Conn, tag: ""}]);
checkConnErrorWriter.init("net/http", [{prop: "c", name: "c", exported: false, typ: ptrType$93, tag: ""}]);
sniffSig.init([{prop: "match", name: "match", pkg: "net/http", typ: $funcType([sliceType$2, $Int], [$String], false)}]);
exactSig.init("net/http", [{prop: "sig", name: "sig", exported: false, typ: sliceType$2, tag: ""}, {prop: "ct", name: "ct", exported: false, typ: $String, tag: ""}]);
maskedSig.init("net/http", [{prop: "mask", name: "mask", exported: false, typ: sliceType$2, tag: ""}, {prop: "pat", name: "pat", exported: false, typ: sliceType$2, tag: ""}, {prop: "skipWS", name: "skipWS", exported: false, typ: $Bool, tag: ""}, {prop: "ct", name: "ct", exported: false, typ: $String, tag: ""}]);
htmlSig.init($Uint8);
mp4Sig.init("", []);
textSig.init("", []);
errorReader.init("net/http", [{prop: "err", name: "err", exported: false, typ: $error, tag: ""}]);
byteReader.init("net/http", [{prop: "b", name: "b", exported: false, typ: $Uint8, tag: ""}, {prop: "done", name: "done", exported: false, typ: $Bool, tag: ""}]);
transferWriter.init("", [{prop: "Method", name: "Method", exported: true, typ: $String, tag: ""}, {prop: "Body", name: "Body", exported: true, typ: io.Reader, tag: ""}, {prop: "BodyCloser", name: "BodyCloser", exported: true, typ: io.Closer, tag: ""}, {prop: "ResponseToHEAD", name: "ResponseToHEAD", exported: true, typ: $Bool, tag: ""}, {prop: "ContentLength", name: "ContentLength", exported: true, typ: $Int64, tag: ""}, {prop: "Close", name: "Close", exported: true, typ: $Bool, tag: ""}, {prop: "TransferEncoding", name: "TransferEncoding", exported: true, typ: sliceType$1, tag: ""}, {prop: "Trailer", name: "Trailer", exported: true, typ: Header, tag: ""}, {prop: "IsResponse", name: "IsResponse", exported: true, typ: $Bool, tag: ""}, {prop: "FlushHeaders", name: "FlushHeaders", exported: true, typ: $Bool, tag: ""}, {prop: "ByteReadCh", name: "ByteReadCh", exported: true, typ: chanType$14, tag: ""}]);
transferReader.init("", [{prop: "Header", name: "Header", exported: true, typ: Header, tag: ""}, {prop: "StatusCode", name: "StatusCode", exported: true, typ: $Int, tag: ""}, {prop: "RequestMethod", name: "RequestMethod", exported: true, typ: $String, tag: ""}, {prop: "ProtoMajor", name: "ProtoMajor", exported: true, typ: $Int, tag: ""}, {prop: "ProtoMinor", name: "ProtoMinor", exported: true, typ: $Int, tag: ""}, {prop: "Body", name: "Body", exported: true, typ: io.ReadCloser, tag: ""}, {prop: "ContentLength", name: "ContentLength", exported: true, typ: $Int64, tag: ""}, {prop: "TransferEncoding", name: "TransferEncoding", exported: true, typ: sliceType$1, tag: ""}, {prop: "Close", name: "Close", exported: true, typ: $Bool, tag: ""}, {prop: "Trailer", name: "Trailer", exported: true, typ: Header, tag: ""}]);
body.init("net/http", [{prop: "src", name: "src", exported: false, typ: io.Reader, tag: ""}, {prop: "hdr", name: "hdr", exported: false, typ: $emptyInterface, tag: ""}, {prop: "r", name: "r", exported: false, typ: ptrType$68, tag: ""}, {prop: "closing", name: "closing", exported: false, typ: $Bool, tag: ""}, {prop: "doEarlyClose", name: "doEarlyClose", exported: false, typ: $Bool, tag: ""}, {prop: "mu", name: "mu", exported: false, typ: sync.Mutex, tag: ""}, {prop: "sawEOF", name: "sawEOF", exported: false, typ: $Bool, tag: ""}, {prop: "closed", name: "closed", exported: false, typ: $Bool, tag: ""}, {prop: "earlyClose", name: "earlyClose", exported: false, typ: $Bool, tag: ""}, {prop: "onHitEOF", name: "onHitEOF", exported: false, typ: funcType$2, tag: ""}]);
bodyLocked.init("net/http", [{prop: "b", name: "b", exported: false, typ: ptrType$92, tag: ""}]);
finishAsyncByteRead.init("net/http", [{prop: "tw", name: "tw", exported: false, typ: ptrType$97, tag: ""}]);
Transport.init("net/http", [{prop: "idleMu", name: "idleMu", exported: false, typ: sync.Mutex, tag: ""}, {prop: "wantIdle", name: "wantIdle", exported: false, typ: $Bool, tag: ""}, {prop: "idleConn", name: "idleConn", exported: false, typ: mapType$18, tag: ""}, {prop: "idleConnCh", name: "idleConnCh", exported: false, typ: mapType$19, tag: ""}, {prop: "idleLRU", name: "idleLRU", exported: false, typ: connLRU, tag: ""}, {prop: "reqMu", name: "reqMu", exported: false, typ: sync.Mutex, tag: ""}, {prop: "reqCanceler", name: "reqCanceler", exported: false, typ: mapType$20, tag: ""}, {prop: "altMu", name: "altMu", exported: false, typ: sync.Mutex, tag: ""}, {prop: "altProto", name: "altProto", exported: false, typ: atomic.Value, tag: ""}, {prop: "Proxy", name: "Proxy", exported: true, typ: funcType$27, tag: ""}, {prop: "DialContext", name: "DialContext", exported: true, typ: funcType$28, tag: ""}, {prop: "Dial", name: "Dial", exported: true, typ: funcType$29, tag: ""}, {prop: "DialTLS", name: "DialTLS", exported: true, typ: funcType$29, tag: ""}, {prop: "TLSClientConfig", name: "TLSClientConfig", exported: true, typ: ptrType$13, tag: ""}, {prop: "TLSHandshakeTimeout", name: "TLSHandshakeTimeout", exported: true, typ: time.Duration, tag: ""}, {prop: "DisableKeepAlives", name: "DisableKeepAlives", exported: true, typ: $Bool, tag: ""}, {prop: "DisableCompression", name: "DisableCompression", exported: true, typ: $Bool, tag: ""}, {prop: "MaxIdleConns", name: "MaxIdleConns", exported: true, typ: $Int, tag: ""}, {prop: "MaxIdleConnsPerHost", name: "MaxIdleConnsPerHost", exported: true, typ: $Int, tag: ""}, {prop: "IdleConnTimeout", name: "IdleConnTimeout", exported: true, typ: time.Duration, tag: ""}, {prop: "ResponseHeaderTimeout", name: "ResponseHeaderTimeout", exported: true, typ: time.Duration, tag: ""}, {prop: "ExpectContinueTimeout", name: "ExpectContinueTimeout", exported: true, typ: time.Duration, tag: ""}, {prop: "TLSNextProto", name: "TLSNextProto", exported: true, typ: mapType$21, tag: ""}, {prop: "ProxyConnectHeader", name: "ProxyConnectHeader", exported: true, typ: Header, tag: ""}, {prop: "MaxResponseHeaderBytes", name: "MaxResponseHeaderBytes", exported: true, typ: $Int64, tag: ""}, {prop: "nextProtoOnce", name: "nextProtoOnce", exported: false, typ: sync.Once, tag: ""}, {prop: "h2transport", name: "h2transport", exported: false, typ: ptrType$14, tag: ""}]);
transportRequest.init("net/http", [{prop: "Request", name: "", exported: true, typ: ptrType$7, tag: ""}, {prop: "extra", name: "extra", exported: false, typ: Header, tag: ""}, {prop: "trace", name: "trace", exported: false, typ: ptrType$45, tag: ""}]);
transportReadFromServerError.init("net/http", [{prop: "err", name: "err", exported: false, typ: $error, tag: ""}]);
persistConnWriter.init("net/http", [{prop: "pc", name: "pc", exported: false, typ: ptrType$98, tag: ""}]);
connectMethod.init("net/http", [{prop: "proxyURL", name: "proxyURL", exported: false, typ: ptrType$19, tag: ""}, {prop: "targetScheme", name: "targetScheme", exported: false, typ: $String, tag: ""}, {prop: "targetAddr", name: "targetAddr", exported: false, typ: $String, tag: ""}]);
connectMethodKey.init("net/http", [{prop: "proxy", name: "proxy", exported: false, typ: $String, tag: ""}, {prop: "scheme", name: "scheme", exported: false, typ: $String, tag: ""}, {prop: "addr", name: "addr", exported: false, typ: $String, tag: ""}]);
persistConn.init("net/http", [{prop: "alt", name: "alt", exported: false, typ: RoundTripper, tag: ""}, {prop: "t", name: "t", exported: false, typ: ptrType$21, tag: ""}, {prop: "cacheKey", name: "cacheKey", exported: false, typ: connectMethodKey, tag: ""}, {prop: "conn", name: "conn", exported: false, typ: net.Conn, tag: ""}, {prop: "tlsState", name: "tlsState", exported: false, typ: ptrType$17, tag: ""}, {prop: "br", name: "br", exported: false, typ: ptrType$68, tag: ""}, {prop: "bw", name: "bw", exported: false, typ: ptrType$10, tag: ""}, {prop: "nwrite", name: "nwrite", exported: false, typ: $Int64, tag: ""}, {prop: "reqch", name: "reqch", exported: false, typ: chanType$16, tag: ""}, {prop: "writech", name: "writech", exported: false, typ: chanType$17, tag: ""}, {prop: "closech", name: "closech", exported: false, typ: chanType$2, tag: ""}, {prop: "isProxy", name: "isProxy", exported: false, typ: $Bool, tag: ""}, {prop: "sawEOF", name: "sawEOF", exported: false, typ: $Bool, tag: ""}, {prop: "readLimit", name: "readLimit", exported: false, typ: $Int64, tag: ""}, {prop: "writeErrCh", name: "writeErrCh", exported: false, typ: chanType, tag: ""}, {prop: "writeLoopDone", name: "writeLoopDone", exported: false, typ: chanType$2, tag: ""}, {prop: "idleAt", name: "idleAt", exported: false, typ: time.Time, tag: ""}, {prop: "idleTimer", name: "idleTimer", exported: false, typ: ptrType$53, tag: ""}, {prop: "mu", name: "mu", exported: false, typ: sync.Mutex, tag: ""}, {prop: "numExpectedResponses", name: "numExpectedResponses", exported: false, typ: $Int, tag: ""}, {prop: "closed", name: "closed", exported: false, typ: $error, tag: ""}, {prop: "canceledErr", name: "canceledErr", exported: false, typ: $error, tag: ""}, {prop: "broken", name: "broken", exported: false, typ: $Bool, tag: ""}, {prop: "reused", name: "reused", exported: false, typ: $Bool, tag: ""}, {prop: "mutateHeaderFunc", name: "mutateHeaderFunc", exported: false, typ: funcType$31, tag: ""}]);
nothingWrittenError.init("net/http", [{prop: "error", name: "", exported: false, typ: $error, tag: ""}]);
responseAndError.init("net/http", [{prop: "res", name: "res", exported: false, typ: ptrType$16, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}]);
requestAndChan.init("net/http", [{prop: "req", name: "req", exported: false, typ: ptrType$7, tag: ""}, {prop: "ch", name: "ch", exported: false, typ: chanType$18, tag: ""}, {prop: "addedGzip", name: "addedGzip", exported: false, typ: $Bool, tag: ""}, {prop: "continueCh", name: "continueCh", exported: false, typ: chanType$19, tag: ""}, {prop: "callerGone", name: "callerGone", exported: false, typ: chanType$3, tag: ""}]);
writeRequest.init("net/http", [{prop: "req", name: "req", exported: false, typ: ptrType$132, tag: ""}, {prop: "ch", name: "ch", exported: false, typ: chanType$20, tag: ""}, {prop: "continueCh", name: "continueCh", exported: false, typ: chanType$3, tag: ""}]);
httpError.init("net/http", [{prop: "err", name: "err", exported: false, typ: $String, tag: ""}, {prop: "timeout", name: "timeout", exported: false, typ: $Bool, tag: ""}]);
bodyEOFSignal.init("net/http", [{prop: "body", name: "body", exported: false, typ: io.ReadCloser, tag: ""}, {prop: "mu", name: "mu", exported: false, typ: sync.Mutex, tag: ""}, {prop: "closed", name: "closed", exported: false, typ: $Bool, tag: ""}, {prop: "rerr", name: "rerr", exported: false, typ: $error, tag: ""}, {prop: "fn", name: "fn", exported: false, typ: funcType$32, tag: ""}, {prop: "earlyCloseFn", name: "earlyCloseFn", exported: false, typ: funcType$33, tag: ""}]);
gzipReader.init("net/http", [{prop: "body", name: "body", exported: false, typ: ptrType$100, tag: ""}, {prop: "zr", name: "zr", exported: false, typ: ptrType$71, tag: ""}, {prop: "zerr", name: "zerr", exported: false, typ: $error, tag: ""}]);
tlsHandshakeTimeoutError.init("", []);
fakeLocker.init("", []);
connLRU.init("net/http", [{prop: "ll", name: "ll", exported: false, typ: ptrType$12, tag: ""}, {prop: "m", name: "m", exported: false, typ: mapType$22, tag: ""}]);
canceler.init([{prop: "CancelRequest", name: "CancelRequest", pkg: "", typ: $funcType([ptrType$7], [], false)}]);
I.init([{prop: "getDoneChan", name: "getDoneChan", pkg: "net/http", typ: $funcType([], [chanType$3], false)}]);
I$1.init([{prop: "doKeepAlives", name: "doKeepAlives", pkg: "net/http", typ: $funcType([], [$Bool], false)}]);
requestTooLarger.init([{prop: "requestTooLarge", name: "requestTooLarge", pkg: "net/http", typ: $funcType([], [], false)}]);
dialRes.init("net/http", [{prop: "pc", name: "pc", exported: false, typ: ptrType$98, tag: ""}, {prop: "err", name: "err", exported: false, typ: $error, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = bytes.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = gzip.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = list.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = context.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = rand.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = tls.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = base64.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = binary.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = errors.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = fmt.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = js.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = io.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = ioutil.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = log.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = math.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = mime.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = multipart.$init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = net.$init(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = httptrace.$init(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = internal.$init(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = textproto.$init(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = url.$init(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = os.$init(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = path.$init(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = filepath.$init(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = reflect.$init(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = runtime.$init(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sort.$init(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strconv.$init(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strings.$init(); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = sync.$init(); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = atomic.$init(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = time.$init(); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = utf8.$init(); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = hpack.$init(); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = idna.$init(); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = httplex.$init(); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = norm.$init(); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = width.$init(); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
http2VerboseLogs = false;
http2logFrameWrites = false;
http2logFrameReads = false;
http2inTests = false;
http2testHookOnConn = $throwNilPointerError;
http2testHookGetServerConn = $throwNilPointerError;
http2testHookOnPanicMu = ptrType.nil;
http2testHookOnPanic = $throwNilPointerError;
http2testh1ServerShutdownChan = $throwNilPointerError;
textprotoReaderPool = new sync.Pool.ptr(0, 0, sliceType.nil, $throwNilPointerError);
bufioReaderPool = new sync.Pool.ptr(0, 0, sliceType.nil, $throwNilPointerError);
bufioWriter2kPool = new sync.Pool.ptr(0, 0, sliceType.nil, $throwNilPointerError);
bufioWriter4kPool = new sync.Pool.ptr(0, 0, sliceType.nil, $throwNilPointerError);
statusMu = new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0);
defaultServeMux = new ServeMux.ptr(new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0), false, false);
testHookServerServe = $throwNilPointerError;
uniqNameMu = new sync.Mutex.ptr(0, 0);
zeroDialer = new net.Dialer.ptr(new time.Duration(0, 0), new time.Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil), $ifaceNil, false, new time.Duration(0, 0), new time.Duration(0, 0), ptrType$2.nil, $chanNil);
$pkg.DefaultTransport = (function() {
var $ptr, x;
if (!($global.fetch === undefined) && !($global.ReadableStream === undefined)) {
return new fetchTransport.ptr();
} else if (!($global.XMLHttpRequest === undefined)) {
return new XHRTransport.ptr(false);
} else {
return (x = new noTransport.ptr(), new x.constructor.elem(x));
}
})();
$pkg.DefaultClient = new Client.ptr($ifaceNil, $throwNilPointerError, $ifaceNil, new time.Duration(0, 0));
$pkg.ErrUseLastResponse = errors.New("net/http: use last response");
cookieNameSanitizer = strings.NewReplacer(new sliceType$1(["\n", "-", "\r", "-"]));
errSeeker = errors.New("seeker can't seek");
errNoOverlap = errors.New("invalid range: failed to overlap");
unixEpochTime = $clone(time.Unix(new $Int64(0, 0), new $Int64(0, 0)), time.Time);
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" }]);
http2errMixPseudoHeaderTypes = errors.New("mix of request and response pseudo headers");
http2errPseudoAfterRegular = errors.New("pseudo header field after regular");
http2errReadEmpty = errors.New("read from empty fixedBuffer");
http2errWriteFull = errors.New("write on full fixedBuffer");
http2padZeros = $makeSlice(sliceType$2, 255);
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" }]);
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" }]) }]);
http2fhBytes = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
var $ptr, buf, buf$24ptr;
buf = $makeSlice(sliceType$2, 9);
return (buf$24ptr || (buf$24ptr = new ptrType$4(function() { return buf; }, function($v) { buf = $subslice(new sliceType$2($v.$array), $v.$offset, $v.$offset + $v.$length); })));
}));
http2ErrFrameTooLarge = errors.New("http2: frame too large");
http2errStreamID = errors.New("invalid stream ID");
http2errDepStreamID = errors.New("invalid dependent stream ID");
http2errPadLength = errors.New("pad length too large");
http2DebugGoroutines = os.Getenv("DEBUG_HTTP2_GOROUTINES") === "1";
http2goroutineSpace = (new sliceType$2($stringToBytes("goroutine ")));
http2littleBuf = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
var $ptr, buf, buf$24ptr;
buf = $makeSlice(sliceType$2, 64);
return (buf$24ptr || (buf$24ptr = new ptrType$4(function() { return buf; }, function($v) { buf = $subslice(new sliceType$2($v.$array), $v.$offset, $v.$offset + $v.$length); })));
}));
http2commonLowerHeader = $makeMap($String.keyFor, []);
http2commonCanonHeader = $makeMap($String.keyFor, []);
http2clientPreface = (new sliceType$2($stringToBytes("PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n")));
http2stateName = $toNativeArray($kindString, ["Idle", "Open", "HalfClosedLocal", "HalfClosedRemote", "Closed"]);
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 }]);
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" }]);
http2errInvalidHeaderFieldName = errors.New("http2: invalid header field name");
http2errInvalidHeaderFieldValue = errors.New("http2: invalid header field value");
http2httpCodeStringCommon = $makeMap($Int.keyFor, []);
http2bufWriterPool = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
var $ptr;
return bufio.NewWriterSize($ifaceNil, 4096);
}));
http2errTimeout = new http2httpError.ptr("http2: timeout awaiting response headers", true);
http2sorterPool = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
var $ptr;
return new http2sorter.ptr(sliceType$1.nil);
}));
http2errClosedPipeWrite = errors.New("write on closed buffer");
http2errClientDisconnected = errors.New("client disconnected");
http2errClosedBody = errors.New("body closed by handler");
http2errHandlerComplete = errors.New("http2: request body closed due to handler exiting");
http2errStreamClosed = errors.New("http2: stream closed");
http2responseWriterStatePool = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
var $ptr, rws, x;
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, new $Int64(0, 0), new $Int64(0, 0), new sync.Mutex.ptr(0, 0), $chanNil);
rws.bw = bufio.NewWriterSize((x = new http2chunkWriter.ptr(rws), new x.constructor.elem(x)), 4096);
return rws;
}));
http2errChanPool = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
var $ptr;
return new chanType(new $Chan($error, 1));
}));
http2writeDataPool = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
var $ptr;
return new http2writeData.ptr(0, sliceType$2.nil, false);
}));
http2errHandlerPanicked = errors.New("http2: handler panicked");
http2reqBodyCache = new $Chan(sliceType$2, 8);
http2ErrRecursivePush = errors.New("http2: recursive push not allowed");
http2ErrPushLimitReached = errors.New("http2: push would exceed peer's SETTINGS_MAX_CONCURRENT_STREAMS");
http2connHeaders = new sliceType$1(["Connection", "Keep-Alive", "Proxy-Connection", "Transfer-Encoding", "Upgrade"]);
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 }]);
http2errTransportVersion = errors.New("http2: ConfigureTransport is only supported starting at Go 1.6");
http2ErrNoCachedConn = errors.New("http2: no cached connection was available");
http2errClientConnClosed = errors.New("http2: client conn is closed");
http2errClientConnUnusable = errors.New("http2: client conn not usable");
http2errClientConnGotGoAway = errors.New("http2: Transport received Server's graceful shutdown GOAWAY");
http2errClientConnGotGoAwayAfterSomeReqBody = errors.New("http2: Transport received Server's graceful shutdown GOAWAY; some request body already written");
http2errRequestCanceled = errors.New("net/http: request canceled");
http2errStopReqBodyWrite = errors.New("http2: aborting request body write");
http2errStopReqBodyWriteAndCancel = errors.New("http2: canceling request");
http2errClosedResponseBody = errors.New("http2: response body closed");
http2errInvalidTrailers = errors.New("http2: invalid trailers");
http2errResponseHeaderListSize = errors.New("http2: response header list larger than advertised limit");
http2errPseudoTrailers = errors.New("http2: invalid pseudo header in trailers");
http2noBody = ioutil.NopCloser(bytes.NewReader(sliceType$2.nil));
headerNewlineToSpace = strings.NewReplacer(new sliceType$1(["\n", " ", "\r", " "]));
headerSorterPool = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
var $ptr;
return new headerSorter.ptr(sliceType$3.nil);
}));
aLongTimeAgo = $clone(time.Unix(new $Int64(0, 1), new $Int64(0, 0)), time.Time);
$pkg.NoBody = new noBody.ptr();
$pkg.ErrMissingFile = errors.New("http: no such file");
$pkg.ErrNotSupported = new ProtocolError.ptr("feature not supported");
$pkg.ErrUnexpectedTrailer = new ProtocolError.ptr("trailer header without chunked transfer encoding");
$pkg.ErrMissingBoundary = new ProtocolError.ptr("no multipart boundary param in Content-Type");
$pkg.ErrNotMultipart = new ProtocolError.ptr("request Content-Type isn't multipart/form-data");
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 }]);
$pkg.ErrNoCookie = errors.New("http: named cookie not present");
multipartByReader = new multipart.Form.ptr({}, {});
errMissingHost = errors.New("http: Request.Write on Request with no Host or URL set");
respExcludeHeader = $makeMap($String.keyFor, [{ k: "Content-Length", v: true }, { k: "Transfer-Encoding", v: true }, { k: "Trailer", v: true }]);
$pkg.ErrNoLocation = errors.New("http: no Location header in response");
$pkg.ErrBodyNotAllowed = errors.New("http: request method or response status code does not allow body");
$pkg.ErrHijacked = errors.New("http: connection has been hijacked");
$pkg.ErrContentLength = errors.New("http: wrote more than the declared Content-Length");
$pkg.ErrWriteAfterFlush = errors.New("unused");
$pkg.ServerContextKey = new contextKey.ptr("http-server");
$pkg.LocalAddrContextKey = new contextKey.ptr("local-addr");
crlf = (new sliceType$2($stringToBytes("\r\n")));
colonSpace = (new sliceType$2($stringToBytes(": ")));
copyBufPool = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
var $ptr, b, b$24ptr;
b = $makeSlice(sliceType$2, 32768);
return (b$24ptr || (b$24ptr = new ptrType$4(function() { return b; }, function($v) { b = $subslice(new sliceType$2($v.$array), $v.$offset, $v.$offset + $v.$length); })));
}));
errTooLarge = errors.New("http: request too large");
extraHeaderKeys = new sliceType$4([(new sliceType$2($stringToBytes("Content-Type"))), (new sliceType$2($stringToBytes("Connection"))), (new sliceType$2($stringToBytes("Transfer-Encoding")))]);
headerContentLength = (new sliceType$2($stringToBytes("Content-Length: ")));
headerDate = (new sliceType$2($stringToBytes("Date: ")));
statusLines = {};
$pkg.ErrAbortHandler = errors.New("net/http: abort Handler");
htmlReplacer = strings.NewReplacer(new sliceType$1(["&", "&amp;", "<", "&lt;", ">", "&gt;", "\"", "&#34;", "'", "&#39;"]));
$pkg.DefaultServeMux = defaultServeMux;
shutdownPollInterval = new time.Duration(0, 500000000);
connStateInterface = $toNativeArray($kindInterface, [new ConnState(0), new ConnState(1), new ConnState(2), new ConnState(3), new ConnState(4)]);
stateName = $makeMap(ConnState.keyFor, [{ k: 0, v: "new" }, { k: 1, v: "active" }, { k: 2, v: "idle" }, { k: 3, v: "hijacked" }, { k: 4, v: "closed" }]);
$pkg.ErrServerClosed = errors.New("http: Server closed");
$pkg.ErrHandlerTimeout = errors.New("http: Handler timeout");
uniqNameNext = {};
sniffSignatures = new sliceType$5([(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$2($stringToBytes("\xFF\xFF\xFF\xFF\xFF"))), (new sliceType$2($stringToBytes("<?xml"))), true, "text/xml; charset=utf-8"), new exactSig.ptr((new sliceType$2($stringToBytes("%PDF-"))), "application/pdf"), new exactSig.ptr((new sliceType$2($stringToBytes("%!PS-Adobe-"))), "application/postscript"), new maskedSig.ptr((new sliceType$2($stringToBytes("\xFF\xFF\x00\x00"))), (new sliceType$2($stringToBytes("\xFE\xFF\x00\x00"))), false, "text/plain; charset=utf-16be"), new maskedSig.ptr((new sliceType$2($stringToBytes("\xFF\xFF\x00\x00"))), (new sliceType$2($stringToBytes("\xFF\xFE\x00\x00"))), false, "text/plain; charset=utf-16le"), new maskedSig.ptr((new sliceType$2($stringToBytes("\xFF\xFF\xFF\x00"))), (new sliceType$2($stringToBytes("\xEF\xBB\xBF\x00"))), false, "text/plain; charset=utf-8"), new exactSig.ptr((new sliceType$2($stringToBytes("GIF87a"))), "image/gif"), new exactSig.ptr((new sliceType$2($stringToBytes("GIF89a"))), "image/gif"), new exactSig.ptr((new sliceType$2($stringToBytes("\x89PNG\r\n\x1A\n"))), "image/png"), new exactSig.ptr((new sliceType$2($stringToBytes("\xFF\xD8\xFF"))), "image/jpeg"), new exactSig.ptr((new sliceType$2($stringToBytes("BM"))), "image/bmp"), new maskedSig.ptr((new sliceType$2($stringToBytes("\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF"))), (new sliceType$2($stringToBytes("RIFF\x00\x00\x00\x00WEBPVP"))), false, "image/webp"), new exactSig.ptr((new sliceType$2($stringToBytes("\x00\x00\x01\x00"))), "image/vnd.microsoft.icon"), new maskedSig.ptr((new sliceType$2($stringToBytes("\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF"))), (new sliceType$2($stringToBytes("RIFF\x00\x00\x00\x00WAVE"))), false, "audio/wave"), new maskedSig.ptr((new sliceType$2($stringToBytes("\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF"))), (new sliceType$2($stringToBytes("FORM\x00\x00\x00\x00AIFF"))), false, "audio/aiff"), new maskedSig.ptr((new sliceType$2($stringToBytes("\xFF\xFF\xFF\xFF"))), (new sliceType$2($stringToBytes(".snd"))), false, "audio/basic"), new maskedSig.ptr((new sliceType$2($stringToBytes("OggS\x00"))), (new sliceType$2($stringToBytes("OggS\x00"))), false, "application/ogg"), new maskedSig.ptr((new sliceType$2($stringToBytes("\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"))), (new sliceType$2($stringToBytes("MThd\x00\x00\x00\x06"))), false, "audio/midi"), new maskedSig.ptr((new sliceType$2($stringToBytes("\xFF\xFF\xFF"))), (new sliceType$2($stringToBytes("ID3"))), false, "audio/mpeg"), new maskedSig.ptr((new sliceType$2($stringToBytes("\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF"))), (new sliceType$2($stringToBytes("RIFF\x00\x00\x00\x00AVI "))), false, "video/avi"), new exactSig.ptr((new sliceType$2($stringToBytes("\x1AE\xDF\xA3"))), "video/webm"), new exactSig.ptr((new sliceType$2($stringToBytes("Rar \x1A\x07\x00"))), "application/x-rar-compressed"), new exactSig.ptr((new sliceType$2($stringToBytes("PK\x03\x04"))), "application/zip"), new exactSig.ptr((new sliceType$2($stringToBytes("\x1F\x8B\b"))), "application/x-gzip"), (x = new mp4Sig.ptr(), new x.constructor.elem(x)), (x$1 = new textSig.ptr(), new x$1.constructor.elem(x$1))]);
mp4ftype = (new sliceType$2($stringToBytes("ftyp")));
mp4 = (new sliceType$2($stringToBytes("mp4")));
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" }]);
suppressedHeaders304 = new sliceType$1(["Content-Type", "Content-Length", "Transfer-Encoding"]);
suppressedHeadersNoBody = new sliceType$1(["Content-Length", "Transfer-Encoding"]);
$pkg.ErrBodyReadAfterClose = errors.New("http: invalid Read on closed Body");
singleCRLF = (new sliceType$2($stringToBytes("\r\n")));
doubleCRLF = (new sliceType$2($stringToBytes("\r\n\r\n")));
errTrailerEOF = errors.New("http: unexpected EOF reading trailer");
$pkg.ErrSkipAltProtocol = errors.New("net/http: skip alternate protocol");
errKeepAlivesDisabled = errors.New("http: putIdleConn: keep alives disabled");
errConnBroken = errors.New("http: putIdleConn: connection is in bad state");
errWantIdle = errors.New("http: putIdleConn: CloseIdleConnections was called");
errTooManyIdle = errors.New("http: putIdleConn: too many idle connections");
errTooManyIdleHost = errors.New("http: putIdleConn: too many idle connections for host");
errCloseIdleConns = errors.New("http: CloseIdleConnections called");
errReadLoopExiting = errors.New("http: persistConn.readLoop exiting");
errServerClosedIdle = errors.New("http: server closed idle connection");
errIdleConnTimeout = errors.New("http: idle connection timeout");
errNotCachingH2Conn = errors.New("http: not caching alternate protocol's connections");
errTimeout = new httpError.ptr("net/http: timeout awaiting response headers", true);
errRequestCanceled = errors.New("net/http: request canceled");
errRequestCanceledConn = errors.New("net/http: request canceled while waiting for connection");
testHookEnterRoundTrip = nop;
testHookWaitResLoop = nop;
testHookRoundTripRetried = nop;
testHookPrePendingDial = nop;
testHookPostPendingDial = nop;
testHookMu = (x$2 = new fakeLocker.ptr(), new x$2.constructor.elem(x$2));
testHookReadLoopBeforeNextRead = nop;
portMap = $makeMap($String.keyFor, [{ k: "http", v: "80" }, { k: "https", v: "443" }]);
errReadOnClosedResBody = errors.New("http: read on closed response body");
init();
init$1();
init$2();
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$packages["github.com/StackExchange/dnscontrol/docs/flattener"] = (function() {
var $pkg = {}, $init, json, fmt, spflib, jquery, http, strings, gResolver, gResp, ptrType, sliceType, structType, sliceType$1, funcType, sliceType$2, funcType$1, jq, parsed, domain, main, updateDisabledChecks, renderResults, buildHTML, genRoot, genPart;
json = $packages["encoding/json"];
fmt = $packages["fmt"];
spflib = $packages["github.com/StackExchange/dnscontrol/pkg/spflib"];
jquery = $packages["github.com/gopherjs/jquery"];
http = $packages["net/http"];
strings = $packages["strings"];
gResolver = $pkg.gResolver = $newType(0, $kindStruct, "main.gResolver", true, "github.com/StackExchange/dnscontrol/docs/flattener", false, function() {
this.$val = this;
if (arguments.length === 0) {
return;
}
});
gResp = $pkg.gResp = $newType(0, $kindStruct, "main.gResp", true, "github.com/StackExchange/dnscontrol/docs/flattener", false, function(Status_, Answer_) {
this.$val = this;
if (arguments.length === 0) {
this.Status = 0;
this.Answer = sliceType$1.nil;
return;
}
this.Status = Status_;
this.Answer = Answer_;
});
ptrType = $ptrType(spflib.SPFRecord);
sliceType = $sliceType($String);
structType = $structType("", [{prop: "Data", name: "Data", exported: true, typ: $String, tag: "json:\"data\""}]);
sliceType$1 = $sliceType(structType);
funcType = $funcType([], [], false);
sliceType$2 = $sliceType($emptyInterface);
funcType$1 = $funcType([jquery.Event], [], false);
gResolver.ptr.prototype.GetTxt = function(fqdn) {
var $ptr, _i, _r, _r$1, _r$2, _ref, _tuple, a, dat, dec, err, fqdn, g, list, resp, $s, $deferred, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _tuple = $f._tuple; a = $f.a; dat = $f.dat; dec = $f.dec; err = $f.err; fqdn = $f.fqdn; g = $f.g; list = $f.list; resp = $f.resp; $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);
g = this;
_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; }
_tuple = _r;
resp = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [sliceType.nil, err];
}
$deferred.push([$methodVal(resp.Body, "Close"), []]);
dec = json.NewDecoder(resp.Body);
dat = new gResp.ptr(0, sliceType$1.nil);
_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; }
err = _r$1;
if (!($interfaceIsEqual(err, $ifaceNil))) {
$s = -1; return [sliceType.nil, err];
}
list = new sliceType([]);
_ref = dat.Answer;
_i = 0;
/* while (true) { */ case 3:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; }
a = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), structType);
_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; }
list = $append(list, _r$2);
_i++;
/* } */ $s = 3; continue; case 4:
$s = -1; return [list, $ifaceNil];
/* */ } return; } } catch(err) { $err = err; $s = -1; return [sliceType.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: gResolver.ptr.prototype.GetTxt }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $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.list = list; $f.resp = resp; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
};
gResolver.prototype.GetTxt = function(fqdn) { return this.$val.GetTxt(fqdn); };
main = function() {
var $ptr, _r, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = jq(new sliceType$2([new funcType((function $b() {
var $ptr, _r, _r$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r = jq(new sliceType$2([new $String("#lookup_btn")])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r$1 = $clone(_r, jquery.JQuery).On(new sliceType$2([new $String("click"), new funcType$1((function(e) {
var $ptr, e;
$go((function $b() {
var $ptr, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, err, rec, x, x$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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; err = $f.err; rec = $f.rec; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
_r$1 = jq(new sliceType$2([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; }
_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; }
domain = _r$2;
_r$3 = spflib.Lookup(domain, (x = new gResolver.ptr(), new x.constructor.elem(x))); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_tuple = _r$3;
rec = _tuple[0];
err = _tuple[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$panic(err);
}
_r$4 = spflib.Parse(rec, (x$1 = new gResolver.ptr(), new x$1.constructor.elem(x$1))); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_tuple$1 = _r$4;
parsed = _tuple$1[0];
err = _tuple$1[1];
if (!($interfaceIsEqual(err, $ifaceNil))) {
$panic(err);
}
_r$5 = jq(new sliceType$2([new $String("#results")])); /* */ $s = 5; case 5: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
_r$6 = buildHTML(parsed, domain); /* */ $s = 6; case 6: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_r$7 = $clone(_r$5, jquery.JQuery).SetHtml(new $String(_r$6)); /* */ $s = 7; case 7: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_r$7;
_r$8 = jq(new sliceType$2([new $String(".cb")])); /* */ $s = 8; case 8: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_r$9 = $clone(_r$8, jquery.JQuery).On(new sliceType$2([new $String("change"), new funcType$1((function $b(e$1) {
var $ptr, e$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e$1 = $f.e$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
$r = updateDisabledChecks(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = renderResults(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.e$1 = e$1; $f.$s = $s; $f.$r = $r; return $f;
}))])); /* */ $s = 9; case 9: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
_r$9;
$r = updateDisabledChecks(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = renderResults(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $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.err = err; $f.rec = rec; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
}), []);
}))])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.$s = $s; $f.$r = $r; return $f;
}))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: main }; } $f.$ptr = $ptr; $f._r = _r; $f.$s = $s; $f.$r = $r; return $f;
};
updateDisabledChecks = function() {
var $ptr, _r, _r$1, _r$2, _r$3, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = jq(new sliceType$2([new $String("input:checkbox")])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r$1 = $clone(_r, jquery.JQuery).Each((function $b(i, el) {
var $ptr, _r$1, _r$2, _r$3, _r$4, _r$5, el, i, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r$1 = jq(new sliceType$2([el])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_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; }
_r$3 = fmt.Println(new sliceType$2([_r$2])); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$3;
_r$4 = jq(new sliceType$2([el])); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
_r$5 = $clone(_r$4, jquery.JQuery).SetProp(new sliceType$2([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; }
_r$5;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $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;
})); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
_r$2 = jq(new sliceType$2([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; }
_r$3 = $clone(_r$2, jquery.JQuery).Each((function $b(i, el) {
var $ptr, _r$10, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, el, i, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r$3 = jq(new sliceType$2([el])); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_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; }
_r$5 = fmt.Println(new sliceType$2([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; }
_r$5;
_r$6 = jq(new sliceType$2([el])); /* */ $s = 4; case 4: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
_r$7 = $clone(_r$6, jquery.JQuery).Next(new sliceType$2([])); /* */ $s = 5; case 5: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
_r$8 = $clone(_r$7, jquery.JQuery).Next(new sliceType$2([])); /* */ $s = 6; case 6: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
_r$9 = $clone(_r$8, jquery.JQuery).Find(new sliceType$2([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; }
_r$10 = $clone(_r$9, jquery.JQuery).Each((function $b(i$1, el$1) {
var $ptr, _arg, _r$10, _r$11, _r$12, _r$13, _r$14, el$1, i$1, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r$10 = jq(new sliceType$2([el$1])); /* */ $s = 1; case 1: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
_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; }
_arg = new $String(_r$11);
_r$12 = fmt.Println(new sliceType$2([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; }
_r$12;
_r$13 = jq(new sliceType$2([el$1])); /* */ $s = 4; case 4: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
_r$14 = $clone(_r$13, jquery.JQuery).SetProp(new sliceType$2([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; }
_r$14;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $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;
})); /* */ $s = 8; case 8: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
_r$10;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $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;
})); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
_r$3;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: updateDisabledChecks }; } $f.$ptr = $ptr; $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;
};
renderResults = function() {
var $ptr, _r, _r$1, _r$2, _r$3, addFlattened, content, filters, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
content = [content];
filters = [filters];
content[0] = "";
addFlattened = (function(content, filters) { return function $b(mode, filter) {
var $ptr, _entry, _i, _keys, _r, _r$1, _r$2, _r$3, _ref, filter, flat, k, lookups, mode, split, v, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
flat = parsed.Flatten(filter);
lookups = 0;
if (!(filter === "*")) {
lookups = parsed.Lookups() - strings.Split(filter, ",").$length >> 0;
}
_r = fmt.Sprintf("\n<h3> %s flattened (length %d, %d lookups)</h3><code>%s</code>\t\n", new sliceType$2([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; }
content[0] = content[0] + (_r);
_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; }
split = _r$1;
/* */ if ($keys(split).length > 1) { $s = 3; continue; }
/* */ $s = 4; continue;
/* if ($keys(split).length > 1) { */ case 3:
lookups = lookups + (($keys(split).length - 1 >> 0)) >> 0;
_r$2 = fmt.Sprintf("<h3>%s flattened split (%d lookups)</h3>", new sliceType$2([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; }
content[0] = content[0] + (_r$2);
_ref = split;
_i = 0;
_keys = $keys(_ref);
/* while (true) { */ case 6:
/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 7; continue; }
_entry = _ref[_keys[_i]];
if (_entry === undefined) {
_i++;
/* continue; */ $s = 6; continue;
}
k = _entry.k;
v = _entry.v;
_r$3 = fmt.Sprintf("<h4>%s</h4><code>%s</code>", new sliceType$2([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; }
content[0] = content[0] + (_r$3);
_i++;
/* } */ $s = 6; continue; case 7:
/* } */ case 4:
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $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;
}; })(content, filters);
$r = addFlattened("Fully", "*"); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
filters[0] = new sliceType([]);
_r = jq(new sliceType$2([new $String("input:checked")])); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
_r$1 = $clone(_r, jquery.JQuery).Each((function(content, filters) { return function $b(i, el) {
var $ptr, _r$1, _r$2, el, i, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r$1 = jq(new sliceType$2([el])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_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; }
filters[0] = $append(filters[0], _r$2);
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.el = el; $f.i = i; $f.$s = $s; $f.$r = $r; return $f;
}; })(content, filters)); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
_r$1;
/* */ if (filters[0].$length > 0) { $s = 4; continue; }
/* */ $s = 5; continue;
/* if (filters[0].$length > 0) { */ case 4:
$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; }
/* } */ case 5:
_r$2 = jq(new sliceType$2([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; }
_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; }
_r$3;
$s = -1; return;
/* */ } return; } if ($f === undefined) { $f = { $blk: renderResults }; } $f.$ptr = $ptr; $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;
};
buildHTML = function(rec, domain$1) {
var $ptr, _r, _r$1, domain$1, h, rec, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
h = "<h1>" + domain$1 + "</h1>";
_r = fmt.Sprintf("<h2>%d lookups</h2>", new sliceType$2([new $Int(rec.Lookups())])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
h = h + (_r);
_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; }
$s = -1; return h + _r$1;
/* */ } return; } if ($f === undefined) { $f = { $blk: buildHTML }; } $f.$ptr = $ptr; $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;
};
genRoot = function(rec) {
var $ptr, _i, _r, _r$1, _ref, h, p, rec, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
_r = fmt.Sprintf(" \n<ul>\n\t<li class='root'>%s</li>\n\t", new sliceType$2([new $String(rec.TXT())])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
h = _r;
_ref = rec.Parts;
_i = 0;
/* while (true) { */ case 2:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_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; }
h = h + (_r$1);
_i++;
/* } */ $s = 2; continue; case 3:
h = h + ("</ul>");
$s = -1; return h;
/* */ } return; } if ($f === undefined) { $f = { $blk: genRoot }; } $f.$ptr = $ptr; $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;
};
genPart = function(rec) {
var $ptr, _i, _r, _r$1, _r$2, _r$3, _ref, h, p, rec, $s, $r;
/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _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:
/* */ if (!rec.IsLookup) { $s = 1; continue; }
/* */ $s = 2; continue;
/* if (!rec.IsLookup) { */ case 1:
_r = fmt.Sprintf("<li>%s</li>", new sliceType$2([new $String(rec.Text)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
$s = -1; return _r;
/* } */ case 2:
_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$2([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; }
h = _r$1;
_r$2 = fmt.Sprintf("<ul>", new sliceType$2([])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
h = h + (_r$2);
_ref = rec.IncludeRecord.Parts;
_i = 0;
/* while (true) { */ case 6:
/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 7; continue; }
p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
_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; }
h = h + (_r$3);
_i++;
/* } */ $s = 6; continue; case 7:
h = h + ("</ul>");
h = h + ("</li>");
$s = -1; return h;
/* */ } return; } if ($f === undefined) { $f = { $blk: genPart }; } $f.$ptr = $ptr; $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;
};
gResolver.methods = [{prop: "GetTxt", name: "GetTxt", pkg: "", typ: $funcType([$String], [sliceType, $error], false)}];
gResolver.init("", []);
gResp.init("", [{prop: "Status", name: "Status", exported: true, typ: $Int, tag: ""}, {prop: "Answer", name: "Answer", exported: true, typ: sliceType$1, tag: ""}]);
$init = function() {
$pkg.$init = function() {};
/* */ 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:
$r = json.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = spflib.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = jquery.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = http.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$r = strings.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
parsed = ptrType.nil;
domain = "";
jq = jquery.NewJQuery;
/* */ if ($pkg === $mainPkg) { $s = 7; continue; }
/* */ $s = 8; continue;
/* if ($pkg === $mainPkg) { */ case 7:
$r = main(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
$mainFinished = true;
/* } */ case 8:
/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
};
$pkg.$init = $init;
return $pkg;
})();
$synthesizeMethods();
var $mainPkg = $packages["github.com/StackExchange/dnscontrol/docs/flattener"];
$packages["runtime"].$init();
$go($mainPkg.$init, []);
$flushConsole();
}).call(this);
//# sourceMappingURL=flattener.js.map